From e5f9d2d828f512cd2d32ed548a5a906c9a90d433 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Wed, 4 Mar 2026 22:08:34 +0000 Subject: [PATCH] Make run-tests exit 1 when there are failures --- e2e/testing.scm | 21 ++++++++++++++------- tests.scm | 9 ++++----- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/e2e/testing.scm b/e2e/testing.scm index c9a3316..a6593f7 100644 --- a/e2e/testing.scm +++ b/e2e/testing.scm @@ -1,5 +1,5 @@ (define-module (e2e testing) - #:export (assert define-test run-tests)) + #:export (assert define-test run-tests run-tests-with-cleanup)) (use-modules (sxml simple) @@ -47,10 +47,8 @@ ((error? result) `((error (@ (message ,(cddr result)))))) (#t '())))) -(define (junit-report results) - (let ((count (length results)) - (fails (length (filter fail? results))) - (errors (length (filter error? results)))) +(define (junit-report results fails errors) + (let ((count (length results))) `(testsuites (testsuite (@ (name "wipforth e2e") @@ -60,5 +58,14 @@ ,@(map test-junit-report results))))) (define (run-tests) - (let ((results (map run-test (fluid-ref *tests*)))) - (sxml->xml (junit-report results)))) + (let* ((results (map run-test (fluid-ref *tests*))) + (fails (length (filter fail? results))) + (errors (length (filter error? results)))) + (sxml->xml (junit-report results fails errors)) + (exit (if (= (+ fails errors) 0) 0 1)))) + +(define-syntax-rule (run-tests-with-cleanup body ...) + (dynamic-wind + (lambda () #f) + run-tests + (lambda () body ...))) diff --git a/tests.scm b/tests.scm index 0e4f0a1..064e048 100644 --- a/tests.scm +++ b/tests.scm @@ -40,8 +40,7 @@ (assert (string=? "Hello, world!" result-line) (format #f "Result line: ~s" result-line)))) -(run-tests) - -(client-teardown client) -(close-firefox firefox) -(server-stop server) +(run-tests-with-cleanup + (client-teardown client) + (close-firefox firefox) + (server-stop server))