Preserve native compiler failures in the Windows ARM64 PowerShell smoke step
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Problem and evidence
The native Windows ARM64 smoke step invokes `wavec build` and immediately reads `test1.o`, without checking the native command exit code. In #502 the visible failure is consequently a `ReadAllBytes` exception for a missing object, and the compiler exit status is absent from the log.
[Failing native ARM64 job](https://github.com/wavefnd/Wave/actions/runs/34120708675/job/101737847925)
Relevant code at `e204bbebbbede0086fbb670d43a65b9cf38f0231`: `.github/workflows/rust.yml:933-950`, particularly the `& $compiler` invocations and object read. `$ErrorActionPreference = "Stop"` does not provide the explicit native-command status handling this step needs.
The log proves the object is absent; it does **not** record enough information to assign a compiler exit code or root cause to this particular command. Native access violations are already tracked in #493 and should stay there.
## Scope
Capture/check the native exit code immediately after each compiler invocation in this smoke step, including version/default-target commands, and stop with the command/phase and exit status before attempting artifact inspection. Keep compiler stdout/stderr visible. When compilation succeeds, still validate artifact existence and ARM64 COFF/PE machine types.
## Acceptance
- [ ] A fake native command that exits nonzero with no output causes an actionable failure before `ReadAllBytes`.
- [ ] A zero-exit command that produces no object reports a distinct missing-artifact failure.
- [ ] Successful compiler and ARM64 artifact checks retain the current behavior.
- [ ] Validation uses PowerShell; a tiny fake native process is sufficient for the failure paths and requires no LLVM build.
This is a good first issue for CI error reporting. It must not be presented as fixing the underlying compiler crash in #493.
Contributor guide
Research direction
Read .github/workflows/rust.yml:933-950, especially each $compiler invocation and the test1.o inspection. Start by running the PowerShell smoke-step logic with a tiny fake native process covering nonzero and zero-exit/no-object cases. Done means failures identify the command or phase and exit status before ReadAllBytes, while successful ARM64 COFF/PE checks retain their current behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, powershell
- Domain
- ci-cd, testing
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100