diff --git a/internals/testutil/exec.go b/internals/testutil/exec.go index 113f7cebc..86245b0e0 100644 --- a/internals/testutil/exec.go +++ b/internals/testutil/exec.go @@ -92,7 +92,7 @@ type FakeCmd struct { // faking commands that need "\n" in their args (like zenity) // we use the following convention: // - generate \0 to separate args -// - generate \0\0 to separate commands +// - generate \0\f\n\r magic sequence to separate commands var scriptTpl = `#!/bin/bash printf "%%s" "$(basename "$0")" >> %[1]q printf '\0' >> %[1]q @@ -102,7 +102,7 @@ for arg in "$@"; do printf '\0' >> %[1]q done -printf '\0' >> %[1]q +printf '\f\n\r' >> %[1]q %s ` @@ -176,12 +176,11 @@ func (cmd *FakeCmd) Calls() [][]string { if err != nil { panic(err) } - logContent := strings.TrimSuffix(string(raw), "\000") + logContent := strings.TrimSuffix(string(raw), "\000\f\n\r") allCalls := [][]string{} - calls := strings.Split(logContent, "\000\000") + calls := strings.Split(logContent, "\000\f\n\r") for _, call := range calls { - call = strings.TrimSuffix(call, "\000") allCalls = append(allCalls, strings.Split(call, "\000")) } return allCalls diff --git a/internals/testutil/exec_test.go b/internals/testutil/exec_test.go index 47c35a777..18bf08d0b 100644 --- a/internals/testutil/exec_test.go +++ b/internals/testutil/exec_test.go @@ -34,9 +34,15 @@ func (s *fakeCommandSuite) TestFakeCommand(c *check.C) { c.Assert(err, check.IsNil) err = exec.Command("cmd", "second-run", "--arg1", "arg2", "a %s").Run() c.Assert(err, check.IsNil) + err = exec.Command("cmd", "third-run", "--arg1", "arg2", "").Run() + c.Assert(err, check.IsNil) + err = exec.Command("cmd", "forth-run", "--arg1", "arg2", "", "a %s").Run() + c.Assert(err, check.IsNil) c.Assert(fake.Calls(), check.DeepEquals, [][]string{ {"cmd", "first-run", "--arg1", "arg2", "a space"}, {"cmd", "second-run", "--arg1", "arg2", "a %s"}, + {"cmd", "third-run", "--arg1", "arg2", ""}, + {"cmd", "forth-run", "--arg1", "arg2", "", "a %s"}, }) }