emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/d-mode f69e94e 207/346: Change test suite enumeration and


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode f69e94e 207/346: Change test suite enumeration and activation
Date: Sun, 29 Aug 2021 11:00:32 -0400 (EDT)

branch: elpa/d-mode
commit f69e94e3cbf5143628cd9407c7d8fb0f9bd83e87
Author: Vladimir Panteleev <git@thecybershadow.net>
Commit: Vladimir Panteleev <git@thecybershadow.net>

    Change test suite enumeration and activation
    
    - Enumerate the tests/ directory (at compile-time) instead of
      redundantly declaring every test file as its own test
    
    - Move the expected-result condition to the test files themselves as a
      #min-version header
    
    Following this, adding/removing/changing tests should no longer
    require editing d-mode-test.el.
---
 d-mode-test.el           | 59 ++++++++++++++++++++++++------------------------
 tests/I0019.d            |  1 +
 tests/I0035.d            |  1 +
 tests/I0039.d            |  1 +
 tests/I0058.d            |  1 +
 tests/I0067.d            |  1 +
 tests/I0070.d            |  1 +
 tests/I0082.d            |  1 +
 tests/I0082.d.html       |  3 ++-
 tests/fonts_enums.d      |  1 +
 tests/fonts_enums.d.html |  3 ++-
 11 files changed, 42 insertions(+), 31 deletions(-)

diff --git a/d-mode-test.el b/d-mode-test.el
index 3e99efb..0616251 100644
--- a/d-mode-test.el
+++ b/d-mode-test.el
@@ -292,35 +292,36 @@ the reference file, raise an error."
                     "Got:     
\n--------------------\n%s\n--------------------\n")
             expected actual))))
 
-(defmacro d-test-deftest (name filename expected-result)
-  "Define a d-mode test using the given FILENAME.
-
-EXPECTED-RESULT should return t if the test
-is expected to succeed, and nil otherwise."
-  `(ert-deftest ,name ()
-     :expected-result (if ,expected-result :passed :failed)
-     (should (do-one-test ,filename))))
-
-;; Run the tests
-(d-test-deftest imenu "tests/imenu.d" t)
-(d-test-deftest fonts "tests/fonts.d" t)
-(d-test-deftest fonts_enums "tests/fonts_enums.d" (version< "26.2" 
emacs-version))
-(d-test-deftest i0019 "tests/I0019.d" (version< "26.2" emacs-version))
-(d-test-deftest i0021 "tests/I0021.d" t)
-(d-test-deftest i0026 "tests/I0026.d" t)
-(d-test-deftest i0030 "tests/I0030.d" t)
-(d-test-deftest i0035 "tests/I0035.d" (version< "24.4" emacs-version))
-(d-test-deftest i0039 "tests/I0039.d" (version< "24.4" emacs-version))
-(d-test-deftest i0049 "tests/I0049.d" t)
-(d-test-deftest i0054 "tests/I0054.d" t)
-(d-test-deftest i0058 "tests/I0058.d" (version< "24.4" emacs-version))
-(d-test-deftest i0064 "tests/I0064.d" t)
-(d-test-deftest i0067 "tests/I0067.d" (version< "24.4" emacs-version))
-(d-test-deftest i0069 "tests/I0069.txt" t)
-(d-test-deftest i0070 "tests/I0070.d" (version< "24.4" emacs-version))
-(d-test-deftest i0072 "tests/I0072.txt" t)
-(d-test-deftest i0082 "tests/I0082.d" (version< "24.4" emacs-version))
-(d-test-deftest i0090 "tests/I0090.d" t)
+(defun d-test-get-expected-result (filename)
+  (with-temp-buffer
+    (insert-file-contents filename)
+    (let* ((min-ver
+            (if (re-search-forward "^// #min-version: \\(.+\\)$" nil t)
+                (match-string 1)
+              "0")))
+      (version<= min-ver emacs-version))))
+
+(defmacro d-test-dir (dir)
+  "Register all test files from DIR with ert."
+  (apply #'nconc
+         '(progn)
+         (mapcar
+          (lambda (filename)
+            (let ((path (expand-file-name filename dir)))
+              (cond
+               ((string-match-p "\\`\\.\\.?\\'" filename)
+                nil)
+               ((string-match-p "\\.\\(d\\|txt\\)\\'" filename)
+                `((ert-deftest ,(intern (file-name-sans-extension filename)) ()
+                    :expected-result (if (d-test-get-expected-result ,path) 
:passed :failed)
+                    (should (do-one-test ,path)))))
+               ((string-match-p "\\.d\\.html\\'" filename)
+                nil)
+               (t
+                (message "Ignoring test file with unknown extension: %s" 
filename)
+                nil))))
+          (directory-files dir))))
+(d-test-dir "tests")
 
 ;;----------------------------------------------------------------------------
 
diff --git a/tests/I0019.d b/tests/I0019.d
index f16181c..d31f9db 100644
--- a/tests/I0019.d
+++ b/tests/I0019.d
@@ -1,3 +1,4 @@
+// #min-version: 26.2
 // #run: (d-test-indent)
 
 enum OtherValues2 : uint {
diff --git a/tests/I0035.d b/tests/I0035.d
index 1bf1aab..8a3dbc0 100644
--- a/tests/I0035.d
+++ b/tests/I0035.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (d-test-indent)
 
 static if (true)
diff --git a/tests/I0039.d b/tests/I0039.d
index 42c8949..a424f7d 100644
--- a/tests/I0039.d
+++ b/tests/I0039.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (d-test-indent)
 
 void foo()
diff --git a/tests/I0058.d b/tests/I0058.d
index 8ad6833..40cdf4e 100644
--- a/tests/I0058.d
+++ b/tests/I0058.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (d-test-indent)
 
 double foo(double b)
diff --git a/tests/I0067.d b/tests/I0067.d
index ad12f15..dc6ee06 100644
--- a/tests/I0067.d
+++ b/tests/I0067.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (d-test-indent)
 
 void foo(T)(T stuff)
diff --git a/tests/I0070.d b/tests/I0070.d
index e9bb6df..2f6e3af 100644
--- a/tests/I0070.d
+++ b/tests/I0070.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (progn (c-set-offset 'func-decl-cont #'d-lineup-arglists) 
(d-test-indent))
 
 auto foo(A, B, C)
diff --git a/tests/I0082.d b/tests/I0082.d
index 820a1d6..185d245 100644
--- a/tests/I0082.d
+++ b/tests/I0082.d
@@ -1,3 +1,4 @@
+// #min-version: 24.5
 // #run: (d-test-fontification)
 
 struct S
diff --git a/tests/I0082.d.html b/tests/I0082.d.html
index eb75859..01fa9bd 100644
--- a/tests/I0082.d.html
+++ b/tests/I0082.d.html
@@ -1,4 +1,5 @@
-<span class="comment-delimiter">// </span><span class="comment">#run: 
(d-test-fontification)
+<span class="comment-delimiter">// </span><span class="comment">#min-version: 
24.5
+</span><span class="comment-delimiter">// </span><span class="comment">#run: 
(d-test-fontification)
 </span>
 <span class="keyword">struct</span> <span class="type">S</span>
 {
diff --git a/tests/fonts_enums.d b/tests/fonts_enums.d
index 547bffc..7b5bce8 100644
--- a/tests/fonts_enums.d
+++ b/tests/fonts_enums.d
@@ -1,3 +1,4 @@
+// #min-version: 26.2
 // #run: (d-test-fontification)
 
 auto var = true;
diff --git a/tests/fonts_enums.d.html b/tests/fonts_enums.d.html
index 16bb4b9..3dad54f 100644
--- a/tests/fonts_enums.d.html
+++ b/tests/fonts_enums.d.html
@@ -1,4 +1,5 @@
-<span class="comment-delimiter">// </span><span class="comment">#run: 
(d-test-fontification)
+<span class="comment-delimiter">// </span><span class="comment">#min-version: 
26.2
+</span><span class="comment-delimiter">// </span><span class="comment">#run: 
(d-test-fontification)
 </span>
 <span class="keyword">auto</span> <span class="variable-name">var</span> = 
<span class="constant">true</span>;
 <span class="keyword">enum</span> <span class="variable-name">var</span> = 
<span class="constant">true</span>;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]