From f90d7a28729f06b742167505492d5649be2f8af9 Mon Sep 17 00:00:00 2001 From: "Samuel B. Johnson" Date: Thu, 31 Oct 2024 16:22:55 -0500 Subject: [PATCH] :sparkles: [test] Coverage Problem: - The contextual library doesn't measure test coverage in any way, making it difficult to asses the effetiveness of the tests. Solution: - Add test coverage. --- .gitignore | 3 +++ run-coverage | 34 ++++++++++++++++++++++++++++++++++ run-tests | 14 +++++++++++--- 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 run-coverage diff --git a/.gitignore b/.gitignore index ebb46cb..fd24727 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ *~ \#* +# Test coverage output +coverage/ + # various fasl extensions *.FASL *.fasl diff --git a/run-coverage b/run-coverage new file mode 100644 index 0000000..2b9e329 --- /dev/null +++ b/run-coverage @@ -0,0 +1,34 @@ +#!/bin/bash +#| + +set -euo pipefail +scriptdir=$(cd $(dirname $0) && pwd) +scriptpath=$scriptdir/$(basename $0) +sbcl --script $scriptpath +exit $? +|# + +(require :sb-cover) +(require :asdf) + +(declaim (optimize sb-cover:store-coverage-data)) + + +(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) + (when (probe-file quicklisp-init) + (load quicklisp-init))) + +(ql:quickload "trivia") +(ql:quickload "fiveam") + +(declaim (optimize (sb-cover:store-coverage-data 0))) + +(asdf:oos 'asdf:load-op :contextual :force t) +(asdf:oos 'asdf:load-op :contextual/test :force t) +(if (5am:run-all-tests) + (progn + (declaim (optimize sb-cover:store-coverage-data)) + (asdf:oos 'asdf:load-op :contextual :force t) + (5am:run-all-tests) + (sb-cover:report "coverage/")) + (sb-ext:exit :code 1)) diff --git a/run-tests b/run-tests index 499992d..9a33303 100755 --- a/run-tests +++ b/run-tests @@ -5,16 +5,24 @@ set -euo pipefail scriptdir=$(cd $(dirname $0) && pwd) scriptpath=$scriptdir/$(basename $0) sbcl --script $scriptpath - exit $? |# +(require :sb-cover) +(require :asdf) + + (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) (when (probe-file quicklisp-init) (load quicklisp-init))) + (ql:quickload "trivia") (ql:quickload "fiveam") -(require :asdf) (asdf:load-system :contextual) -(asdf:test-system :contextual) +(asdf:load-system :contextual/test) + +(defun run () + (if (5am:run-all-tests) 0 1)) + +(sb-ext:exit :code (run))