Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testscript: add Params.ContinueOnError #192

Merged
merged 1 commit into from Jan 9, 2023
Merged

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.

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.
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.

None yet

2 participants