Refactor code to strip out the shell prefix to a separate function

This commit is contained in:
David Dworken 2023-10-23 12:24:43 -07:00
parent 10851528bc
commit 27eeb7d099
No known key found for this signature in database
2 changed files with 19 additions and 49 deletions

View File

@ -1963,25 +1963,16 @@ func testControlR(t *testing.T, tester shellTester, shellName string, onlineStat
} }
// Search and check that the table is updated // Search and check that the table is updated
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "echo"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "echo"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-Search") testutils.CompareGoldens(t, out, "testControlR-Search")
// An advanced search and check that the table is updated // An advanced search and check that the table is updated
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "cwd:/tmp/ SPACE ls"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "cwd:/tmp/ SPACE ls"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-AdvancedSearch") testutils.CompareGoldens(t, out, "testControlR-AdvancedSearch")
// Set some different columns to be displayed and check that the table displays those // Set some different columns to be displayed and check that the table displays those
tester.RunInteractiveShell(t, `hishtory config-set displayed-columns Hostname 'Exit Code' Command`) tester.RunInteractiveShell(t, `hishtory config-set displayed-columns Hostname 'Exit Code' Command`)
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-displayedColumns") testutils.CompareGoldens(t, out, "testControlR-displayedColumns")
// Add a custom column // Add a custom column
@ -1992,46 +1983,27 @@ func testControlR(t *testing.T, tester shellTester, shellName string, onlineStat
// And run a query and confirm it is displayed // And run a query and confirm it is displayed
tester.RunInteractiveShell(t, `hishtory config-add displayed-columns foo`) tester.RunInteractiveShell(t, `hishtory config-add displayed-columns foo`)
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "-pipefail"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "-pipefail"}))
out = strings.TrimSpace(out)
if tester.ShellName() == "bash" {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-customColumn") testutils.CompareGoldens(t, out, "testControlR-customColumn")
// Start with a search query, and then press control-r and it shows results for that query // Start with a search query, and then press control-r and it shows results for that query
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"ls", "C-R"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"ls", "C-R"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-InitialSearch") testutils.CompareGoldens(t, out, "testControlR-InitialSearch")
// Start with a search query, and then press control-r, then make the query more specific // Start with a search query, and then press control-r, then make the query more specific
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"e", "C-R", "cho"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"e", "C-R", "cho"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-InitialSearchExpanded") testutils.CompareGoldens(t, out, "testControlR-InitialSearchExpanded")
// Start with a search query for which there are no results // Start with a search query for which there are no results
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"asdf", "C-R"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"asdf", "C-R"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-InitialSearchNoResults") testutils.CompareGoldens(t, out, "testControlR-InitialSearchNoResults")
// Start with a search query for which there are no results // Start with a search query for which there are no results
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"asdf", "C-R", "BSpace BSpace BSpace BSpace echo"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"asdf", "C-R", "BSpace BSpace BSpace BSpace echo"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-InitialSearchNoResultsThenFoundResults") testutils.CompareGoldens(t, out, "testControlR-InitialSearchNoResultsThenFoundResults")
// Search, hit control-c, and the table should be cleared // Search, hit control-c, and the table should be cleared
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"echo", "C-R", "c", "C-C"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"echo", "C-R", "c", "C-C"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
require.NotContains(t, out, "Search Query", "hishtory is showing a table even after control-c?") require.NotContains(t, out, "Search Query", "hishtory is showing a table even after control-c?")
require.NotContains(t, out, "─────", "hishtory is showing a table even after control-c?") require.NotContains(t, out, "─────", "hishtory is showing a table even after control-c?")
require.NotContains(t, out, "Exit Code", "hishtory is showing a table even after control-c?") require.NotContains(t, out, "Exit Code", "hishtory is showing a table even after control-c?")
@ -2057,10 +2029,7 @@ func testControlR(t *testing.T, tester shellTester, shellName string, onlineStat
require.NoError(t, err) require.NoError(t, err)
// And check that the control-r bindings work again // And check that the control-r bindings work again
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "-pipefail SPACE -exit_code:0"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "-pipefail SPACE -exit_code:0"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-Final") testutils.CompareGoldens(t, out, "testControlR-Final")
// Record a multi-line command // Record a multi-line command
@ -2071,17 +2040,11 @@ func testControlR(t *testing.T, tester shellTester, shellName string, onlineStat
tester.RunInteractiveShell(t, ` hishtory disable`) tester.RunInteractiveShell(t, ` hishtory disable`)
// Check that we display it in the table reasonably // Check that we display it in the table reasonably
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "Slah"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "Slah"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
testutils.CompareGoldens(t, out, "testControlR-DisplayMultiline-"+shellName) testutils.CompareGoldens(t, out, "testControlR-DisplayMultiline-"+shellName)
// Check that we can select it correctly // Check that we can select it correctly
out = captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "Slah", "Enter"}) out = stripShellPrefix(captureTerminalOutputWithShellName(t, tester, shellName, []string{"C-R", "Slah", "Enter"}))
if strings.Contains(out, "\n\n\n") {
out = strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
require.Contains(t, out, "-Slah", "out has unexpected output missing the selected row") require.Contains(t, out, "-Slah", "out has unexpected output missing the selected row")
if !testutils.IsGithubAction() { if !testutils.IsGithubAction() {
testutils.CompareGoldens(t, out, "testControlR-SelectMultiline-"+shellName) testutils.CompareGoldens(t, out, "testControlR-SelectMultiline-"+shellName)

View File

@ -347,3 +347,10 @@ func installHishtory(t testing.TB, tester shellTester, userSecret string) string
} }
return matches[1] return matches[1]
} }
func stripShellPrefix(out string) string {
if strings.Contains(out, "\n\n\n") {
return strings.TrimSpace(strings.Split(out, "\n\n\n")[1])
}
return out
}