Repository navigation
Fix macOS desktop integration test failures (exit 120) - #1542
Conversation
macOS desktop tests: all testapps passed but desktop_tester.py exited with code 120. The backgrounded Firestore emulator (Node) shares the step's stdout pipe and puts it into non-blocking mode, so the very large 'Test result' log write fails with EAGAIN, output after that is dropped, and Python exits 120 when it cannot flush stdio at shutdown. Redirect the emulator output to a file and bound the inline log dump on all platforms (it was already truncated on Linux for the same symptom). tvOS simulator: the tvOS 26.4.1 runtime does not exist on the macos-26 image (only 26.2/26.4/26.5/27.0). _create_and_boot_simulator already falls back to an available version, but never returned it, so the gameloop xcodebuild still used the original -destination OS and failed. Use 26.4 and propagate the actual device_os back to the caller.
|
Verification run (same packaged SDK as last night's nightly, run 38697766733; macOS desktop test job passed): https://github.com/firebase/firebase-unity-sdk/actions/runs/38758220469 |
There was a problem hiding this comment.
Code Review
This pull request updates the log truncation logic in desktop_tester.py to bound inline log dumps to 64,000 characters across all platforms, preventing CI stdout pipe failures. It also updates the tvOS simulator version in print_matrix_configuration.py to 26.4. Additionally, test_simulator.py is updated so that _create_and_boot_simulator returns both the device ID and the actual device OS version used, updating its callers and docstring accordingly. There are no review comments to address, and we have no further feedback to provide.
Description
The nightly Integration tests have been failing on the macOS desktop test jobs with exit code 120 even though all 12 testapps pass.
Root cause:
firebase emulators:start --only firestore &(Node) shares the step's stdout/stderr pipe withdesktop_tester.py. Node switches the inherited pipe to non-blocking mode (O_NONBLOCK), so largelogging.info("Test result: %s", self.logs)writes fail withEAGAINwhen the 64 KB pipe buffer fills. Everything after that is dropped (Finished running tests.never appears in the failing logs) and Python exits 120 when it cannot flush stdio at interpreter shutdown.firestore-emulator.login both the Desktop and Playmode integration test steps so the step pipe remains blocking for Python.Failing run for reference: https://github.com/firebase/firebase-unity-sdk/actions/runs/38708106497
Testing
Finished running tests.and12 TESTAPPS TOTAL: 12 PASSES, 0 FAILURES, 0 ERRORS).Type of Change
Place an
xthe applicable box: