test(format): enhance JSON rendering to respect quiet mode and add tests for output validation

This commit is contained in:
ZanzyTHEbar 2026-02-22 23:18:19 +00:00
parent 623c28f6dd
commit 407d6cdc24
4 changed files with 23 additions and 4 deletions

View file

@ -61,9 +61,6 @@ func Render(w io.Writer, mode OutputMode, res TaskResult, quiet bool) error {
}
switch mode {
case OutputJSON:
if quiet {
return nil
}
enc := json.NewEncoder(w)
enc.SetIndent("", " ")
return enc.Encode(res)

View file

@ -110,3 +110,23 @@ func TestRenderTextHonorsQuietOnlyForSuccess(t *testing.T) {
require.Contains(t, buf.String(), "exit=1")
require.Contains(t, buf.String(), "error: boom")
}
func TestRenderJSONHonorsQuietOnlyForSuccess(t *testing.T) {
buf := &bytes.Buffer{}
successResult := TaskResult{Task: "run", ExitCode: 0, DurationMS: 1, Success: true, Error: "ok"}
require.NoError(t, Render(buf, OutputJSON, successResult, true))
require.Equal(t, "", buf.String())
buf.Reset()
failureResult := TaskResult{Task: "run", ExitCode: 1, DurationMS: 1, Success: false, Error: "boom", Stderr: "bad"}
require.NoError(t, Render(buf, OutputJSON, failureResult, true))
require.NotEqual(t, "", buf.String())
decoded := TaskResult{}
require.NoError(t, json.NewDecoder(buf).Decode(&decoded))
require.Equal(t, "run", decoded.Task)
require.Equal(t, "boom", decoded.Error)
require.Equal(t, "bad", decoded.Stderr)
require.Equal(t, 1, decoded.ExitCode)
require.False(t, decoded.Success)
}

View file

@ -486,7 +486,7 @@ func buildAllScript(c *app.Context) string {
fmt.Fprintf(&script, "OUTPUT_NAME=%s/%s-%s-%s\n", buildDir, binaryName, targetGOOS, targetGOARCH)
script.WriteString("export CGO_ENABLED=1\n")
fmt.Fprintf(&script, "GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=$CGO_ENABLED $GO build $GOFLAGS %s -o ${OUTPUT_NAME} ./%s\n", ldFlags, cmdDir)
fmt.Fprintf(&script, "ln -sf ./%s %s/%s\n", "${OUTPUT_NAME}", buildDir, binaryName)
fmt.Fprintf(&script, "ln -sf %s-%s-%s %s/%s\n", binaryName, targetGOOS, targetGOARCH, buildDir, binaryName)
return script.String()
}

View file

@ -116,6 +116,8 @@ func TestBuildAllTaskPreservesGoEnvironmentForwarding(t *testing.T) {
require.NotContains(t, script, "if [ \"$GOOS\" != \"linux\" ]; then")
require.Contains(t, script, "CGO_ENABLED=1")
require.NotContains(t, script, "CGO_BUILD=1")
require.Contains(t, script, "ln -sf dragonscale-linux-sparc64 bin/dragonscale")
require.NotContains(t, script, "ln -sf ./bin/dragonscale-linux-sparc64 bin/dragonscale")
joinedEnv := strings.Join(fake.Calls[0].Env, " ")
require.Contains(t, joinedEnv, "GOOS=linux")