我正在使用glide来管理项目的依赖项。我创建了一个运行go test $(glide novendor)
的脚本(它测试所有目录,不包括 vendor / 一个)。虽然它有效,但run命令的输出不会超出第1行:
ok my/project/scripts 0.005s
以下是运行它的脚本部分:
// Get the paths to test (excluding the "vendor/" directory)
cmd := exec.Command("glide", "novendor")
var out bytes.Buffer
cmd.Stdout = &out
err = cmd.Run()
if err != nil {
log.Fatal("Could not run `glide novendor`: ", err)
}
glidenovendor := []string{"test"}
// Represents the "test ./src/... ./scripts/..." portion of the command
glidenovendor = append(glidenovendor, strings.Split(out.String(), " ")...)
// Run `go test ./src/... ./scripts/...`
cmd = exec.Command("go", glidenovendor...)
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatal("Could not run `go test` command with args: ", cmd, err)
}
直接在我的shell上运行命令,可以按预期输出所有输出行。
如何让我的脚本打印整个输出?
答案 0 :(得分:0)
事实证明这一行
glidenovendor = append(glidenovendor, strings.Split(out.String(), " ")...)
由于某种原因在"\n"
切片的最后一个字符串元素中添加了一个新的行字符glidenovendor
。我仍然不知道为什么。但是使用下面的代码段删除会使脚本按预期运行:
// Remove trailing LF from strings in `glidenovendor`
for i, v := range glidenovendor {
glidenovendor[i] = strings.Trim(v, "\n")
}