| M | test/ | 3 | ++- |
| M | test/ | 3 | ++- |
| M | test/ | 3 | ++- |
@@ -44,7 +44,8 @@ done
4444 4545 # The mirror (a stand-in rclone that lists what it was given) sees none of it.4646 mkdir "$T/bin"47-printf '#!/bin/sh\nfind "$2" >>"%s/rclone.saw"\n' "$T" >"$T/bin/rclone"47+# Each run's listing whole, appended at once: the scenario waits for the file.48+printf '#!/bin/sh\nfind "$2" >"%s/rclone.$$" && cat "%s/rclone.$$" >>"%s/rclone.saw" && rm "%s/rclone.$$"\n' "$T" "$T" "$T" "$T" >"$T/bin/rclone"4849 chmod +x "$T/bin/rclone"4950 PATH="$T/bin:$PATH" FORGE_MIRROR_S3=https://r2.test/pages ok forge mirror5051 has "$T/rclone.saw" '/dami/open/insights/insights\.json$'@@ -31,7 +31,8 @@ eq "$(ls "$w/hosts" | sort | tr '\n' ' ')" "greet-docs-dami greet-docs-dami--dam
3131 3232 # The mirror's sync (a stand-in rclone) runs after the flip, and sees what is left.3333 mkdir "$T/bin"34-printf '#!/bin/sh\nls "$2/dami" >"%s/rclone.saw"\n' "$T" >"$T/bin/rclone"34+# Written whole, then renamed: the scenario waits for the file to appear.35+printf '#!/bin/sh\nls "$2/dami" >"%s/rclone.tmp" && mv "%s/rclone.tmp" "%s/rclone.saw"\n' "$T" "$T" "$T" >"$T/bin/rclone"3536 chmod +x "$T/bin/rclone"3637 export PATH="$T/bin:$PATH" FORGE_MIRROR_S3=https://r2.test/pages FORGE_MIRROR_DELAY=03738 sync_builds@@ -75,7 +75,8 @@ same -H "Authorization: Bearer $elsewhere"
7575 7676 # The mirror (a stand-in rclone that lists what it was given) sees none of it.7777 mkdir "$T/bin"78-printf '#!/bin/sh\nfind "$2" >>"%s/rclone.saw"\n' "$T" >"$T/bin/rclone"78+# Each run's listing whole, appended at once: the scenario waits for the file.79+printf '#!/bin/sh\nfind "$2" >"%s/rclone.$$" && cat "%s/rclone.$$" >>"%s/rclone.saw" && rm "%s/rclone.$$"\n' "$T" "$T" "$T" "$T" >"$T/bin/rclone"7980 chmod +x "$T/bin/rclone"8081 PATH="$T/bin:$PATH" FORGE_MIRROR_S3=https://r2.test/pages ok forge mirror8182 has "$T/rclone.saw" '/index\.html$'