Skip to content

Commit

Permalink
Update extrinsic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yitzchak committed Jan 17, 2024
1 parent 92b31f4 commit 1804c22
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 120 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ jobs:
asdf-add
- name: Run ANSI Tests
run: |
lisp -i ${{ matrix.lisp }} -e "(ql:quickload :incless-extrinsic/test)" -e "(asdf:test-system :incless-extrinsic)"
lisp -i ${{ matrix.lisp }} -e "(ql:quickload :incless-extrinsic/test)" -e "(incless-extrinsic/test:test :exit t)"
12 changes: 3 additions & 9 deletions incless-extrinsic.asd
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,13 @@
:description "ANSI Test system for Inravina"
:license "MIT"
:author "Tarn W. Burton"
:depends-on ("alexandria"
:depends-on ("ansi-test-harness"
"invistra-extrinsic")
:perform (test-op (op c)
(symbol-call :incless-extrinsic/test :test))
:components ((:module "code"
:pathname "src/extrinsic/test/"
:serial t
:components ((:file "packages")
(:file "test")))
(:module "expected-failures"
:pathname "src/extrinsic/test/expected-failures"
:components ((:static-file "default.sexp")
(:static-file "abcl.sexp")
(:static-file "clasp.sexp")
(:static-file "ecl.sexp")
(:static-file "sbcl.sexp")))))
(:file "test")
(:static-file "expected-failures.sexp")))))
18 changes: 18 additions & 0 deletions src/extrinsic/test/expected-failures.sexp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#+(or clasp ecl sbcl) :NIL-VECTORS-ARE-STRINGS
#+(or clasp ecl) :ALLOW-NIL-ARRAYS
#+(or clasp ecl) :MAKE-CONDITION-WITH-COMPOUND-NAME
#+(or clasp ecl) :NO-FLOATING-POINT-UNDERFLOW-BY-DEFAULT

#+sbcl PRINT.BACKQUOTE.RANDOM.1
#+sbcl PRINT.BACKQUOTE.RANDOM.2
#+sbcl PRINT.BACKQUOTE.RANDOM.3
#+sbcl PRINT.BACKQUOTE.RANDOM.4
#+sbcl PRINT.BACKQUOTE.RANDOM.5
#+sbcl PRINT.BACKQUOTE.RANDOM.10
#+sbcl PRINT.BACKQUOTE.RANDOM.11
#+sbcl PRINT.BACKQUOTE.RANDOM.13
#+sbcl PRINT.BACKQUOTE.RANDOM.14

#+(or abcl clasp ecl sbcl) FORMAT.E.26
#+clasp PRINT.DOUBLE-FLOAT.RANDOM
#+clasp PRINT.LONG-FLOAT.RANDOM
1 change: 0 additions & 1 deletion src/extrinsic/test/expected-failures/abcl.sexp

This file was deleted.

7 changes: 0 additions & 7 deletions src/extrinsic/test/expected-failures/clasp.sexp

This file was deleted.

Empty file.
5 changes: 0 additions & 5 deletions src/extrinsic/test/expected-failures/ecl.sexp

This file was deleted.

11 changes: 0 additions & 11 deletions src/extrinsic/test/expected-failures/sbcl.sexp

This file was deleted.

124 changes: 38 additions & 86 deletions src/extrinsic/test/test.lisp
Original file line number Diff line number Diff line change
@@ -1,41 +1,5 @@
(in-package #:incless-extrinsic/test)

(defun check-repo (&key directory repository &allow-other-keys)
(format t "~:[Did not find~;Found~] ~A clone in ~A, assuming everything is okay.~%"
(probe-file directory) repository directory))

(defun sync-repo (&key (git "git") clean directory repository branch commit
&allow-other-keys
&aux (exists (probe-file directory)))
(cond ((and exists (not clean))
(format t "Fetching ~A~%" repository)
(uiop:run-program (list git "fetch" "--quiet")
:output :interactive
:error-output :output
:directory directory))
(t
(when (and clean exists)
(format t "Removing existing directory ~A~%" directory)
(uiop:delete-directory-tree exists :validate t))
(format t "Cloning ~A~%" repository)
(uiop:run-program (list git "clone" repository (namestring directory))
:output :interactive
:error-output :output)))
(when (or commit branch)
(format t "Checking out ~A from ~A~%" (or commit branch) repository)
(uiop:run-program (list git "checkout" "--quiet" (or commit branch))
:output :interactive
:error-output :output
:directory directory))
(when (and branch (not commit))
(format t "Fast forwarding to origin/~A from ~A~%" branch repository)
(uiop:run-program (list git "merge" "--ff-only" (format nil "origin/~A" branch))
:output :interactive
:error-output :output
:directory directory)))

(defvar +ansi-test-repository+ "https://gitlab.common-lisp.net/ansi-test/ansi-test.git")

(defvar *tests*
'("COPY-PPRINT-DISPATCH."
"FORMAT."
Expand Down Expand Up @@ -73,53 +37,41 @@
"WRITE."
"WRITE-TO-STRING."))

(defun test (&rest args &key skip-sync &allow-other-keys)
(let* ((system (asdf:find-system :incless-extrinsic/test))
(expected-failures (asdf:component-pathname (asdf:find-component system '("expected-failures"
#+abcl "abcl.sexp"
#+clasp "clasp.sexp"
#+ecl "ecl.sexp"
#+sbcl "sbcl.sexp"
#-(or abcl clasp ecl sbcl)
"default.sexp"))))
(*default-pathname-defaults* (merge-pathnames (make-pathname :directory '(:relative "dependencies" "ansi-test"))
(asdf:component-pathname system)))
(cl-user::*extrinsic-symbols* '(incless-extrinsic:pprint
incless-extrinsic:prin1
incless-extrinsic:prin1-to-string
incless-extrinsic:princ
incless-extrinsic:princ-to-string
incless-extrinsic:print
incless-extrinsic:print-object
incless-extrinsic:print-unreadable-object
incless-extrinsic:write
incless-extrinsic:write-to-string
inravina-extrinsic:*print-pprint-dispatch*
inravina-extrinsic:copy-pprint-dispatch
inravina-extrinsic:pprint-dispatch
inravina-extrinsic:pprint-exit-if-list-exhausted
inravina-extrinsic:pprint-fill
inravina-extrinsic:pprint-indent
inravina-extrinsic:pprint-linear
inravina-extrinsic:pprint-logical-block
inravina-extrinsic:pprint-newline
inravina-extrinsic:pprint-pop
inravina-extrinsic:pprint-tab
inravina-extrinsic:pprint-tabular
inravina-extrinsic:set-pprint-dispatch
inravina-extrinsic:with-standard-io-syntax
invistra-extrinsic:format
invistra-extrinsic:formatter)))
(declare (special cl-user::*extrinsic-symbols*))
(if skip-sync
(check-repo :directory *default-pathname-defaults* :repository +ansi-test-repository+)
(apply #'sync-repo :directory *default-pathname-defaults* :repository +ansi-test-repository+ args))
(load #P"init.lsp")
(dolist (name (mapcar (lambda (entry)
(uiop:symbol-call :regression-test :name entry))
(cdr (symbol-value (find-symbol "*ENTRIES*" :regression-test)))))
(unless (member (symbol-name name) *tests*
:test (lambda (name prefix)
(alexandria:starts-with-subseq prefix name)))
(uiop:symbol-call :regression-test :rem-test name)))
(uiop:symbol-call :regression-test :do-tests :exit t :expected-failures expected-failures)))
(defvar *extrinsic-symbols*
'(incless-extrinsic:pprint
incless-extrinsic:prin1
incless-extrinsic:prin1-to-string
incless-extrinsic:princ
incless-extrinsic:princ-to-string
incless-extrinsic:print
incless-extrinsic:print-object
incless-extrinsic:print-unreadable-object
incless-extrinsic:write
incless-extrinsic:write-to-string
inravina-extrinsic:*print-pprint-dispatch*
inravina-extrinsic:copy-pprint-dispatch
inravina-extrinsic:pprint-dispatch
inravina-extrinsic:pprint-exit-if-list-exhausted
inravina-extrinsic:pprint-fill
inravina-extrinsic:pprint-indent
inravina-extrinsic:pprint-linear
inravina-extrinsic:pprint-logical-block
inravina-extrinsic:pprint-newline
inravina-extrinsic:pprint-pop
inravina-extrinsic:pprint-tab
inravina-extrinsic:pprint-tabular
inravina-extrinsic:set-pprint-dispatch
inravina-extrinsic:with-standard-io-syntax
invistra-extrinsic:format
invistra-extrinsic:formatter))

(defun test (&rest args)
(let ((system (asdf:find-system :incless-extrinsic/test)))
(apply #'ansi-test-harness:ansi-test
:directory (merge-pathnames (make-pathname :directory '(:relative "dependencies" "ansi-test"))
(asdf:component-pathname system))
:expected-failures (asdf:component-pathname (asdf:find-component system
'("code" "expected-failures.sexp")))
:extrinsic-symbols *extrinsic-symbols*
:tests *tests*
args)))

0 comments on commit 1804c22

Please sign in to comment.