script/test-e2e and script/test-e2e-firefox built their image under one fixed tag. With two clones running a suite at once, the second build moved the tag, the image store deleted the first run's untagged image, and that suite exited 125 without running a test. Every run also left its image behind.
Each run now tags its image autistmask-e2e-chrome: or autistmask-e2e-firefox: followed by twelve random hex digits, runs it by that tag, and removes it in the cleanup the scripts already ran on exit and on interrupt. README.md's End-to-End Tests section says so.
What the diff does not show:
The suffix comes from /dev/urandom, not the shell's process id: CI jobs share the host's docker daemon, but each job's container numbers its processes from scratch, so two jobs can have the same one.
The --iidfile file and the run-by-ID it fed are gone. They guarded against the tag moving between build and run, which a tag no other run uses cannot do.
Cleanup removes the image only if it exists, so a failed or interrupted build has nothing to remove, and the second cleanup that follows an interrupt does nothing.
Images that earlier runs left under the old fixed tags (:latest) are not touched.
Judgement call: the suffix is a tag (name:suffix) rather than part of the name, so each suite's images stay under one name in docker images.
Model: opus-5-5
Fixes https://git.eeqj.de/sneak/AutistMask/issues/547.
`script/test-e2e` and `script/test-e2e-firefox` built their image under one fixed tag. With two clones running a suite at once, the second build moved the tag, the image store deleted the first run's untagged image, and that suite exited 125 without running a test. Every run also left its image behind.
Each run now tags its image `autistmask-e2e-chrome:` or `autistmask-e2e-firefox:` followed by twelve random hex digits, runs it by that tag, and removes it in the cleanup the scripts already ran on exit and on interrupt. `README.md`'s End-to-End Tests section says so.
What the diff does not show:
- The suffix comes from `/dev/urandom`, not the shell's process id: CI jobs share the host's docker daemon, but each job's container numbers its processes from scratch, so two jobs can have the same one.
- The `--iidfile` file and the run-by-ID it fed are gone. They guarded against the tag moving between build and run, which a tag no other run uses cannot do.
- Cleanup removes the image only if it exists, so a failed or interrupted build has nothing to remove, and the second cleanup that follows an interrupt does nothing.
- Images that earlier runs left under the old fixed tags (`:latest`) are not touched.
Judgement call: the suffix is a tag (`name:suffix`) rather than part of the name, so each suite's images stay under one name in `docker images`.
Model: opus-5-5
script/test-e2e line 49 and script/test-e2e-firefox line 43: the cleanup runs on a normal exit, Ctrl-C and termination, but not when the terminal or SSH session running the suite closes. Such a run ends without removing its image, and since no later run reuses the tag, the image stays for good. Acceptable: a hangup runs the same cleanup.
script/test-e2e-firefox lines 27-31 (the same cleanup is in script/test-e2e lines 33-37): Ctrl-C does not stop the Firefox suite's container. After a third Ctrl-C, docker's client exits while the container keeps running, so the cleanup's image removal is refused because that container still uses the image. The image stays, and the script exits 1, printing docker's refusal twice. Acceptable: an interrupted run removes its image even when its container outlives docker's client, for example by letting Ctrl-C end the suite inside the container, or by removing the run's container before its image.
README.md lines 350-354: "removes that image when it exits, an interrupt included" and "no run leaves an image behind" are untrue for the two cases above, and for a run killed outright (kill -9), which cannot clean up. Acceptable: the paragraph says which endings remove the image, and that a run killed outright leaves its image under its tag for removal by hand.
Judgement call: a closed terminal and a repeated Ctrl-C count as the interrupt that #547 requires the cleanup to cover.
Unverified: whether a CI job stopped by its timeout-minutes cap gets to run the cleanup.
Model: opus-5-5
**FAIL** (`needs-rework`)
1. `script/test-e2e` line 49 and `script/test-e2e-firefox` line 43: the cleanup runs on a normal exit, Ctrl-C and termination, but not when the terminal or SSH session running the suite closes. Such a run ends without removing its image, and since no later run reuses the tag, the image stays for good. Acceptable: a hangup runs the same cleanup.
2. `script/test-e2e-firefox` lines 27-31 (the same cleanup is in `script/test-e2e` lines 33-37): Ctrl-C does not stop the Firefox suite's container. After a third Ctrl-C, docker's client exits while the container keeps running, so the cleanup's image removal is refused because that container still uses the image. The image stays, and the script exits 1, printing docker's refusal twice. Acceptable: an interrupted run removes its image even when its container outlives docker's client, for example by letting Ctrl-C end the suite inside the container, or by removing the run's container before its image.
3. `README.md` lines 350-354: "removes that image when it exits, an interrupt included" and "no run leaves an image behind" are untrue for the two cases above, and for a run killed outright (`kill -9`), which cannot clean up. Acceptable: the paragraph says which endings remove the image, and that a run killed outright leaves its image under its tag for removal by hand.
Judgement call: a closed terminal and a repeated Ctrl-C count as the interrupt that https://git.eeqj.de/sneak/AutistMask/issues/547 requires the cleanup to cover.
Unverified: whether a CI job stopped by its `timeout-minutes` cap gets to run the cleanup.
Model: opus-5-5
script/test-e2e and script/test-e2e-firefox tagged their image with one
fixed name. When two clones ran a suite at once, the second build moved
that tag, the image store deleted the first run's now-untagged image, and
that suite exited 125 without running a test. Each run now tags its image
with the suite's name and twelve random hex digits and runs it by that
tag. The cleanup that runs on exit, Ctrl-C, kill and a closed terminal
removes the run's container if docker's client left it running, then the
image. The image-ID file that guarded against a moving tag is gone.
README.md's End-to-End Tests section says which endings clean up.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes #547.
script/test-e2eandscript/test-e2e-firefoxbuilt their image under one fixed tag. With two clones running a suite at once, the second build moved the tag, the image store deleted the first run's untagged image, and that suite exited 125 without running a test. Every run also left its image behind.Each run now tags its image
autistmask-e2e-chrome:orautistmask-e2e-firefox:followed by twelve random hex digits, runs it by that tag, and removes it in the cleanup the scripts already ran on exit and on interrupt.README.md's End-to-End Tests section says so.What the diff does not show:
/dev/urandom, not the shell's process id: CI jobs share the host's docker daemon, but each job's container numbers its processes from scratch, so two jobs can have the same one.--iidfilefile and the run-by-ID it fed are gone. They guarded against the tag moving between build and run, which a tag no other run uses cannot do.:latest) are not touched.Judgement call: the suffix is a tag (
name:suffix) rather than part of the name, so each suite's images stay under one name indocker images.Model: opus-5-5
FAIL (
needs-rework)script/test-e2eline 49 andscript/test-e2e-firefoxline 43: the cleanup runs on a normal exit, Ctrl-C and termination, but not when the terminal or SSH session running the suite closes. Such a run ends without removing its image, and since no later run reuses the tag, the image stays for good. Acceptable: a hangup runs the same cleanup.script/test-e2e-firefoxlines 27-31 (the same cleanup is inscript/test-e2elines 33-37): Ctrl-C does not stop the Firefox suite's container. After a third Ctrl-C, docker's client exits while the container keeps running, so the cleanup's image removal is refused because that container still uses the image. The image stays, and the script exits 1, printing docker's refusal twice. Acceptable: an interrupted run removes its image even when its container outlives docker's client, for example by letting Ctrl-C end the suite inside the container, or by removing the run's container before its image.README.mdlines 350-354: "removes that image when it exits, an interrupt included" and "no run leaves an image behind" are untrue for the two cases above, and for a run killed outright (kill -9), which cannot clean up. Acceptable: the paragraph says which endings remove the image, and that a run killed outright leaves its image under its tag for removal by hand.Judgement call: a closed terminal and a repeated Ctrl-C count as the interrupt that #547 requires the cleanup to cover.
Unverified: whether a CI job stopped by its
timeout-minutescap gets to run the cleanup.Model: opus-5-5
1b9220fb62tod6aa3794c2d6aa3794c2to4d442d1562View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.