mirror of
https://github.com/ddworken/hishtory.git
synced 2024-11-26 10:13:44 +01:00
Add very basic TUI test that also tests how the TUI uses escape sequences for colors
This commit is contained in:
parent
354f2872d6
commit
b3fa5c9a6b
@ -111,6 +111,7 @@ func TestParam(t *testing.T) {
|
||||
runTestsWithRetries(t, "testTui/scroll", testTui_scroll)
|
||||
runTestsWithRetries(t, "testTui/resize", testTui_resize)
|
||||
runTestsWithRetries(t, "testTui/delete", testTui_delete)
|
||||
runTestsWithRetries(t, "testTui/color", testTui_color)
|
||||
|
||||
// Assert there are no leaked connections
|
||||
assertNoLeakedConnections(t)
|
||||
@ -1604,9 +1605,6 @@ func testTui_resize(t testing.TB) {
|
||||
})
|
||||
out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1])
|
||||
testutils.CompareGoldens(t, out, "TestTui-LongQuery")
|
||||
|
||||
// Assert there are no leaked connections
|
||||
// assertNoLeakedConnections(t)
|
||||
}
|
||||
|
||||
func testTui_scroll(t testing.TB) {
|
||||
@ -1646,6 +1644,23 @@ func testTui_scroll(t testing.TB) {
|
||||
|
||||
}
|
||||
|
||||
func testTui_color(t testing.TB) {
|
||||
// Setup
|
||||
defer testutils.BackupAndRestore(t)()
|
||||
tester, _, _ := setupTestTui(t)
|
||||
|
||||
// Capture the TUI with full colored output, note that this golden will be harder to undersand
|
||||
// from inspection and primarily servers to detect unintended changes in hishtory's output.
|
||||
out := captureTerminalOutputComplex(t, tester, tester.ShellName(), 200, 50, []TmuxCommand{{Keys: "hishtory SPACE tquery ENTER"}}, true)
|
||||
out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1])
|
||||
testutils.CompareGoldens(t, out, "TestTui-ColoredOutput")
|
||||
|
||||
// And the same once a search query has been typed in
|
||||
out = captureTerminalOutputComplex(t, tester, tester.ShellName(), 200, 50, []TmuxCommand{{Keys: "hishtory SPACE tquery ENTER"}, {Keys: "ech"}}, true)
|
||||
out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1])
|
||||
testutils.CompareGoldens(t, out, "TestTui-ColoredOutputWithSearch")
|
||||
}
|
||||
|
||||
func testTui_delete(t testing.TB) {
|
||||
// Setup
|
||||
defer testutils.BackupAndRestore(t)()
|
||||
|
27
client/lib/goldens/TestTui-ColoredOutput
Normal file
27
client/lib/goldens/TestTui-ColoredOutput
Normal file
@ -0,0 +1,27 @@
|
||||
Search Query: > [7ml[0m[90m[49ms
|
||||
|
||||
┌────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│[39m Hostname CWD Timestamp Runtime Exit Code Command [90m│
|
||||
│────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
||||
│[93m[104m localhost /tmp/ Oct 17 2022 21:43:21 PDT 3s 2 echo 'aaaaaa bbbb' [90m[49m│
|
||||
│[39m localhost /tmp/ Oct 17 2022 21:43:16 PDT 3s 2 ls ~/ [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
└────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
hiSHtory: Search your shell history[39m [90m • ctrl+h[39m [90mhelp
|
27
client/lib/goldens/TestTui-ColoredOutputWithSearch
Normal file
27
client/lib/goldens/TestTui-ColoredOutputWithSearch
Normal file
@ -0,0 +1,27 @@
|
||||
Search Query: > ech[7m [0m[39m[49m
|
||||
|
||||
[90m┌────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│[39m Hostname CWD Timestamp Runtime Exit Code Command [90m│
|
||||
│────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
||||
│[93m[104m localhost /tmp/ Oct 17 2022 21:43:21 PDT 3s 2 echo 'aaaaaa bbbb' [90m[49m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
│[39m [90m│
|
||||
└────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
hiSHtory: Search your shell history[39m [90m • ctrl+h[39m [90mhelp
|
@ -246,6 +246,10 @@ func captureTerminalOutputWithShellName(t testing.TB, tester shellTester, overri
|
||||
}
|
||||
|
||||
func captureTerminalOutputWithShellNameAndDimensions(t testing.TB, tester shellTester, overriddenShellName string, width, height int, commands []TmuxCommand) string {
|
||||
return captureTerminalOutputComplex(t, tester, overriddenShellName, width, height, commands, false)
|
||||
}
|
||||
|
||||
func captureTerminalOutputComplex(t testing.TB, tester shellTester, overriddenShellName string, width, height int, commands []TmuxCommand, includeEscapeSequences bool) string {
|
||||
sleepAmount := "0.1"
|
||||
if runtime.GOOS == "linux" {
|
||||
sleepAmount = "0.2"
|
||||
@ -283,7 +287,11 @@ func captureTerminalOutputWithShellNameAndDimensions(t testing.TB, tester shellT
|
||||
if testutils.IsGithubAction() {
|
||||
fullCommand += " sleep 2.5\n"
|
||||
}
|
||||
fullCommand += " tmux capture-pane -t foo -p\n"
|
||||
fullCommand += " tmux capture-pane -t foo -p"
|
||||
if includeEscapeSequences {
|
||||
fullCommand += "e"
|
||||
}
|
||||
fullCommand += "\n"
|
||||
fullCommand += " tmux kill-session -t foo\n"
|
||||
testutils.TestLog(t, "Running tmux command: "+fullCommand)
|
||||
return strings.TrimSpace(tester.RunInteractiveShell(t, fullCommand))
|
||||
|
Loading…
Reference in New Issue
Block a user