Skip to content

Run CI checks on Windows, macOS, and Linux - #9

Open
felipebalbi wants to merge 4 commits into
OpenDevicePartnership:mainfrom
felipebalbi:ci
Open

felipebalbi wants to merge 4 commits into
OpenDevicePartnership:mainfrom
felipebalbi:ci

Conversation

@felipebalbi

Copy link
Copy Markdown

Summary

Follow up on the cross-platform CI coverage requested in #8.

  • Run the existing formatting, build, Clippy, and test checks on Linux, macOS, and Windows, with matrix fail-fast disabled.
  • Avoid passing Unix rpath flags to the Windows linker, eliminating MSVC's LNK4044 warning.
  • Normalize the sysroot as a literal path rather than a regex, fixing the Windows UI-test harness panic.
  • Use platform-specific snapshots for the two tests that inspect OS-dependent standard-library process internals, preserving the existing Linux expectations.

The three portability fixes are separate commits preceding the workflow change. Dependency-policy checks and PR-comment workflows remain Linux-only.

Validation

All existing check-job commands passed locally on Windows without warnings, using RUSTFLAGS="-D warnings", CARGO_INCREMENTAL=0, and CARGO_PROFILE_DEV_DEBUG=0:

  • cargo fetch --locked
  • cargo fmt --all --check
  • cargo build --locked
  • cargo build --locked --tests
  • cargo clippy --locked
  • cargo test --locked — 10 UI tests and 3 Cargo tests passed; other platforms' revisions were correctly ignored.

The updated check workflow also passes actionlint.

Windows snapshots were generated natively. macOS snapshots were generated by cross-target analysis for aarch64-apple-darwin on Windows; native macOS and Linux verification remains for CI. Linux snapshot contents are unchanged.

MSVC ignores the Unix linker option and emits LNK4044 warnings.
Skip rpath configuration for Windows targets, where rustc DLLs are
found through PATH, while preserving Unix runtime library lookup.

Assisted-by: OpenCode:GPT-6.1-Sol
Treat the sysroot as a literal path when normalizing UI diagnostics.
Windows path separators otherwise become regex escapes and panic the
test harness before tests can run. Use the existing path matcher for
both stderr and stdout without adding another dependency.

Assisted-by: OpenCode:GPT-6.1-Sol
Standard-library process internals produce different call graphs on
each operating system. Preserve the Linux expectations and select
native platform snapshots with UI test revisions rather than skipping
these tests or weakening their diagnostics.

Add Windows expectations from native runs and macOS expectations from
analysis targeting aarch64-apple-darwin. Parse Cargo fixture comments
as TOML comments so the same revision mechanism works in both suites.

Assisted-by: OpenCode:GPT-6.1-Sol
Exercise native builds, Clippy, and tests on all three platforms to
catch platform-specific regressions such as the linker issue in OpenDevicePartnership#8.
Keep matrix jobs independent so one failure does not cancel coverage
on the other operating systems.

Assisted-by: OpenCode:GPT-6.1-Sol
@felipebalbi
felipebalbi marked this pull request as ready for review November 10, 2026 18:06
@felipebalbi
felipebalbi requested a review from a team as a code owner November 10, 2026 18:06
@felipebalbi
felipebalbi requested review from dymk, kat-perez, kurtjd, maxperga-msft and rogurr and a balanced review from Copilot November 10, 2026 18:06
@felipebalbi
felipebalbi enabled auto-merge (squash) November 10, 2026 18:09
@felipebalbi felipebalbi self-assigned this Nov 10, 2026
@felipebalbi felipebalbi added this to EC Nov 10, 2026
@felipebalbi felipebalbi moved this to In Progress in EC Nov 10, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues are reported for the cross-platform CI and portability changes.

No open issues 🎉

What changed in this PR

This PR extends existing CI checks to Linux, macOS, and Windows, following up on #8. It adds portability fixes for linking and the UI-test harness, plus platform-specific expectations for tests that inspect standard-library process internals.

Changes:

  • Run formatting, builds, Clippy, and tests across all three operating systems with matrix fail-fast disabled.
  • Skip Unix rpath flags on Windows and normalize sysroot paths literally rather than as regular expressions.
  • Add OS-specific test revisions and snapshots, preserving Linux expectations and documenting snapshot updates.
File Description
tests/​ui/​large_std_process.rs Selects OS-specific test revisions.
tests/​ui/​large_std_process.host_windows.stderr Adds Windows process diagnostic expectations.
tests/​ui/​large_std_process.host_macos.stderr Adds macOS process diagnostic expectations.
tests/​ui/​large_std_process.host_linux.stderr Preserves existing Linux diagnostic expectations.
tests/​ui-cargo/​fail-blacklist/​Cargo.toml Selects OS-specific Cargo test revisions.
tests/​ui-cargo/​fail-blacklist/​Cargo.host_windows.stderr Adds Windows blacklist diagnostic expectations.
tests/​ui-cargo/​fail-blacklist/​Cargo.host_macos.stderr Adds macOS blacklist diagnostic expectations.
tests/​ui-cargo/​fail-blacklist/​Cargo.host_linux.stderr Preserves existing Linux blacklist expectations.
tests/​compile-test.rs Uses literal sysroot normalization and enables Cargo test directives.
README.md Documents platform-specific snapshot maintenance.
build.rs Skips Unix rpath configuration on Windows.
.github/​workflows/​check.yml Adds the three-OS check matrix with fail-fast disabled.

Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

4 participants