rastrillo / fiesta Public

Fail site-links-published when its scratch tree cannot be removed

The EXIT trap ran rm -rf and dropped its status, so a run whose link
check passed and whose cleanup failed still reported success, with a
checked-out copy of the site left in TMPDIR.

The trap now keeps the status the shell was leaving with. When rm
fails it says so, and turns a pass into exit 1; an earlier failure
keeps its own status rather than becoming 1.

Shown with a stub rm that exits 1, first on PATH. The old recipe
passes the link check and exits 0. The new one exits 1 with "could
not remove". With go stubbed to exit 3, a bad SITE_REF, or an INT
sent to the recipe's shell, it exits 3, 1 or 130 as before. Unstubbed,
it passes and leaves nothing behind.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 2ed4142818cb327072395f66739afe2314d52932 parent dbd18a6
1 file changed, +6 −2
  • Makefile +6 −2

CI passed — run details

CI log
=== gofmt ===
=== no-rastrillo ===
go test -run '^(TestFiestaNeverImportsRastrillo|TestThePublicPackagesLinkNoBrowser)$' -count=1 .
go: downloading go1.26.10 (linux/arm64)
ok  	amadan.net/rastrillo/fiesta	1.059s
=== size ===
go test ./internal/build -run '^TestTheOneLinkIsUnder25KiBGzipped$' -count=1 -v
=== RUN   TestTheOneLinkIsUnder25KiBGzipped
    build_test.go:138: fiesta-plain.css: 158347 bytes, 23104 bytes gzipped (22.6 KiB of the 25.0 KiB limit)
    build_test.go:138: fiesta-signal.css: 158442 bytes, 23217 bytes gzipped (22.7 KiB of the 25.0 KiB limit)
    build_test.go:138: fiesta.css: 161261 bytes, 23823 bytes gzipped (23.3 KiB of the 25.0 KiB limit)
--- PASS: TestTheOneLinkIsUnder25KiBGzipped (0.02s)
PASS
ok  	amadan.net/rastrillo/fiesta/internal/build	0.026s
=== history ===
history: 46 commits; release tags: v1.0.0
=== suite ===
--- shard 0 of 48 ---
==> shard 0 of 48: make root
go build ./...
go vet ./...
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh root 'internal/gallery@3 cmd/fiesta@2 internal/www@2'
ok  	amadan.net/rastrillo/fiesta	4.869s
ok  	amadan.net/rastrillo/fiesta/check	9.194s
ok  	amadan.net/rastrillo/fiesta/example	0.192s
?   	amadan.net/rastrillo/fiesta/hack/seed/english	[no test files]
ok  	amadan.net/rastrillo/fiesta/internal/axe	0.297s
ok  	amadan.net/rastrillo/fiesta/internal/build	2.121s
ok  	amadan.net/rastrillo/fiesta/internal/codeview	0.029s
?   	amadan.net/rastrillo/fiesta/internal/harness	[no test files]
ok  	amadan.net/rastrillo/fiesta/internal/markup	0.024s
ok  	amadan.net/rastrillo/fiesta/internal/nodetest	0.401s
ok  	amadan.net/rastrillo/fiesta/internal/rowrule	0.036s
ok  	amadan.net/rastrillo/fiesta/internal/site	4.073s
ok  	amadan.net/rastrillo/fiesta/internal/tokens	0.040s
suite: root took 43s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m22.820000s 0m4.620000s
--- shard 1 of 48 ---
==> shard 1 of 48: make test.internal.gallery~1of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~1of3'
gotest: slice 1 of 3 of ./internal/gallery/ runs 37 of 109 test tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	71.478s
suite: test.internal.gallery~1of3 took 94s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m53.090000s 0m1.920000s
--- shard 2 of 48 ---
==> shard 2 of 48: make test.internal.gallery~2of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~2of3'
gotest: slice 2 of 3 of ./internal/gallery/ runs 36 of 109 test tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	78.130s
suite: test.internal.gallery~2of3 took 101s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m56.960000s 0m2.250000s
--- shard 3 of 48 ---
==> shard 3 of 48: make test.internal.gallery~3of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~3of3'
gotest: slice 3 of 3 of ./internal/gallery/ runs 36 of 109 test tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	69.448s
suite: test.internal.gallery~3of3 took 92s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m50.960000s 0m1.990000s
--- shard 4 of 48 ---
==> shard 4 of 48: make test.cmd.fiesta~1of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'cmd.fiesta~1of2'
gotest: slice 1 of 2 of ./cmd/fiesta/ runs 7 of 12 test tests
ok  	amadan.net/rastrillo/fiesta/cmd/fiesta	58.990s
suite: test.cmd.fiesta~1of2 took 81s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m37.320000s 0m2.870000s
--- shard 5 of 48 ---
==> shard 5 of 48: make test.cmd.fiesta~2of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'cmd.fiesta~2of2'
gotest: slice 2 of 2 of ./cmd/fiesta/ runs 5 of 12 test tests
ok  	amadan.net/rastrillo/fiesta/cmd/fiesta	59.870s
suite: test.cmd.fiesta~2of2 took 82s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m39.490000s 0m3.110000s
--- shard 6 of 48 ---
==> shard 6 of 48: make test.internal.www~1of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.www~1of2'
gotest: slice 1 of 2 of ./internal/www/ runs 11 of 25 test tests
ok  	amadan.net/rastrillo/fiesta/internal/www	66.954s
suite: test.internal.www~1of2 took 97s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m0.480000s 0m3.460000s
--- shard 7 of 48 ---
==> shard 7 of 48: make test.internal.www~2of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.www~2of2'
gotest: slice 2 of 2 of ./internal/www/ runs 14 of 25 test tests
ok  	amadan.net/rastrillo/fiesta/internal/www	66.018s
suite: test.internal.www~2of2 took 95s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m0.270000s 0m3.900000s
--- shard 8 of 48 ---
==> shard 8 of 48: make staticcheck
go run honnef.co/go/tools/cmd/staticcheck@v0.8.2 -tags browser ./...
go: downloading honnef.co/go/tools v0.8.2
go: downloading golang.org/x/tools v0.51.0
go: downloading golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678
go: downloading github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c
go: downloading golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
suite: staticcheck took 46s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m46.230000s 0m5.980000s
--- shard 9 of 48 ---
==> shard 9 of 48: make govulncheck
go run golang.org/x/vuln/cmd/govulncheck@v1.8.0 ./...
go: downloading golang.org/x/vuln v1.8.0
go: downloading golang.org/x/telemetry v0.0.0-20260908163034-4bcc4b2ee518
go: downloading golang.org/x/tools v0.50.0
go: downloading golang.org/x/mod v0.41.0
go: downloading golang.org/x/sync v0.23.0
=== Symbol Results ===

No vulnerabilities found.

Your code is affected by 0 vulnerabilities.
This scan also found 2 vulnerabilities in packages you import and 5
vulnerabilities in modules you require, but your code doesn't appear to call
these vulnerabilities.
Use '-show verbose' for more details.
suite: govulncheck took 36s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m18.100000s 0m2.400000s
--- shard 10 of 48 ---
==> shard 10 of 48: make gitleaks
go run github.com/zricethezav/gitleaks/v8@v8.30.1 git --no-banner --redact --log-opts='--full-history --diff-filter=tuxdb HEAD' .
go: downloading github.com/zricethezav/gitleaks/v8 v8.30.1
go: downloading github.com/rs/zerolog v1.33.0
go: downloading github.com/spf13/viper v1.19.0
go: downloading github.com/spf13/cobra v1.9.1
go: downloading github.com/Masterminds/sprig/v3 v3.3.0
go: downloading github.com/charmbracelet/lipgloss v0.5.0
go: downloading github.com/fatih/semgroup v1.2.0
go: downloading github.com/gitleaks/go-gitdiff v0.9.1
go: downloading github.com/h2non/filetype v1.1.3
go: downloading github.com/mholt/archives v0.1.2
go: downloading github.com/BobuSumisu/aho-corasick v1.0.3
go: downloading github.com/hashicorp/go-version v1.7.0
go: downloading golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa
go: downloading golang.org/x/sync v0.11.0
go: downloading dario.cat/mergo v1.0.1
go: downloading github.com/mitchellh/copystructure v1.2.0
go: downloading golang.org/x/crypto v0.35.0
go: downloading github.com/shopspring/decimal v1.4.0
go: downloading github.com/spf13/cast v1.7.1
go: downloading github.com/Masterminds/semver/v3 v3.3.0
go: downloading github.com/google/uuid v1.6.0
go: downloading github.com/Masterminds/goutils v1.1.1
go: downloading github.com/huandu/xstrings v1.5.0
go: downloading github.com/muesli/termenv v0.15.1
go: downloading github.com/spf13/pflag v1.0.6
go: downloading github.com/lucasb-eyer/go-colorful v1.2.0
go: downloading github.com/mattn/go-runewidth v0.0.14
go: downloading github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68
go: downloading github.com/mattn/go-colorable v0.1.14
go: downloading gopkg.in/ini.v1 v1.67.0
go: downloading github.com/sagikazarmark/slog-shim v0.1.0
go: downloading github.com/fsnotify/fsnotify v1.8.0
go: downloading github.com/mitchellh/mapstructure v1.5.0
go: downloading github.com/magiconair/properties v1.8.9
go: downloading github.com/spf13/afero v1.12.0
go: downloading github.com/pelletier/go-toml/v2 v2.2.3
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading github.com/subosito/gotenv v1.6.0
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading github.com/STARRY-S/zip v0.2.1
go: downloading github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3
go: downloading github.com/bodgit/sevenzip v1.6.0
go: downloading github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707
go: downloading github.com/klauspost/compress v1.17.11
go: downloading github.com/klauspost/pgzip v1.2.6
go: downloading github.com/minio/minlz v1.0.0
go: downloading github.com/nwaples/rardecode/v2 v2.1.0
go: downloading github.com/pierrec/lz4/v4 v4.1.21
go: downloading github.com/sorairolake/lzip-go v0.3.5
go: downloading github.com/therootcompany/xz v1.0.1
go: downloading github.com/ulikunitz/xz v0.5.12
go: downloading golang.org/x/text v0.22.0
go: downloading github.com/rivo/uniseg v0.2.0
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading golang.org/x/sys v0.30.0
go: downloading github.com/mitchellh/reflectwalk v1.0.2
go: downloading github.com/aymanbagabas/go-osc52/v2 v2.0.1
go: downloading github.com/hashicorp/go-multierror v1.1.1
go: downloading github.com/bodgit/plumbing v1.3.0
go: downloading go4.org v0.0.0-20230225012048-214862532bf5
go: downloading github.com/hashicorp/golang-lru/v2 v2.0.7
go: downloading github.com/bodgit/windows v1.0.1
go: downloading github.com/hashicorp/errwrap v1.1.0
12:32PM INF Unknown SCM platform. Use --platform to include links in findings. host=amadan.net
12:32PM INF 46 commits scanned.
12:32PM INF scanned ~9328481 bytes (9.33 MB) in 3.07s
12:32PM INF no leaks found
suite: gitleaks took 40s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m31.540000s 0m3.820000s
--- shard 11 of 48 ---
==> shard 11 of 48: make browser.internal.harness
./hack/gotest.sh browser 'internal.harness'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: ./internal/harness/ runs its 10 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/harness	7.101s
suite: browser.internal.harness took 38s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m18.590000s 0m4.000000s
--- shard 12 of 48 ---
==> shard 12 of 48: make browser.check~1of13
./hack/gotest.sh browser 'check~1of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 1 of 13 of ./check/ runs 17 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	90.828s
suite: browser.check~1of13 took 129s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m4.550000s 0m16.550000s
--- shard 13 of 48 ---
==> shard 13 of 48: make browser.check~2of13
./hack/gotest.sh browser 'check~2of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 2 of 13 of ./check/ runs 17 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	100.319s
suite: browser.check~2of13 took 139s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m9.030000s 0m18.050000s
--- shard 14 of 48 ---
==> shard 14 of 48: make browser.check~3of13
./hack/gotest.sh browser 'check~3of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 3 of 13 of ./check/ runs 16 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	91.558s
suite: browser.check~3of13 took 130s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m58.110000s 0m14.880000s
--- shard 15 of 48 ---
==> shard 15 of 48: make browser.check~4of13
./hack/gotest.sh browser 'check~4of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 4 of 13 of ./check/ runs 16 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	92.100s
suite: browser.check~4of13 took 131s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m10.420000s 0m19.700000s
--- shard 16 of 48 ---
==> shard 16 of 48: make browser.check~5of13
./hack/gotest.sh browser 'check~5of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 5 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	81.377s
suite: browser.check~5of13 took 120s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m56.140000s 0m16.630000s
--- shard 17 of 48 ---
==> shard 17 of 48: make browser.check~6of13
./hack/gotest.sh browser 'check~6of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 6 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	86.216s
suite: browser.check~6of13 took 124s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m1.590000s 0m19.170000s
--- shard 18 of 48 ---
==> shard 18 of 48: make browser.check~7of13
./hack/gotest.sh browser 'check~7of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 7 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	84.877s
suite: browser.check~7of13 took 124s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m1.240000s 0m17.010000s
--- shard 19 of 48 ---
==> shard 19 of 48: make browser.check~8of13
./hack/gotest.sh browser 'check~8of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 8 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	91.456s
suite: browser.check~8of13 took 130s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m59.450000s 0m17.280000s
--- shard 20 of 48 ---
==> shard 20 of 48: make browser.check~9of13
./hack/gotest.sh browser 'check~9of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 9 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	77.693s
suite: browser.check~9of13 took 116s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m47.440000s 0m12.960000s
--- shard 21 of 48 ---
==> shard 21 of 48: make browser.check~10of13
./hack/gotest.sh browser 'check~10of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 10 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	84.590s
suite: browser.check~10of13 took 123s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m56.320000s 0m15.240000s
--- shard 22 of 48 ---
==> shard 22 of 48: make browser.check~11of13
./hack/gotest.sh browser 'check~11of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 11 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	83.109s
suite: browser.check~11of13 took 122s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m56.350000s 0m15.560000s
--- shard 23 of 48 ---
==> shard 23 of 48: make browser.check~12of13
./hack/gotest.sh browser 'check~12of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 12 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	88.577s
suite: browser.check~12of13 took 127s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m4.000000s 0m17.850000s
--- shard 24 of 48 ---
==> shard 24 of 48: make browser.check~13of13
./hack/gotest.sh browser 'check~13of13'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 13 of 13 of ./check/ runs 18 of 228 browser tests
ok  	amadan.net/rastrillo/fiesta/check	83.233s
suite: browser.check~13of13 took 122s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m55.950000s 0m15.000000s
--- shard 25 of 48 ---
==> shard 25 of 48: make browser.internal.gallery~1of18
./hack/gotest.sh browser 'internal.gallery~1of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 1 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	41.547s
suite: browser.internal.gallery~1of18 took 79s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m33.640000s 0m6.250000s
--- shard 26 of 48 ---
==> shard 26 of 48: make browser.internal.gallery~2of18
./hack/gotest.sh browser 'internal.gallery~2of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 2 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	53.334s
suite: browser.internal.gallery~2of18 took 90s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m34.470000s 0m6.160000s
--- shard 27 of 48 ---
==> shard 27 of 48: make browser.internal.gallery~3of18
./hack/gotest.sh browser 'internal.gallery~3of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 3 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	60.306s
suite: browser.internal.gallery~3of18 took 98s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m33.030000s 0m6.170000s
--- shard 28 of 48 ---
==> shard 28 of 48: make browser.internal.gallery~4of18
./hack/gotest.sh browser 'internal.gallery~4of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 4 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	50.935s
suite: browser.internal.gallery~4of18 took 87s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m33.330000s 0m5.830000s
--- shard 29 of 48 ---
==> shard 29 of 48: make browser.internal.gallery~5of18
./hack/gotest.sh browser 'internal.gallery~5of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 5 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	64.527s
suite: browser.internal.gallery~5of18 took 102s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.330000s 0m8.350000s
--- shard 30 of 48 ---
==> shard 30 of 48: make browser.internal.gallery~6of18
./hack/gotest.sh browser 'internal.gallery~6of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 6 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	59.298s
suite: browser.internal.gallery~6of18 took 97s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m36.230000s 0m7.060000s
--- shard 31 of 48 ---
==> shard 31 of 48: make browser.internal.gallery~7of18
./hack/gotest.sh browser 'internal.gallery~7of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 7 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	57.011s
suite: browser.internal.gallery~7of18 took 94s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m32.340000s 0m5.520000s
--- shard 32 of 48 ---
==> shard 32 of 48: make browser.internal.gallery~8of18
./hack/gotest.sh browser 'internal.gallery~8of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 8 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	61.518s
suite: browser.internal.gallery~8of18 took 99s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m37.530000s 0m7.690000s
--- shard 33 of 48 ---
==> shard 33 of 48: make browser.internal.gallery~9of18
./hack/gotest.sh browser 'internal.gallery~9of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 9 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	70.787s
suite: browser.internal.gallery~9of18 took 107s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m43.110000s 0m10.720000s
--- shard 34 of 48 ---
==> shard 34 of 48: make browser.internal.gallery~10of18
./hack/gotest.sh browser 'internal.gallery~10of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 10 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	65.506s
suite: browser.internal.gallery~10of18 took 103s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m33.370000s 0m5.760000s
--- shard 35 of 48 ---
==> shard 35 of 48: make browser.internal.gallery~11of18
./hack/gotest.sh browser 'internal.gallery~11of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 11 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	65.595s
suite: browser.internal.gallery~11of18 took 103s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m33.160000s 0m5.660000s
--- shard 36 of 48 ---
==> shard 36 of 48: make browser.internal.gallery~12of18
./hack/gotest.sh browser 'internal.gallery~12of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 12 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	69.021s
suite: browser.internal.gallery~12of18 took 106s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m37.360000s 0m7.670000s
--- shard 37 of 48 ---
==> shard 37 of 48: make browser.internal.gallery~13of18
./hack/gotest.sh browser 'internal.gallery~13of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 13 of 18 of ./internal/gallery/ runs 4 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	69.143s
suite: browser.internal.gallery~13of18 took 107s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.510000s 0m8.440000s
--- shard 38 of 48 ---
==> shard 38 of 48: make browser.internal.gallery~14of18
./hack/gotest.sh browser 'internal.gallery~14of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 14 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	71.230s
suite: browser.internal.gallery~14of18 took 109s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.390000s 0m8.200000s
--- shard 39 of 48 ---
==> shard 39 of 48: make browser.internal.gallery~15of18
./hack/gotest.sh browser 'internal.gallery~15of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 15 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	73.244s
suite: browser.internal.gallery~15of18 took 110s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m39.740000s 0m8.790000s
--- shard 40 of 48 ---
==> shard 40 of 48: make browser.internal.gallery~16of18
./hack/gotest.sh browser 'internal.gallery~16of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 16 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	67.901s
suite: browser.internal.gallery~16of18 took 105s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m36.360000s 0m7.720000s
--- shard 41 of 48 ---
==> shard 41 of 48: make browser.internal.gallery~17of18
./hack/gotest.sh browser 'internal.gallery~17of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 17 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	70.793s
suite: browser.internal.gallery~17of18 took 108s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.180000s 0m8.370000s
--- shard 42 of 48 ---
==> shard 42 of 48: make browser.internal.gallery~18of18
./hack/gotest.sh browser 'internal.gallery~18of18'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 18 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	72.377s
suite: browser.internal.gallery~18of18 took 110s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.430000s 0m9.120000s
--- shard 43 of 48 ---
==> shard 43 of 48: make browser.internal.gallery.history
./hack/gotest.sh browser 'internal.gallery.history'
gotest: on ip-172-31-19-131, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: ./internal/gallery/history/ runs its 3 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery/history	36.280s
suite: browser.internal.gallery.history took 69s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m41.340000s 0m5.030000s
--- shard 44 of 48 ---
==> shard 44 of 48: make browser.internal.www~1of4
./hack/gotest.sh browser 'internal.www~1of4'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 1 of 4 of ./internal/www/ runs 5 of 24 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/www	81.832s
suite: browser.internal.www~1of4 took 117s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m58.330000s 0m5.650000s
--- shard 45 of 48 ---
==> shard 45 of 48: make browser.internal.www~2of4
./hack/gotest.sh browser 'internal.www~2of4'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 2 of 4 of ./internal/www/ runs 7 of 24 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/www	82.391s
suite: browser.internal.www~2of4 took 118s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m13.840000s 0m6.340000s
--- shard 46 of 48 ---
==> shard 46 of 48: make browser.internal.www~3of4
./hack/gotest.sh browser 'internal.www~3of4'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 3 of 4 of ./internal/www/ runs 6 of 24 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/www	84.612s
suite: browser.internal.www~3of4 took 120s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m13.500000s 0m6.170000s
--- shard 47 of 48 ---
==> shard 47 of 48: make browser.internal.www~4of4
./hack/gotest.sh browser 'internal.www~4of4'
gotest: on ip-172-31-19-131, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 4 of 4 of ./internal/www/ runs 6 of 24 browser tests
ok  	amadan.net/rastrillo/fiesta/internal/www	80.887s
suite: browser.internal.www~4of4 took 115s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m7.260000s 0m6.430000s
diff --git a/Makefile b/Makefile
index 92147ce..4f40e38 100644
--- a/Makefile
+++ b/Makefile
@@ -285,11 +285,15 @@ site: | $(BIN)/tmp
# an && chain came out 0 when the export failed, so a bad SITE_REF
# passed with no link checked. The archive is written to a file rather
# than piped, so a failing git archive is not hidden behind tar's
-# status.
+# status. The trap keeps the status it was given, and turns a pass into
+# a failure when the tree cannot be removed: a trap whose own status is
+# dropped reported success with a checked-out site left in TMPDIR.
SITE_REF ?= HEAD
site-links-published: | $(BIN)/tmp
@d=$$(mktemp -d) || exit 1; \
- trap 'rm -rf "$$d"' EXIT; trap 'exit 130' INT TERM; \
+ trap 's=$$?; rm -rf "$$d" || { echo "site-links-published: could not remove $$d"; \
+ [ $$s -ne 0 ] || s=1; }; exit $$s' EXIT; \
+ trap 'exit 130' INT TERM; \
git archive --format=tar -o "$$d/site.tar" '$(SITE_REF)' || { \
echo "site-links-published: git archive could not export $(SITE_REF)"; exit 1; }; \
mkdir "$$d/tree" && tar -x -C "$$d/tree" -f "$$d/site.tar" || { \