On 6 Jun 2018, at 11:37, Mark Evenson wrote:
On Jun 5, 2018, at 18:44, Robert Goldman <rpgoldman@sift.info> wrote:
I have pushed the system fiveam-asdf, which supports integration between ASDF and the FIVEAM test library, to the contribs directory in the ASDF repo. Please have a look.
Be warned! It is old, and not being broke, hasn't been fixed. It inappropriately is housed in the ASDF package and inappropriately exports extensions from that package.
But I believe it's still useful as an example of how to raise conditions when the test operation goes wrong. Catching those exceptions can be used to cause a build to fail in a CI system, typically by running lisp in batch mode and having it exit with a nonzero error code if the test operation fails.
Robert,
Thanks ever so much for [releasing the fiveam-asdf code][1].
[1]: https://gitlab.common-lisp.net/asdf/asdf/tree/master/contrib/fiveam-asdf
I seemingly misunderstand how to use the :CLASS argument to ASDF:DEFSYSTEM, as I cannot quite get your code to work.
If you get a chance, can you eyeball [my example code to try to use FIVEAM-ASDF][2] to tell me if that looks like the correct usage?
[2]: https://github.com/emotiq/asdf-test-harness/blob/master/eg/fiveam-asdf-example.asd
Various versions of ASDF-3.1.x (SBCL, CCL, ABCL) are failing with problems about symbols:
Error while trying to load definition for system
fiveam-asdf-example from pathname
/Users/evenson/work/asdf-test-harness/eg/fiveam-asdf-example.asd:
EXPORT ASDF/INTERFACE::FIVEAM-TESTER-SYSTEM causes
name-conflicts in #<PACKAGE "ASDF/USER"> between the
following symbols:
ASDF/INTERFACE::FIVEAM-TESTER-SYSTEM,
ASDF/USER::FIVEAM-TESTER-SYSTEM
[Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]
I had problems like this, too -- it's because of the fact that when the defsystem
form is first read, before the :defsystem-depends-on
is loaded, the symbol named "FIVEAM-TESTER-SYSTEM" gets interned in ASDF/USER
and then when it's later exported from ASDF/INTERFACE
(used by ASDF/USER
) it collides with the earlier-read symbol.
I believe that the correct fix for this is to use any new symbols (like fiveam-tester-system
) in the keyword package, so
:class :fiveam-tester-system
and then when the defsystem
form is processed after the defsystem dependencies (in this case, fiveam-asdf
), ASDF will look for keyword symbols in the current package.
Give that a try and see if it fixes your problem.
We should check and see if the processing of keyword symbols is documented clearly in the manual. Possibly there should be a FAQ entry for this issue....
Best,
Robert