From 8fa0b253abd219755edf292770b13d8f6b0c7219 Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Tue, 27 Sep 2022 23:08:46 -0700 Subject: [PATCH] fix(ci): add tests, fix test-op --- .github/workflows/test.yml | 7 +++-- data-lens.asd | 6 ++-- t/lens.lisp | 58 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 t/lens.lisp diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ab70cbb..883d1d8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,10 +48,11 @@ jobs: - name: run tests run: | cd "$GITHUB_WORKSPACE" - sbcl --load "$HOME/quicklisp/setup.lisp" \ + sbcl --disable-debugger --no-userinit \ + --load "$HOME/quicklisp/setup.lisp" \ --eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \ --eval "(ql:quickload :data-lens/test)" \ - --eval "(asdf:test-system :data-lens/test)" \ + --eval "(handler-case (asdf:test-system :data-lens/test) (error () (uiop:quit 42)))" \ --eval "(ql:quickload :data-lens/transducers/test)" \ - --eval "(asdf:test-system :data-lens/transducers/test)" \ + --eval "(handler-case (asdf:test-system :data-lens/transducers/test) (error () (uiop:quit 43)))" \ --quit diff --git a/data-lens.asd b/data-lens.asd index 83619ad..025cf84 100644 --- a/data-lens.asd +++ b/data-lens.asd @@ -22,7 +22,9 @@ :depends-on (:data-lens :fiveam) :serial t - :perform (test-op (o c) (symbol-call :fiveam '#:run! :data-lens.lens)) + :perform (test-op (o c) + (unless (symbol-call :fiveam '#:run! :data-lens.lens) + (error "some tests failed"))) :components ((:module "t" :components ((:file "lens"))))) @@ -49,6 +51,6 @@ :fiveam) :serial t :perform (test-op (o c) (unless (symbol-call :fiveam '#:run! :data-lens.transducers) - (quit 42))) + (error "some tests failed"))) :components ((:module "t" :components ((:file "transducers"))))) diff --git a/t/lens.lisp b/t/lens.lisp new file mode 100644 index 0000000..adf0e63 --- /dev/null +++ b/t/lens.lisp @@ -0,0 +1,58 @@ +(defpackage :data-lens.t.lens + (:use :cl ) + (:export )) +(in-package :data-lens.t.lens) + +(5am:def-suite :data-lens.lens) +(5am:in-suite :data-lens.lens) + +(5am:def-test == (:suite :data-lens.lens) + (5am:is (equal t + (funcall (data-lens:== 1) + 1))) + (5am:is (equal nil + (funcall (data-lens:== (list "1")) + (list "1")))) + (5am:is (equal nil + (funcall (data-lens:== (list "1") :test #'equal) + (list "1"))))) + +(5am:def-test functionalize (:suite :data-lens.lens) + (5am:is (equal 2 + (funcall (data-lens:functionalize #'1+) 1))) + (5am:is (equal 0 + (funcall (data-lens:functionalize '1-) 1))) + (5am:is (equal 3 + (funcall (data-lens:functionalize #(0 3)) 1))) + (5am:is (equal 8 + (funcall (data-lens:functionalize + (alexandria:plist-hash-table '(1 8 2 4))) + 1)))) + +(5am:def-test on (:suite :data-lens.lens :depends-on (and functionalize)) + (5am:is (equal 2 + (funcall (data-lens:on '1+ 'car) + '(1 2)))) + (5am:is (equal 5 + (funcall (data-lens:on '+ 'car) + '(1 2) + '(4 5)))) + (5am:is (equal 13 + (funcall (data-lens:on '+ 'car) + '(1 2) + '(4 5) + '(8 9))))) + +(5am:def-test over (:suite :data-lens.lens :depends-on (and functionalize)) + (5am:is (equal '(1 2 3) + (funcall (data-lens:over '1+) + '(0 1 2)))) + (5am:is (equal '(1 2 3) + (funcall (data-lens:over '1+) + #(0 1 2)))) + (5am:is (equalp #(1 2 3) + (funcall (data-lens:over '1+ :result-type 'vector) + '(0 1 2)))) + (5am:is (equalp #(1 2 3) + (funcall (data-lens:over '1+ :result-type 'vector) + #(0 1 2)))))