Skip to content

What the compiled run did not run - #973

Merged
onatozmenn merged 1 commit into
mainfrom
what-the-compiled-run-did-not-run
Aug 10, 2026
Merged

What the compiled run did not run#973
onatozmenn merged 1 commit into
mainfrom
what-the-compiled-run-did-not-run

Conversation

@onatozmenn

Copy link
Copy Markdown
Collaborator
deed test examples             138 passed, 0 failed
deed test examples --compiled  111 passed, 0 failed

Twenty-seven blocks are missing from the second line and nothing said so. Both outputs read like a complete run, and the one on the right is the one somebody reaches for to find out whether the backend agrees with the interpreter.

The same sentence hid the harder case. A file the backend refuses outright printed no tests found in the compiled backend and exited zero — word for word what a file with no tests in it prints. Twice this week I read that line and believed it.

What changes

Skipping is right and stays: the backend compiles a subset of the language on purpose, and deed build has always named what it could not take. What was wrong is that three different facts arrived as one silence, and one of them was the absence of an answer rather than an answer.

deed_mir::Program now carries skipped_tests, so a block that fails to lower keeps its name and its reason instead of dropping them at Err(_). The runner prints all three cases the same way:

111 passed, 0 failed
6 not compiled, so they were not run
  examples/kv_store.deed: a literal missing a field is not lowered yet
  examples/logs.deed: a literal missing a field is not lowered yet
  examples/strings.deed: test "trimming": `?` in a function that does not answer with a Result is not lowered yet
  examples/transfer.deed: test "moves the money and conserves the total": a shorthand field naming something that is not a local is not lowered yet
  examples/transfer.deed: test "refuses to overdraw and leaves the ledger alone": a shorthand field naming something that is not a local is not lowered yet
  examples/transfer.deed: test "refuses a currency mismatch and leaves the ledger alone": a shorthand field naming something that is not a local is not lowered yet

Reading that back is the point of the change: three of the six are in the running example, and the two shapes behind them — a literal missing a field, and a shorthand field naming something that is not a local — are named for the first time.

The exit code does not move. "The backend compiles a subset" is a written decision and this is not the change that reopens it. What was missing was the number, not the failure.

Held by

corpus_backend.rs asked about modules and never about the test blocks inside them, which is how twenty-seven of them went unnoticed. It asks now, and pins the count in both directions: fewer is the backend catching up and worth reading, more is a shape that used to compile and no longer does.

Two CLI tests, one per case: a named block with its reason, and a refused file that no longer claims to have nothing in it.

Break-verified three ways, each failing by name: dropping the reason in the lowering, silencing the report, and each CLI case on its own.

Measured and left alone

The compiled path runs no property tests at all, which is the rest of the difference between 138 and 111. That is a missing runner rather than a silent skip, so it is not counted here.

    deed test examples             138 passed, 0 failed
    deed test examples --compiled  111 passed, 0 failed

Twenty-seven blocks are missing from the second line and nothing said so. Both
outputs read like a complete run, and the one on the right is the one somebody
reaches for to find out whether the backend agrees with the interpreter.

The same sentence hid the harder case. A file the backend refuses outright
printed `no tests found in the compiled backend` and exited zero, which is
word for word what a file with no tests in it prints. Twice this week I read
that line and believed it.

Skipping is right and stays: the backend compiles a subset of the language on
purpose, and `deed build` has always named what it could not take. What was
wrong is that three different facts arrived as one silence, and one of them was
the absence of an answer rather than an answer.

`deed_mir::Program` now carries `skipped_tests`, so a block that fails to lower
keeps its name and its reason instead of dropping them at `Err(_)`. The runner
prints all three cases the same way:

    111 passed, 0 failed
    6 not compiled, so they were not run
      examples/kv_store.deed: a literal missing a field is not lowered yet
      examples/transfer.deed: test "moves the money and conserves the total": a
        shorthand field naming something that is not a local is not lowered yet

Reading it back is the point of the change: three of the six are in the running
example, and the two shapes behind them are named for the first time.

The exit code does not move. "The backend compiles a subset" is a written
decision and this is not the change that reopens it; what was missing was the
number, not the failure.

`corpus_backend.rs` asked about modules and never about the `test` blocks
inside them, which is how twenty-seven of them went unnoticed. It asks now, and
pins the count in both directions: fewer is the backend catching up and worth
reading, more is a shape that used to compile and no longer does.

Measured and left alone: the compiled path runs no property tests at all, which
is the rest of the difference between the two numbers. That is a missing
runner rather than a silent skip, so it is not counted here.

Break-verified three ways, each failing by name: dropping the reason in the
lowering, silencing the report, and each of the two CLI cases on its own.
@onatozmenn
onatozmenn merged commit 609e876 into main Aug 10, 2026
10 checks passed
@onatozmenn
onatozmenn deleted the what-the-compiled-run-did-not-run branch August 10, 2026 20:10
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