diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-03-06 11:53:40 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-03-07 20:11:00 +0100 |
commit | 571eb0764fe001bc9bae7a18eeaae5d6e7dcdab0 (patch) | |
tree | d9e78d6b4e44105fd3717404c41260c2f8749f43 /scripts/all-modules.scm | |
parent | Repair begin1 tests. (diff) | |
download | calp-571eb0764fe001bc9bae7a18eeaae5d6e7dcdab0.tar.gz calp-571eb0764fe001bc9bae7a18eeaae5d6e7dcdab0.tar.xz |
Test runner only output coverage of "our" modules.
Diffstat (limited to 'scripts/all-modules.scm')
-rw-r--r-- | scripts/all-modules.scm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scripts/all-modules.scm b/scripts/all-modules.scm new file mode 100644 index 00000000..41f35393 --- /dev/null +++ b/scripts/all-modules.scm @@ -0,0 +1,33 @@ +(define-module (all-modules) + :use-module (ice-9 regex) + :use-module (srfi srfi-1) + :use-module (ice-9 ftw) + :use-module (ice-9 match) + :export (all-modules-under-directory)) + +(define (all-modules-under-directory dir) + "Returns two values, all scm files in dir, and all top +level modules in those files" + + (define re (make-regexp "\\.scm$")) + + (define files '()) + + (ftw dir (lambda (filename statinfo flag) + (cond ((and (eq? flag 'regular) + (regexp-exec re filename)) + => (lambda (m) + (set! files (cons filename files)) + #t + )) + (else #t)))) + + + (values files + (filter identity + (map (lambda (file) + (match (call-with-input-file file read) + (('define-module (module ...) _ ...) + module) + (_ #f))) + files)))) |