[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>;
- [nongnu] elpa/d-mode 382a677 195/346: Use c-major-mode-is, (continued)
- [nongnu] elpa/d-mode 382a677 195/346: Use c-major-mode-is, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 9edcfbd 197/346: Remove unused bits from d-in-knr-argdecl, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 175c6e5 193/346: Fix indentation of function constraints/contracts?, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 5fdba4e 202/346: Add pragma keyword, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 51b1af1 203/346: Fix K&R region detection and body-less function declarations, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode b5fb492 204/346: Fix fontification of manifest (enum) constants, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode e52434e 218/346: d-mode-test.el: Save actual result to file in case of mismatch, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 609816b 219/346: tests: Move d-forward-type tests to new test file, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 4d9f9ce 211/346: Drop support for Emacs 24, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode f2b4aec 205/346: Fix fontification of "a in b" expressions, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode f69e94e 207/346: Change test suite enumeration and activation,
ELPA Syncer <=
- [nongnu] elpa/d-mode b0a59de 214/346: Fix mis-parsing of concatenating two variables, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 445c696 210/346: Implement a more complete description for D type syntax, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode ed0de34 222/346: Refactor "this" (constructor) handling, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode aaa704a 216/346: Fix coverage issues in d-forward-type, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 572d707 221/346: Improve comprehension of constness and storage classes, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 64afe5f 206/346: .travis.yml: Test against more Emacs versions, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 02733b0 223/346: Remove some redundant progns, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode c9febb3 299/346: d-mode-test: Always ignore .res files, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 2d4bc7d 318/346: Update comments, ELPA Syncer, 2021/08/29
- [nongnu] elpa/d-mode 46a57f4 310/346: Fontify the special words inside version/debug/extern/pragma/__traits/scope, ELPA Syncer, 2021/08/29