summaryrefslogtreecommitdiff
path: root/test-suite/guile-test
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2010-05-02 14:17:41 +0200
committerLudovic Courtès <ludo@gnu.org>2010-05-07 13:47:53 +0200
commit36b5e394072c94b062a69a6d77b418e16ce70fce (patch)
tree265af6d417d8aff955c69347fd09c2b8ce2affc6 /test-suite/guile-test
parentb3567435e1ba8b4bdef78fc020a2032c02d73075 (diff)
downloadguile-36b5e394072c94b062a69a6d77b418e16ce70fce.tar.gz
Add (system vm coverage).
* module/system/vm/coverage.scm: New file. * module/Makefile.am (SYSTEM_SOURCES): Add `system/vm/coverage.scm'. * test-suite/guile-test (main): Use (system vm coverage). Handle `--coverage' and `-c'. * test-suite/tests/coverage.test: New file. * test-suite/Makefile.am (SCM_TESTS): Add `tests/coverage.test'. * doc/ref/Makefile.am (guile_TEXINFOS): Add `api-coverage.texi'. * doc/ref/api-coverage.texi: New file. * doc/ref/guile.texi (API Reference): Include it.
Diffstat (limited to 'test-suite/guile-test')
-rwxr-xr-xtest-suite/guile-test24
1 files changed, 19 insertions, 5 deletions
diff --git a/test-suite/guile-test b/test-suite/guile-test
index 0031bbf4c..c114ad66a 100755
--- a/test-suite/guile-test
+++ b/test-suite/guile-test
@@ -85,6 +85,9 @@
:use-module (ice-9 getopt-long)
:use-module (ice-9 and-let-star)
:use-module (ice-9 rdelim)
+ :use-module (system vm coverage)
+ :use-module (srfi srfi-11)
+ :use-module (system vm vm)
:export (main data-file-name test-file-name))
@@ -175,6 +178,8 @@
(log-file
(single-char #\l)
(value #t))
+ (coverage
+ (single-char #\c))
(debug
(single-char #\d))))))
(define (opt tag default)
@@ -227,11 +232,20 @@
(set! global-pass #f)))))
;; Run the tests.
- (for-each (lambda (test)
- (display (string-append "Running " test "\n"))
- (with-test-prefix test
- (load (test-file-name test))))
- tests)
+ (let ((run-tests
+ (lambda ()
+ (for-each (lambda (test)
+ (display (string-append "Running " test "\n"))
+ (with-test-prefix test
+ (load (test-file-name test))))
+ tests))))
+ (if (opt 'coverage #f)
+ (let-values (((coverage-data _)
+ (with-code-coverage (the-vm) run-tests)))
+ (let ((out (open-output-file "guile.info")))
+ (coverage-data->lcov coverage-data out)
+ (close out)))
+ (run-tests)))
;; Display the final counts, both to the user and in the log
;; file.