diff --git a/internal/cli/compile/compile.go b/internal/cli/compile/compile.go index 46534eb59b3..1204b529f17 100644 --- a/internal/cli/compile/compile.go +++ b/internal/cli/compile/compile.go @@ -400,7 +400,7 @@ type compileResult struct { Success bool `json:"success"` ProfileOut string `json:"profile_out,omitempty"` Error string `json:"error,omitempty"` - Diagnostics []*result.CompileDiagnostic `json:"diagnostics"` + Diagnostics []*result.CompileDiagnostic `json:"diagnostics,omitempty"` showPropertiesMode arguments.ShowPropertiesMode hideStats bool } diff --git a/internal/integrationtest/compile_3/compile_test.go b/internal/integrationtest/compile_3/compile_test.go index 2df3d59f40d..2f9ba8e5306 100644 --- a/internal/integrationtest/compile_3/compile_test.go +++ b/internal/integrationtest/compile_3/compile_test.go @@ -113,10 +113,19 @@ func TestCompilerErrOutput(t *testing.T) { require.NoError(t, err) // Run compile and catch err stream - out, _, err := cli.Run("compile", "-b", "arduino:avr:uno", "--format", "json", sketch.String()) + out, _, err := cli.Run("compile", "-b", "arduino:avr:uno", "-v", "--format", "json", sketch.String()) require.Error(t, err) - compilerErr := requirejson.Parse(t, out).Query(".compiler_err") - compilerErr.MustContain(`"error"`) + outJson := requirejson.Parse(t, out) + outJson.Query(`.compiler_err`).MustContain(`"error"`) + outJson.Query(`.diagnostics`).MustContain(` + [ + { + "severity": "ERROR", + "line": 1, + "column": 14, + "context": [ { "message": "In function 'void wrong()':" } ] + } + ]`) } // Check that library discover do not generate false errors @@ -132,6 +141,7 @@ func TestCompilerErrOutput(t *testing.T) { jsonOut := requirejson.Parse(t, out) jsonOut.Query(".compiler_out").MustNotContain(`"fatal error"`) jsonOut.Query(".compiler_err").MustNotContain(`"fatal error"`) + jsonOut.MustNotContain(`{ "diagnostics" : [] }`) } }