From 82ab02da9b0510e0abf5ef1691d6e484105c513f Mon Sep 17 00:00:00 2001 From: Max Risuhin Date: Thu, 14 Feb 2019 18:58:15 +0200 Subject: [PATCH] Resolves sixel rendering regression issue and adds gui unit test to validate rendered image (#221) * Reset line feed mode on sixel handling * Sixel test --- main_test.go | 32 ++++++++++++++++++++++++++++++-- terminal/sixel.go | 6 ++++++ vttest/test-sixel.png | Bin 0 -> 38331 bytes 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 vttest/test-sixel.png 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 0000000000000000000000000000000000000000..0abbae58ad5938b1ff9df1845512582972d71715 GIT binary patch literal 38331 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 literal 0 HcmV?d00001