open-standards/wai/quickstart/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 213c6aee6c wai doctor: ends what an answered program leaves running; CI checks each archive
Linux and macOS: a program asked is now waited for with waitid and
WNOWAIT, which leaves it unreaped. Once it has exited, its process
group gets SIGKILL, and only then is it reaped. While the leader is an
unreaped zombie, its group's number cannot be given to another group.
So this ends what the program left running behind it, whether or not
it answered, and nothing else. A program that does not answer in time
is stopped with its group before it is reaped, as before. Other Unix
systems keep the polling wait. On Windows the job's kill-on-close does
the same, and the new test runs there too.

A program file that is open for writing somewhere cannot be run for a
moment (ETXTBSY), for example one just written while another thread of
this process starts a program. A spawn refused so is now tried again
for up to 200 ms. This was a real flake in the tests that write
stand-in programs, and wai doctor itself asks several programs at once.

CI: wai/quickstart/test/archive_doctor.py runs bin/wai doctor --json
from an unpacked archive, with the archive's bin first on PATH. It
fails unless every install and stack check passes and each piece those
checks found is inside the archive. Without that, a relay elsewhere on
PATH or Studio's files from WAI_STUDIO would hide a piece the archive
lacks. Ports, browsers and the keystore are printed, not required.
stack.web and stack.studio now name their path in facts.

The release runs it on every leg that builds an archive: macOS where
the triple is the host's, Linux x86_64 and arm64, and Windows on the
staged directory. At PR time it runs on the macOS archive wai-examples
builds, the only archive built then. archive_doctor_test.py runs it
against stand-ins in wai-examples' portable job.

Real browsers on Linux: wai-studio's webkit job runs in the browser
image and builds wai. It now requires browser.conformance to pass with
that wai.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-06 17:24:17 -05:00
..
archive_doctor.py wai doctor: ends what an answered program leaves running; CI checks each archive 2026-11-06 17:24:17 -05:00
archive_doctor_test.py wai doctor: ends what an answered program leaves running; CI checks each archive 2026-11-06 17:24:17 -05:00
clean-machine.sh wai/toolchain-fixes, converted to the layout of the fix: no shared append point 2026-11-05 01:45:34 -05:00
formulae_test.py wai/toolchain-fixes, converted to the layout of the fix: no shared append point 2026-11-05 01:45:34 -05:00
lib.mjs wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
package-lock.json wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
package.json wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
run-examples.sh wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00