Skip to content

testscript: add Params.ContinueOnError#192

Merged
rogpeppe merged 1 commit intomasterfrom
034-fix-continue
Jan 9, 2023
Merged

testscript: add Params.ContinueOnError#192
rogpeppe merged 1 commit intomasterfrom
034-fix-continue

Conversation

@rogpeppe
Copy link
Owner

@rogpeppe rogpeppe commented Jan 6, 2023

This fixes a few issues around the existing testscript -continue flag. Notably:

  • causing T.Fatal and T.FailNow to return normally meant that some logic inside the testscript package that was expecting the old behaviour would fail to work correctly (for example, a non-existent command would cause a panic)
  • the logging logic was erroneously assuming that if we got to the end of a script, all sections had passed therefore we could omit the logged messages.

We fix the above by making "continue on error" a first class part of testscript.Params, so the testscript logic actually knows about it.

To test it properly, we need a couple of hacks to make the output predictable. Unfortunately, those hacks are internal only, so it's hard to add similar tests to the cmd/testscript command to end-to-end test that, but the existing test should act as sufficient "smoke test" that the continue logic is wired up OK.

@rogpeppe rogpeppe requested a review from mvdan January 6, 2023 11:40
This fixes a few issues around the existing `testscript -continue` flag.
Notably:

- causing `T.Fatal` and `T.FailNow` to return normally meant that some logic inside
the testscript package that was expecting the old behaviour would fail to
work correctly (for example, a non-existent command would cause a panic)
- the logging logic was erroneously assuming that if we got to the end of a script, all
sections had passed therefore we could omit the logged messages.

We fix the above by making "continue on error" a first class part of `testscript.Params`,
so the testscript logic actually knows about it.

To test it properly, we need a couple of hacks to make the output predictable.
Unfortunately, those hacks are internal only, so it's hard to add similar
tests to the `cmd/testscript` command to end-to-end test that, but the existing
test should act as sufficient "smoke test" that the continue logic is wired up
OK.
Copy link
Collaborator

@mvdan mvdan left a comment

Choose a reason for hiding this comment

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

globals modified by tests always make me worry a bit - I wonder if we could use something other than cmpenv here, like having a glob or regular expression as a placeholder for elapsed times and env var lines.

not super worried about it, though, and this test is certainly better than what I had done before.

@rogpeppe rogpeppe merged commit 6ac6b82 into master Jan 9, 2023
rogpeppe added a commit that referenced this pull request Jan 17, 2023
The new FailNow logic introduced in #192 had a flaw: it did
not correctly handle failures in the setup code, as observed in #185.

This PR fixes that omission.
mvdan pushed a commit that referenced this pull request Jan 17, 2023
The new FailNow logic introduced in #192 had a flaw: it did
not correctly handle failures in the setup code, as observed in #185.

This PR fixes that omission.
@mvdan mvdan deleted the 034-fix-continue branch January 30, 2025 22:29
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.

2 participants