Cross-Platform Fleet Testing
Run the full test suite across the cross-platform fleet (Linux host, macOS, and Windows) to verify compatibility, platform gates, and asynchronous I/O behavior.
When to Use
- After modifying cross-platform code, platform-specific
#[cfg(...)]gates, or PTY logic. - Before merging pull requests or finalizing release milestones.
- When the user runs
/test-cross-platformor asks to test across platforms/fleet.
Fleet Overview
| Platform | Host Address | Shell | Repository Path | Test Runner |
|---|---|---|---|---|
| Linux | Local host (nazmul-mobile.local) |
bash / fish |
~/github/roc |
./check.fish --test |
| macOS | nazmul-mac.local |
fish |
~/github/roc |
./check.fish --test |
| Windows | nazmul-win.local |
nu (Nushell) |
github/roc |
cargo test |
Workflow
Step 1: Fleet Synchronization
Synchronize the local repository to all remote fleet machines using scp:
Windows:
scp -r ~/github/roc/. nazmul-win.local:github/roc/macOS:
scp -r ~/github/roc/. nazmul-mac.local:github/roc/
Both sync operations can run in parallel.
Step 2: Concurrent Test Execution
Run the full test suite across all three platforms concurrently using non-blocking background tasks (run_command with async tasks) so the conversation is not frozen:
Linux (Local):
./check.fish --test(Alternatively:
cargo test --workspace)macOS:
ssh nazmul-mac.local "cd ~/github/roc && ./check.fish --test"(Alternatively:
ssh nazmul-mac.local "cd ~/github/roc && cargo test")Windows:
ssh nazmul-win.local "cd github/roc; cargo test"
Step 3: Targeted Subsystem Testing (Optional)
When testing specific subsystems (like core::pty) during active refactoring rather than the entire workspace:
- Linux:
cargo test -p r3bl_tui core::pty - macOS:
ssh nazmul-mac.local "cd ~/github/roc && cargo test -p r3bl_tui core::pty" - Windows:
ssh nazmul-win.local "cd github/roc; cargo test -p r3bl_tui core::pty"
Step 4: Result Aggregation & Reporting
- Wait for all three runs to conclude (via reactive task completion messages).
- Extract summary lines (
test result: ok. <X> passed; <Y> failed; ...). - Present results in a markdown summary table:
| Platform | Host / Machine | Result | Tests Passed | Tests Failed | Duration |
|---|---|---|---|---|---|
| Linux | nazmul-mobile.local |
PASSED | 53 | 0 | 0.01s |
| macOS | nazmul-mac.local |
PASSED | 53 | 0 | 0.02s |
| Windows | nazmul-win.local |
PASSED | 55 | 0 | 0.46s |
- If any test fails, extract the failure diagnostics and failing test names for triage.
- Emit attention beep signal:
fish -c "beep"