mirror of
https://github.com/ddworken/hishtory.git
synced 2024-11-30 04:05:36 +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/scroll", testTui_scroll)
|
||||||
runTestsWithRetries(t, "testTui/resize", testTui_resize)
|
runTestsWithRetries(t, "testTui/resize", testTui_resize)
|
||||||
runTestsWithRetries(t, "testTui/delete", testTui_delete)
|
runTestsWithRetries(t, "testTui/delete", testTui_delete)
|
||||||
|
runTestsWithRetries(t, "testTui/color", testTui_color)
|
||||||
|
|
||||||
// Assert there are no leaked connections
|
// Assert there are no leaked connections
|
||||||
assertNoLeakedConnections(t)
|
assertNoLeakedConnections(t)
|
||||||
@ -1604,9 +1605,6 @@ func testTui_resize(t testing.TB) {
|
|||||||
})
|
})
|
||||||
out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1])
|
out = strings.TrimSpace(strings.Split(out, "hishtory tquery")[1])
|
||||||
testutils.CompareGoldens(t, out, "TestTui-LongQuery")
|
testutils.CompareGoldens(t, out, "TestTui-LongQuery")
|
||||||
|
|
||||||
// Assert there are no leaked connections
|
|
||||||
// assertNoLeakedConnections(t)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func testTui_scroll(t testing.TB) {
|
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) {
|
func testTui_delete(t testing.TB) {
|
||||||
// Setup
|
// Setup
|
||||||
defer testutils.BackupAndRestore(t)()
|
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 {
|
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"
|
sleepAmount := "0.1"
|
||||||
if runtime.GOOS == "linux" {
|
if runtime.GOOS == "linux" {
|
||||||
sleepAmount = "0.2"
|
sleepAmount = "0.2"
|
||||||
@ -283,7 +287,11 @@ func captureTerminalOutputWithShellNameAndDimensions(t testing.TB, tester shellT
|
|||||||
if testutils.IsGithubAction() {
|
if testutils.IsGithubAction() {
|
||||||
fullCommand += " sleep 2.5\n"
|
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"
|
fullCommand += " tmux kill-session -t foo\n"
|
||||||
testutils.TestLog(t, "Running tmux command: "+fullCommand)
|
testutils.TestLog(t, "Running tmux command: "+fullCommand)
|
||||||
return strings.TrimSpace(tester.RunInteractiveShell(t, fullCommand))
|
return strings.TrimSpace(tester.RunInteractiveShell(t, fullCommand))
|
||||||
|
Loading…
Reference in New Issue
Block a user