aboutsummaryrefslogtreecommitdiff
path: root/scripts/all-modules.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-03-06 11:53:40 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-03-07 20:11:00 +0100
commit571eb0764fe001bc9bae7a18eeaae5d6e7dcdab0 (patch)
treed9e78d6b4e44105fd3717404c41260c2f8749f43 /scripts/all-modules.scm
parentRepair begin1 tests. (diff)
downloadcalp-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.scm33
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))))