Skip to content

The new cross-platform E2E harness reports failed commands as PASS and is not wired into CI #358

Description

@alpCaner

Found while reviewing

PR #352, feat/v06-batch at 1cab240df85d5896c5390697c069720ff2bb24d3.

A real run of the newly committed scripts/e2e-full.sh ended with:

=== Linux: 23 passed, 0 failed ===

but at least two named assertions did not prove what they claimed.

False-green flash leg

jrun marks a command PASS when stdout is parseable JSON and stderr is empty. It never checks RC, ok, or exitCode.

The script creates/builds blinky-e2e, then invokes:

tan flash --dry-run --format json

from the parent directory, without --project blinky-e2e. The command actually returned:

{
  "command": "flash",
  "ok": false,
  "exitCode": 1,
  "project": {"root": ".../proj", "boardYaml": null},
  "issues": [{"code": "flash.manifest-not-found", "severity": "error"}]
}

The harness printed PASS flash: one envelope, 0-byte stderr (exit 1) and counted it toward 23/0.

False-green root equality leg

The section named doctor and bootstrap resolve the SAME root only tests that both strings are nonempty. The observed run printed different values:

doctor=.../proj/alp-sdk
bootstrap=.../proj/alp-workspace/alp-sdk
PASS #322: both resolve an SDK

Isolation and CI problems

  • scripts/e2e-linux-freeze.sh hardcodes /home/caner/tan-cli, fetches/checks out the branch there, and therefore tests a different checkout when invoked from an isolated worktree.
  • Both scripts commit real /home/caner and /Users/Caner paths. The repository's own leak gate fails on six occurrences.
  • The full E2E scripts are not referenced by any workflow; native Windows/macOS jobs run unit/freeze smoke only, not this bootstrap/build E2E.
  • The SDK clone is an unpinned shallow clone of the current default branch, so a result cannot be reproduced later from the tan SHA alone.

Acceptance criteria

  • jrun accepts an explicit expected exit/ok verdict and fails on any mismatch.
  • Flash targets the project that was built and asserts the expected plan/verdict.
  • The root-equality assertion compares the intended values rather than non-emptiness.
  • No developer-specific paths; the helper operates on its current checkout/arguments.
  • The SDK revision is explicit and recorded.
  • Full E2E is wired on the native platforms claimed, or the claim is scoped to the platforms actually run.
  • test_no_leaked_host_paths.py passes.

Related: PR #352.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingciCI workflows, gates and test wiringpython-portRust-to-Python port of the tan command surfacerelease-blockerBlocks the next release; must land before the tag

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions