Skip to content

test(esp32): gate the framework-libs warm archive build on POSIX - #1891

Closed
zackees wants to merge 1 commit into
mainfrom
agent/fix-fwlibs-windows-test
Closed

zackees wants to merge 1 commit into
mainfrom
agent/fix-fwlibs-windows-test

Conversation

@zackees

@zackees zackees commented Nov 4, 2026

Copy link
Copy Markdown
Member

Why

full / windows / Check (windows-latest) fails on main (run 41795945519, surfaced by PR #1633's full matrix):

esp32::orchestrator::framework_libs::tests::archive_override_bypasses_cached_framework_archive_and_links_all_objects
panicked at framework_libs_tests.rs:322:5
  left: []
 right: ["libfs.a"]

Fixture::build shells out to the fixture's fake ar, which is installed as a #!/bin/sh script (install_fake_ar). Windows cannot execute it, so the warm build returns no archives. The two sibling tests that call Fixture::build (finish_keeps_selection_order_and_tolerates_failures, pending_libraries_share_one_gate) already return early on Windows; this one was missed in #1887.

Fix

Gate only the warm archive build on !is_windows(). The rest of the test — archive_override = Some(false) planning a Compile { archive: false } entry, then compile + finish returning the two loose .o inputs — uses FakeBackend and never invokes ar, so it keeps running on every platform. No production code changes.

Verification

  • Reproduced the exact CI symptom locally by removing the fake ar's executable bit (the Windows condition): left: [] / right: ["libfs.a"], 0 passed / 1 failed.
  • With the gate: soldr cargo test -p fbuild-build-esp --lib framework_libs → 8 passed; 0 failed.
  • soldr cargo fmt --all -- --check rc 0; ci/check_test_layout.py ok.
  • soldr cargo clippy -p fbuild-build-esp --all-targets -- -D warnings stops on a pre-existing fbuild-core/src/usb/data.rs:193 unfulfilled #[expect(clippy::cognitive_complexity)] (untouched by this diff; the known local-vs-CI cognitive_complexity disagreement). CI's linux / Check is the authority.

archive_override_bypasses_cached_framework_archive_and_links_all_objects
called Fixture::build, whose fake `ar` is a #!/bin/sh script. On Windows
that script cannot execute, so the warm build produced no archives and the
test failed with `left: []` in the full / windows / Check job (run
41795945519). Its two sibling tests that call Fixture::build already return
early on Windows; this one did not.

Gate only the warm build and keep the plan/compile/finish assertions running
on every platform: that half uses FakeBackend and never invokes `ar`.
@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@zackees

zackees commented Nov 4, 2026

Copy link
Copy Markdown
Member Author

Superseded by #1888 (8f972a78, merged 09:17Z), which landed while this PR was open and fixes the same Windows failure in the same test — and does it better: instead of skipping the warm build on Windows, it primes the archive cache through plan() + a written libfs.a (no host shell at all) and additionally asserts the direct-object path works with ar_path pointing at a missing binary.

Closing as redundant. The diagnosis here was the same: Fixture::build shells out to the fixture's fake ar, a #!/bin/sh script that Windows cannot execute, so the warm build returned [].

@zackees zackees closed this Nov 4, 2026
@zackees
zackees deleted the agent/fix-fwlibs-windows-test branch November 4, 2026 09:41
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.

1 participant