On Sat, Feb 27, 2016, 20:14 Robert Goldman rpgoldman@sift.net wrote:
OK, I fixed the script, which was failing to modify upgrade.lisp.
So now every location that I can find has the correct version expression, and the tests pass.
OK.
I still return to the original question:
What is this test intended to establish?
According to the test source code, there is a condition under which not only do we return NIL for the system definition file for ASDF, but it is an error to return anything but NIL.
What is that condition? Why is it ever an error to have ASDF loaded but have its system definition file be undefined?
I suspect that what happens is that if ASDF is already loaded and current, system-source-file of find-system returns NIL. But why? Can you explain this test? There is no docstring for SYSTEM-SOURCE-FILE, so it's hard to see why it should ever be NIL. If I hadn't seen this test, I would have guessed that returning NIL for an existant system wold be an error condition.
The test is checking that ASDF is refusing to either downgrade or reload a same version of ASDF.
A system-source-file can be nil when a system was not loaded from mass storage but preloaded or otherwise programmatically defined via e.g. (eval `(defsystem ...))
In this test, ASDF *is* found in the source registry, but it's version is not strictly more recent than the one in memory, so trying to load it should NOT result in ASDF being loaded, but instead in a warning being issued.
—#f