diff --git a/main_test.go b/main_test.go index d3422e0..f678b4b 100644 --- a/main_test.go +++ b/main_test.go @@ -24,8 +24,12 @@ func terminate(msg string) int { return 1 } -func sleep() { - time.Sleep(time.Second) +func sleep(seconds ...int) { + count := 1 + if len(seconds) > 0 { + count = seconds[0] + } + time.Sleep(time.Duration(count) * time.Second) } func hash(path string) string { @@ -162,6 +166,30 @@ func TestScreenFeatures(t *testing.T) { }) } +func TestSixel(t *testing.T) { + runMain(func() { + + testFunc := func(term *terminal.Terminal, g *gui.GUI) { + termRef = term; guiRef = g + + sleep() + send(term, "export PS1='> '\n") + sleep() + send(term, "clear\n") + sleep() + send(term, "cat example.sixel\n") + sleep(4) + + guiRef.Screenshot("test-sixel.png") + validateScreen("test-sixel.png") + + g.Close() + } + + initialize(testFunc) + }) +} + // Last Test should terminate main goroutine since it's infinity looped to execute others GUI tests in main goroutine func TestExit(t *testing.T) { os.Exit(0) diff --git a/terminal/sixel.go b/terminal/sixel.go index 65c00a7..4c452bc 100644 --- a/terminal/sixel.go +++ b/terminal/sixel.go @@ -125,6 +125,12 @@ func sixelHandler(pty chan rune, terminal *Terminal) error { return fmt.Errorf("Failed to parse sixel data: %s", err) } + isNewLineMode := terminal.terminalState.IsNewLineMode() + if isNewLineMode == false { + terminal.SetNewLineMode() + defer terminal.SetLineFeedMode() + } + drawSixel(six, terminal) return nil diff --git a/vttest/test-sixel.png b/vttest/test-sixel.png new file mode 100644 index 0000000..0abbae5 Binary files /dev/null and b/vttest/test-sixel.png differ