Skip to content

Fix macOS desktop integration test failures (exit 120) - #1542

Merged
AustinBenoit merged 2 commits into
mainfrom
am-fix-nightly-integration-tests
Oct 16, 2026
Merged

AustinBenoit merged 2 commits into
mainfrom
am-fix-nightly-integration-tests

Conversation

@AustinBenoit

@AustinBenoit AustinBenoit commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Description

Provide details of the change, and generalize the change in the PR title above.

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 with desktop_tester.py. Node switches the inherited pipe to non-blocking mode (O_NONBLOCK), so large logging.info("Test result: %s", self.logs) writes fail with EAGAIN when 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.
  • Fix: redirect the backgrounded Firestore emulator's output to firestore-emulator.log in 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

Describe how you've tested these changes.


Type of Change

Place an x the applicable box:

  • Bug fix. Add the issue # below if applicable.
  • New feature. A non-breaking change which adds functionality.
  • Other, such as a build process or documentation change.

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.
@AustinBenoit

AustinBenoit commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor Author

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

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@AustinBenoit AustinBenoit changed the title Fix nightly integration test failures on macOS (exit 120) and tvOS simulator Fix macOS desktop integration test failures (exit 120) Oct 15, 2026
@AustinBenoit
AustinBenoit merged commit 452d2de into main Oct 16, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants