Deprecate test.ExpectLines

For asserting command output, exact string matches are preferred in most cases. In cases when a pattern match is needed, the test can use regexp ad hoc.
This commit is contained in:
Mislav Marohnić 2021-01-18 23:25:45 +01:00
parent 411bd4a70e
commit fc77cbc964
11 changed files with 41 additions and 0 deletions

View file

@ -86,7 +86,9 @@ func TestAliasSet_empty_aliases(t *testing.T) {
t.Fatalf("unexpected error: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Added alias")
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), "")
expected := `aliases:
@ -108,6 +110,7 @@ func TestAliasSet_existing_alias(t *testing.T) {
output, err := runCommand(cfg, true, "co 'pr checkout -Rcool/repo'")
require.NoError(t, err)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Changed alias.*co.*from.*pr checkout.*to.*pr checkout -Rcool/repo")
}
@ -120,8 +123,10 @@ func TestAliasSet_space_args(t *testing.T) {
output, err := runCommand(cfg, true, `il 'issue list -l "cool story"'`)
require.NoError(t, err)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), `Adding alias for.*il.*issue list -l "cool story"`)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, mainBuf.String(), `il: issue list -l "cool story"`)
}
@ -156,7 +161,9 @@ func TestAliasSet_arg_processing(t *testing.T) {
t.Fatalf("got unexpected error running %s: %s", c.Cmd, err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), c.ExpectedOutputLine)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, mainBuf.String(), c.ExpectedConfigLine)
})
}
@ -178,6 +185,7 @@ aliases:
diff: pr diff
`
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Adding alias for.*diff.*pr diff", "Added alias.")
assert.Equal(t, expected, mainBuf.String())
}
@ -199,6 +207,7 @@ func TestAliasSet_existing_aliases(t *testing.T) {
view: pr view
`
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Adding alias for.*view.*pr view", "Added alias.")
assert.Equal(t, expected, mainBuf.String())
@ -226,6 +235,7 @@ func TestShellAlias_flag(t *testing.T) {
t.Fatalf("unexpected error: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Adding alias for.*igrep")
expected := `aliases:
@ -243,6 +253,7 @@ func TestShellAlias_bang(t *testing.T) {
output, err := runCommand(cfg, true, "igrep '!gh issue list | grep'")
require.NoError(t, err)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Adding alias for.*igrep")
expected := `aliases:

View file

@ -80,6 +80,7 @@ func TestIssueList_nontty(t *testing.T) {
}
eq(t, output.Stderr(), "")
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(),
`1[\t]+number won[\t]+label[\t]+\d+`,
`2[\t]+number too[\t]+label[\t]+\d+`,

View file

@ -198,6 +198,7 @@ func TestIssueView_nontty_Preview(t *testing.T) {
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}
@ -264,6 +265,7 @@ func TestIssueView_tty_Preview(t *testing.T) {
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}
@ -422,6 +424,7 @@ func TestIssueView_tty_Comments(t *testing.T) {
}
assert.NoError(t, err)
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}
@ -496,6 +499,7 @@ func TestIssueView_nontty_Comments(t *testing.T) {
}
assert.NoError(t, err)
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}

View file

@ -147,5 +147,6 @@ func TestPrClose_deleteBranch(t *testing.T) {
t.Fatalf("Got unexpected error running `pr close` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), `Closed pull request #96 \(The title of the PR\)`, `Deleted branch blueberries`)
}

View file

@ -325,6 +325,7 @@ func TestPrMerge_deleteBranch(t *testing.T) {
t.Fatalf("Got unexpected error running `pr merge` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), `Merged pull request #10 \(Blueberries are a good fruit\)`, `Deleted branch.*blueberries`)
}
@ -357,6 +358,7 @@ func TestPrMerge_deleteNonCurrentBranch(t *testing.T) {
t.Fatalf("Got unexpected error running `pr merge` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), `Merged pull request #10 \(Blueberries are a good fruit\)`, `Deleted branch.*blueberries`)
}
@ -459,6 +461,7 @@ func TestPrMerge_squash(t *testing.T) {
t.Fatalf("error running command `pr merge`: %v", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Squashed and merged pull request #3")
}
@ -498,6 +501,7 @@ func TestPrMerge_alreadyMerged(t *testing.T) {
t.Fatalf("Got unexpected error running `pr merge` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "✔ Deleted branch blueberries and switched to branch master")
}
@ -577,6 +581,7 @@ func TestPRMerge_interactive(t *testing.T) {
t.Fatalf("Got unexpected error running `pr merge` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Merged pull request #3")
}
@ -630,6 +635,7 @@ func TestPRMerge_interactiveWithDeleteBranch(t *testing.T) {
t.Fatalf("Got unexpected error running `pr merge` %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Merged pull request #3", "Deleted branch blueberries and switched to branch master")
}

View file

@ -218,6 +218,7 @@ func TestPRReview_url_arg(t *testing.T) {
t.Fatalf("error running pr review: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
}
@ -260,6 +261,7 @@ func TestPRReview_number_arg(t *testing.T) {
t.Fatalf("error running pr review: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
}
@ -293,6 +295,7 @@ func TestPRReview_no_arg(t *testing.T) {
t.Fatalf("error running pr review: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Reviewed pull request #123")
}
@ -425,8 +428,10 @@ func TestPRReview_interactive(t *testing.T) {
t.Fatalf("got unexpected error running pr review: %s", err)
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(),
"Got:",
"cool.*story")
@ -532,5 +537,6 @@ func TestPRReview_interactive_blank_approve(t *testing.T) {
t.Errorf("did not expect to see body printed in %s", output.String())
}
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
}

View file

@ -98,6 +98,7 @@ func Test_PreserveInput(t *testing.T) {
assert.NoError(t, err)
if tt.wantPreservation {
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, errOut.String(), tt.wantErrLine)
preserved := &IssueMetadataState{}
assert.NoError(t, json.Unmarshal(data, preserved))

View file

@ -338,6 +338,7 @@ func TestPRView_Preview_nontty(t *testing.T) {
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}
@ -483,6 +484,7 @@ func TestPRView_Preview(t *testing.T) {
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tc.expectedOutputs...)
})
}
@ -798,6 +800,7 @@ func TestPRView_tty_Comments(t *testing.T) {
}
assert.NoError(t, err)
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tt.expectedOutputs...)
})
}
@ -876,6 +879,7 @@ func TestPRView_nontty_Comments(t *testing.T) {
}
assert.NoError(t, err)
assert.Equal(t, "", output.Stderr())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.String(), tt.expectedOutputs...)
})
}

View file

@ -279,6 +279,7 @@ func TestRepoFork_in_parent_yes(t *testing.T) {
}
assert.Equal(t, "", output.String())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(),
"Created fork.*someone/REPO",
"Added remote.*origin")
@ -304,6 +305,7 @@ func TestRepoFork_outside_yes(t *testing.T) {
}
assert.Equal(t, "", output.String())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(),
"Created fork.*someone/REPO",
"Cloned fork")
@ -331,6 +333,7 @@ func TestRepoFork_outside_survey_yes(t *testing.T) {
}
assert.Equal(t, "", output.String())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(),
"Created fork.*someone/REPO",
"Cloned fork")
@ -386,6 +389,7 @@ func TestRepoFork_in_parent_survey_yes(t *testing.T) {
assert.Equal(t, "", output.String())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(),
"Created fork.*someone/REPO",
"Renamed.*origin.*remote to.*upstream",
@ -450,6 +454,7 @@ func TestRepoFork_in_parent_match_protocol(t *testing.T) {
assert.Equal(t, "", output.String())
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, output.Stderr(),
"Created fork.*someone/REPO",
"Added remote.*origin")

View file

@ -191,6 +191,7 @@ func Test_listRun(t *testing.T) {
reg.Verify(t)
//nolint:staticcheck // prefer exact matchers over ExpectLines
test.ExpectLines(t, stdout.String(), tt.wantOut...)
})
}

View file

@ -91,6 +91,7 @@ type T interface {
Errorf(string, ...interface{})
}
// Deprecated: prefer exact matches for command output
func ExpectLines(t T, output string, lines ...string) {
t.Helper()
var r *regexp.Regexp