~ chicken-core (chicken-5) 663ddc0d6fad6bc56755ba822a26121ad075e65b
commit 663ddc0d6fad6bc56755ba822a26121ad075e65b Author: Peter Bex <peter@more-magic.net> AuthorDate: Thu Sep 2 08:03:39 2021 +0200 Commit: Mario Domenech Goulart <mario@parenteses.org> CommitDate: Sun Sep 5 13:05:48 2021 +0200 Ensure all ports are closed in tests when deleting the file Under Windows, read-lines-test.scm and posix-tests.scm would fail with "permission denied" upon deletion of the output file, but that's because there was still an open file handle to it (and on Windows you can't delete open files). In read-lines-test.scm, it is my favorite Scheme footgun: call-with-input-file doesn't close its port when the dynamic extent is exited via other ways than a regular procedure return. In posix-tests.scm it was a more mundane error - we opened a file using the descriptor-returning POSIX procedure file-open, but never closed the descriptor. Signed-off-by: Mario Domenech Goulart <mario@parenteses.org> diff --git a/tests/posix-tests.scm b/tests/posix-tests.scm index 361f55c1..26f495e7 100644 --- a/tests/posix-tests.scm +++ b/tests/posix-tests.scm @@ -98,7 +98,7 @@ (let ((mode (file-creation-mode))) (set! (file-creation-mode) umask) (delete-file* "posix-tests.out") - (file-open "posix-tests.out" open/creat given ...) + (file-close (file-open "posix-tests.out" open/creat given ...)) (assert (equal? (file-permissions "posix-tests.out") expected)) (set! (file-creation-mode) mode)))))) ;; default file mode diff --git a/tests/read-lines-tests.scm b/tests/read-lines-tests.scm index 28cdd223..e107c26f 100644 --- a/tests/read-lines-tests.scm +++ b/tests/read-lines-tests.scm @@ -46,8 +46,11 @@ EOF (test-error "with an invalid second argument (max)" (call-with-input-file input-test-file - (lambda (port) - (read-lines port 2.0)))) + (lambda (port) + (dynamic-wind + void + (lambda () (read-lines port 2.0)) + (lambda () (close-input-port port)))))) (test-end "read-lines")Trap