Files
Margulan Daribayev e52d064905 feat: watch slims parallel-testing clones as they boot (#43)
* feat: watch slims parallel-testing clones as they boot

xcodebuild parallel testing creates a stock clone per worker in its own
device set and deletes them per run; disable overrides do not survive
simctl clone, so there is no device to pre-slim. watch polls the device
sets and applies a no-reboot slim to each simulator once it boots, then
leaves it alone, reusing EnableSlimNoReboot from #42.

Answers the ephemeral-clone case raised in #41.

* fix: watch re-slims rebooted clones and retries failed slims

Review fixes on the watch scan loop:

- Drop a UDID from seen when a scan finds it non-Booted. Below iOS 18.5 the
  no-reboot slim ends with the boot session, so a clone that booted again came
  back stock and was skipped for the rest of the run.
- Drop a UDID from seen when its slim fails, so the next scan retries it
  instead of leaving that clone stock behind one stderr line.
- Wait for the in-flight slim goroutines before Watch returns, so an importer
  holds no goroutine past the call.
- Pass the slim a Reporter that prefixes each line with the UDID, so the
  per-device progress reaches the caller.

seen is now mutated by the scan loop and by the slim goroutines, so it moves
into a watcher behind a mutex. go test -race is green.
2026-09-16 22:28:54 +02:00
..