[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] tests/examples: Add running of workflow examples
From: |
Olivier Dion |
Subject: |
[PATCH] tests/examples: Add running of workflow examples |
Date: |
Fri, 29 Apr 2022 13:55:00 -0400 |
End to end testing of pre-defined scenarios are a good way to check for
regression.
Here we introduce testing of some examples available in the documentation. That
way, we're sure that new users should be able to run them without problems.
Each scenario is a different test and is run in a different temporary
directory which get destroyed if the scenario succeeded.
---
tests/examples.scm | 39 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/tests/examples.scm b/tests/examples.scm
index 6f7a64e..38dac3e 100644
--- a/tests/examples.scm
+++ b/tests/examples.scm
@@ -30,6 +30,8 @@
(lambda (port)
(wisp-reader port (user-module-for-file "test.w"))))
+(define top-srcdir (getenv "abs_top_srcdir"))
+
(test-equal "wisp syntax produces the expected S-expression"
'(process haiku
(outputs "haiku.txt")
@@ -39,8 +41,43 @@
(with-output-to-file (unquote outputs)
(lambda () (display "the library
book\noverdue?\nslow falling snow"))))))
- (call-with-input-file (string-append (getenv "abs_top_srcdir")
+ (call-with-input-file (string-append top-srcdir
"/doc/examples/haiku.w")
read-wisp))
+(define-syntax-rule (with-directory-excursion dir body body* ...)
+ (let ((old-dir (getcwd)))
+ (dynamic-wind
+ (lambda () (chdir dir))
+ (lambda () body body* ...)
+ (lambda () (chdir old-dir)))))
+
+(with-directory-excursion
+ (string-append top-srcdir "/doc/examples")
+
+ (define (process-success? status)
+ (= 0 (or (status:exit-val status)
+ (status:term-sig status))))
+
+ (define scenarios
+ (list "extended-example-workflow.w"))
+
+ (for-each (lambda (example)
+ (test-assert example
+ (let* ((tmp-dir (mkdtemp
+ (format #f "gwl-example-~a.XXXXXX" example)))
+ (abs-example (canonicalize-path example))
+ (success?
+ (with-directory-excursion tmp-dir
+ (process-success?
+ (system
+ (format #f "guix workflow run -fc ~a -l all"
+ abs-example))))))
+ (if success?
+ (system* "rm" "-rf" tmp-dir)
+ (format (error-output-port)
+ "Example directory: ~a\n" tmp-dir))
+ success?)))
+ scenarios))
+
(test-end "examples")
--
2.35.1
- [PATCH] tests/examples: Add running of workflow examples,
Olivier Dion <=