From 9d12986afb2468db552803ed708e7d28f84a9b6a Mon Sep 17 00:00:00 2001 From: brotzeit Date: Thu, 18 Aug 2022 15:00:28 +0200 Subject: fix quirks in rust-mode-tests.el --- rust-mode-tests.el | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/rust-mode-tests.el b/rust-mode-tests.el index 8e3ee45..07f5a46 100644 --- a/rust-mode-tests.el +++ b/rust-mode-tests.el @@ -9,14 +9,15 @@ (defconst rust-test-fill-column 32) (setq-default indent-tabs-mode nil) -(defmacro test-silence (messages &rest body) - `(cl-letf* (((symbol-function 'm) - (symbol-function #'message)) - ((symbol-function #'message) - (lambda (format-string &rest args) - (unless (member format-string ,messages) - (apply 'm format-string args))))) - ,@body)) +(defmacro rust-test-silence (messages &rest body) + `(let ((f (lambda (orig-fun format-string &rest args) + (unless (member format-string ,messages) + (apply orig-fun format-string args))))) + (unwind-protect + (progn + (advice-add 'message :around f) + ,@body) + (advice-remove 'message f)))) (defun rust-compare-code-after-manip (_original _point-pos _manip-func expected got) (equal expected got)) @@ -53,7 +54,7 @@ (should (rust-compare-code-after-manip original point-pos manip-func expected (buffer-string))))) -(defun test-fill-paragraph (unfilled expected &optional start-pos end-pos) +(defun rust-test-fill-paragraph (unfilled expected &optional start-pos end-pos) "We're going to run through many scenarios here--the point should be able to be anywhere from the start-pos (defaults to 1) through end-pos (defaults to the length of what was passed in) and (fill-paragraph) should return the same result. It should also work with fill-region from start-pos to end-pos. Also, the result should be the same regardless of whether the code is at the beginning or end of the file. (If you're not careful, that can make a difference.) So we test each position given above with the passed code at the beginning, the end, neither and both. So we do this a total of 1 + (end-pos - start-pos)*4 times. Oy." @@ -91,7 +92,7 @@ Also, the result should be the same regardless of whether the code is at the beg )) (ert-deftest fill-paragraph-top-level-multi-line-style-doc-comment-second-line () - (test-fill-paragraph + (rust-test-fill-paragraph "/** * This is a very very very very very very very long string */" @@ -102,7 +103,7 @@ Also, the result should be the same regardless of whether the code is at the beg (ert-deftest fill-paragraph-top-level-multi-line-style-doc-comment-first-line () - (test-fill-paragraph + (rust-test-fill-paragraph "/** This is a very very very very very very very long string */" "/** This is a very very very @@ -118,7 +119,7 @@ Also, the result should be the same regardless of whether the code is at the beg * * This is the second really really really really really really long paragraph */")) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/** * This is the first really @@ -128,7 +129,7 @@ Also, the result should be the same regardless of whether the code is at the beg * This is the second really really really really really really long paragraph */" 1 89) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/** * This is the first really really really really really really really long paragraph @@ -145,7 +146,7 @@ Also, the result should be the same regardless of whether the code is at the beg "/// This is the first really really really really really really really long paragraph /// /// This is the second really really really really really really long paragraph")) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/// This is the first really /// really really really really @@ -153,7 +154,7 @@ Also, the result should be the same regardless of whether the code is at the beg /// /// This is the second really really really really really really long paragraph" 1 86) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/// This is the first really really really really really really really long paragraph /// @@ -163,7 +164,7 @@ Also, the result should be the same regardless of whether the code is at the beg 87))) (ert-deftest fill-paragraph-multi-paragraph-single-line-style-indented () - (test-fill-paragraph + (rust-test-fill-paragraph " // This is the first really really really really really really really long paragraph // // This is the second really really really really really really long paragraph" @@ -175,7 +176,7 @@ Also, the result should be the same regardless of whether the code is at the beg // This is the second really really really really really really long paragraph" 1 89)) (ert-deftest fill-paragraph-multi-line-style-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/* This is a very very very very very very very very long string */" "/* This is a very very very very @@ -184,7 +185,7 @@ Also, the result should be the same regardless of whether the code is at the beg */")) (ert-deftest fill-paragraph-multi-line-style-inner-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/*! This is a very very very very very very very long string */" "/*! This is a very very very @@ -193,14 +194,14 @@ Also, the result should be the same regardless of whether the code is at the beg */")) (ert-deftest fill-paragraph-single-line-style-inner-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "//! This is a very very very very very very very long string" "//! This is a very very very //! very very very very long //! string")) (ert-deftest fill-paragraph-prefixless-multi-line-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/** This is my summary. Blah blah blah blah blah. Dilly dally dilly dally dilly dally doo. @@ -215,7 +216,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. */" 4 90)) (ert-deftest fill-paragraph-with-no-space-after-star-prefix () - (test-fill-paragraph + (rust-test-fill-paragraph "/** *This is a very very very very very very very long string */" @@ -225,7 +226,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. */")) (ert-deftest fill-paragraph-single-line-style-with-code-before () - (test-fill-paragraph + (rust-test-fill-paragraph "fn foo() { } /// This is my comment. This is more of my comment. This is even more." "fn foo() { } @@ -234,7 +235,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. /// even more." 14)) (ert-deftest fill-paragraph-single-line-style-with-code-after () - (test-fill-paragraph + (rust-test-fill-paragraph "/// This is my comment. This is more of my comment. This is even more. fn foo() { }" "/// This is my comment. This is @@ -243,7 +244,7 @@ fn foo() { }" fn foo() { }" 1 73)) (ert-deftest fill-paragraph-single-line-style-code-before-and-after () - (test-fill-paragraph + (rust-test-fill-paragraph "fn foo() { } /// This is my comment. This is more of my comment. This is even more. fn bar() { }" @@ -318,7 +319,7 @@ very very very long string deindented 1 (lambda () - (test-silence + (rust-test-silence '("%s %s" ; "Indenting..." progress-reporter-do-update "%sdone") ; "Indenting...done" progress-reporter-done (indent-region 1 (+ 1 (buffer-size))))) -- cgit v1.2.3