vend-get-local-systems #1

Merged
dxtr merged 7 commits from vend-get-local-systems into master 2026-10-14 02:44:58 +02:00
Owner
No description provided.
`vend test` ran the compiler without the flags that `vend eval` uses to
leave its debugger out. When loading a test system or running its suite
signalled an error, SBCL and CCL entered their debuggers, read EOF from
the empty stdin of a CI job and exited with 0, so the run passed.

Pass `--non-interactive` to SBCL and `--batch` to CCL, which exit
non-zero instead. They follow any flags given after the compiler's name,
because SBCL only accepts runtime options such as --dynamic-space-size
before them. For the same reason `vend test` leaves out --noinform, a
runtime option that would be rejected after a flag like --no-userinit.

`vend eval ccl` passes `--batch` too, so that an error ends the session
instead of opening CCL's break loop, as `vend eval sbcl` already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`vend test` passed the suites of all detected test systems to a single
Lisp, but each suite's form ended in `(uiop:quit code)`, so only the
first suite ever ran: a project whose other test systems failed passed.

Each test library now yields a form that loads its test system and one
that runs its suite and yields whether it passed. `vend test` loads
every test system first, then runs every suite in one final form, which
exits with 1 if any of them failed. That form is read after the systems
are loaded, so it can name their packages.

- Split `test-suites`, which finds the suites, from `test-invocations`,
  which turns them into the forms to evaluate.
- Several clunit2 test systems share one form, since its
  `run-all-suites` already runs every loaded suite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both commands ran the Lisp, dropped its exit status and exited with 0,
so a `vend eval` script that failed looked successful. They now exit
with the Lisp's status.

`run` yields that status as a shell reports it: the exit code, or 128
plus the number of the signal that killed the process. It used to yield
the bare signal number, which vend would now pass on as an ordinary exit
code, such as 9 for a Lisp killed by SIGKILL instead of 137.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`vend get` decided whether a dependency was already present from its
name alone: it mapped the dependency to a repository with `get-parent`
and checked whether that repository had been cloned. The project only
counted as cloned through the parent of its first system, so:

- a local system without dependencies of its own, other than the first
  one, failed as "not a known system";
- a project whose first system is named after a library, such as
  `cffi-demo`, never fetched that library, because `get-parent` maps the
  project's system to `:cffi`;
- a sibling system without dependencies in a library under vendored/
  failed unless it was registered in `+parents+`.

Remember every system that the .asd files scanned so far define, in the
project or in vendored/, and only fetch the dependencies that none of
them defines: ASDF already finds the rest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dxtr merged commit c6f436752a into master 2026-10-14 02:44:58 +02:00
dxtr deleted branch vend-get-local-systems 2026-10-14 02:44:58 +02:00
dxtr referenced this pull request from a commit 2026-10-14 02:45:00 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dxtr/vend!1
No description provided.