If the perform stanza still the way to add operable test systems in ASDF? It would be nice to update the manual if this is not the case.
For an ASDF test operation for a test system defined as:
(asdf:defsystem plato-test :depends-on (:plato :prove) :components ((:module "t" :components ((:test-file "plato")))) :description "Test system for plato" :defsystem-depends-on (:prove-asdf) :perform (test-op (op c) (uiop:symbol-call :prove-asdf 'run-test-system c) (asdf:clear-system c)))
I am getting the error:
OPERATION instances must only be created through MAKE-OPERATION. [Condition of type ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR]
Restarts: 0: [SKIP-TEST-FILE] Skip this test file. 1: [SKIP-ALL-TEST-FILES] Give up all test files. 2: [RETRY] Retry #<ASDF/LISP-ACTION:TEST-OP > on #<ASDF/SYSTEM:SYSTEM "plato-test">. 3: [ACCEPT] Continue, treating #<ASDF/LISP-ACTION:TEST-OP > on #<ASDF/SYSTEM:SYSTEM "plato-test"> as having been successful. 4: [RETRY] Retry ASDF operation. 5: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration. --more--
Backtrace: 0: (#<FUNCTION {2EA005A1}> #<ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR {53DCB225}> #<FUNCTION {2EA005A1}>) 1: (APPLY #<FUNCTION {2EA005A1}> (#<ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR {53DCB225}> #<FUNCTION {2EA005A1}>)) 2: (SYSTEM::RUN-HOOK SYSTEM::*INVOKE-DEBUGGER-HOOK* #<ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR {53DCB225}> #<FUNCTION {2EA005A1}>) 3: (INVOKE-DEBUGGER #<ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR {53DCB225}>) 4: (ERROR ASDF/FIND-SYSTEM:FORMATTED-SYSTEM-DEFINITION-ERROR :FORMAT-CONTROL "OPERATION instances must only be created through MAKE-OPERATION." :FORMAT-ARGUMENTS NIL) 5: (ASDF/FIND-SYSTEM:SYSDEF-ERROR "OPERATION instances must only be created through MAKE-OPERATION.") 6: (ASDF/OPERATION::CHECK-OPERATION-CONSTRUCTOR) 7: (#<FUNCTION {4EB834F7}> #<ASDF/LISP-ACTION:LOAD-SOURCE-OP {1F9CF5CF}>) 8: (APPLY #<FUNCTION {4EB834F7}> (#<ASDF/LISP-ACTION:LOAD-SOURCE-OP {1F9CF5CF}>)) 9: (#<STANDARD-GENERIC-FUNCTION {4F6E7A42}> #<ASDF/LISP-ACTION:LOAD-SOURCE-OP {1F9CF5CF}>) 10: (APPLY #<STANDARD-GENERIC-FUNCTION {4F6E7A42}> #<ASDF/LISP-ACTION:LOAD-SOURCE-OP {1F9CF5CF}> NIL) 11: (#<FUNCTION {65C1AB91}> #<STANDARD-CLASS ASDF/LISP-ACTION:LOAD-SOURCE-OP {714368CD}>) 12: (APPLY #<FUNCTION {65C1AB91}> (#<STANDARD-CLASS ASDF/LISP-ACTION:LOAD-SOURCE-OP {714368CD}>)) 13: (#<STANDARD-GENERIC-FUNCTION {209C8A44}> #<STANDARD-CLASS ASDF/LISP-ACTION:LOAD-SOURCE-OP {714368CD}>) 14: (APPLY #<STANDARD-GENERIC-FUNCTION {209C8A44}> #<STANDARD-CLASS ASDF/LISP-ACTION:LOAD-SOURCE-OP {714368CD}> NIL) 15: (#<FUNCTION {6AD13452}> ASDF/LISP-ACTION:LOAD-SOURCE-OP) 16: (APPLY #<FUNCTION {6AD13452}> (ASDF/LISP-ACTION:LOAD-SOURCE-OP)) 17: (MAKE-INSTANCE ASDF/LISP-ACTION:LOAD-SOURCE-OP) 18: (PROVE.ASDF:RUN-TEST-SYSTEM #<ASDF/SYSTEM:SYSTEM {175A9F63}>) 19: (APPLY PROVE.ASDF:RUN-TEST-SYSTEM (#<ASDF/SYSTEM:SYSTEM {175A9F63}>))
This is with ABCL trunk using ASDF:ASDF-VERSION "3.1.7.40".
Hi, Mark --
The issue is in PROVE-ASDF. Replacing line 50 of asdf.lisp
(asdf:perform (make-instance 'asdf:load-source-op) c)
with
(asdf:perform (asdf:make-operation 'asdf:load-source-op) c)
should solve the problem.
LMK if that doesn't fix the problem.
Best, r
On 2016/12/8 18:28, Robert Goldman wrote:
Hi, Mark --
The issue is in PROVE-ASDF. Replacing line 50 of asdf.lisp
(asdf:perform (make-instance 'asdf:load-source-op) c)
with
(asdf:perform (asdf:make-operation 'asdf:load-source-op) c)
should solve the problem.
LMK if that doesn't fix the problem.
Thanks! That works.
Created an [upstream pull request][34].
[34]: https://github.com/fukamachi/prove/pull/34
Fare --
Is there an easy way to find out when ASDF:MAKE-OPERATION was added to the API, so that people can provide backward-compatibility?
I suppose it might make sense to do some kind of backward search over the released versions, and for each one, extract a list of exported symbols from ASDF and UIOP.
I could probably write a script to do this, but that seems like something that I am unlikely to get around to.
R