From bfc74bec2575dad341bda15165316d957440f90a Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 18 Apr 2023 15:05:40 +0200 Subject: [PATCH 1/2] Added test --- .../integrationtest/compile_1/compile_test.go | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/internal/integrationtest/compile_1/compile_test.go b/internal/integrationtest/compile_1/compile_test.go index 3d0115923a1..dcfb8736f19 100644 --- a/internal/integrationtest/compile_1/compile_test.go +++ b/internal/integrationtest/compile_1/compile_test.go @@ -25,6 +25,7 @@ import ( "testing" "time" + "github.com/arduino/arduino-cli/arduino/builder" "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" @@ -71,6 +72,7 @@ func TestCompile(t *testing.T) { {"WithInvalidBuildOptionJson", compileWithInvalidBuildOptionJson}, {"WithRelativeBuildPath", compileWithRelativeBuildPath}, {"WithFakeSecureBootCore", compileWithFakeSecureBootCore}, + {"PreprocessFlagDoNotMessUpWithOutput", preprocessFlagDoNotMessUpWithOutput}, }.Run(t, env, cli) } @@ -1162,3 +1164,44 @@ func compileWithFakeSecureBootCore(t *testing.T, env *integrationtest.Environmen require.Contains(t, string(stdout), "my-sign-key.pem") require.Contains(t, string(stdout), "my-encrypt-key.pem") } + +func preprocessFlagDoNotMessUpWithOutput(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + // https://github.com/arduino/arduino-cli/issues/2150 + + // go test -v ./internal/integrationtest/compile_1 --run=TestCompile$/PreprocessFlagDoNotMessUpWithOutput + + sketchPath := cli.SketchbookDir().Join("SketchSimple") + defer sketchPath.RemoveAll() + fqbn := "arduino:avr:uno" + _, _, err := cli.Run("sketch", "new", sketchPath.String()) + require.NoError(t, err) + + expected := `#include +#line 1 %SKETCH_PATH% + +#line 2 %SKETCH_PATH% +void setup(); +#line 5 %SKETCH_PATH% +void loop(); +#line 2 %SKETCH_PATH% +void setup() { +} + +void loop() { +} + +` + expected = strings.ReplaceAll(expected, "%SKETCH_PATH%", builder.QuoteCppString(sketchPath.Join("SketchSimple.ino").String())) + + jsonOut, _, err := cli.Run("compile", "-b", fqbn, "--preprocess", sketchPath.String(), "--format", "json") + require.NoError(t, err) + var ex struct { + CompilerOut string `json:"compiler_out"` + } + require.NoError(t, json.Unmarshal(jsonOut, &ex)) + require.Equal(t, expected, ex.CompilerOut) + + output, _, err := cli.Run("compile", "-b", fqbn, "--preprocess", sketchPath.String()) + require.NoError(t, err) + require.Equal(t, expected, string(output)) +} From d0b5ea63a56f1bc042c0a98851a96f8ea1d24b13 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 18 Apr 2023 15:06:42 +0200 Subject: [PATCH 2/2] Hide compile stats when using preprocess flag --- internal/cli/compile/compile.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/cli/compile/compile.go b/internal/cli/compile/compile.go index 6a1ee024bf5..affe64f8998 100644 --- a/internal/cli/compile/compile.go +++ b/internal/cli/compile/compile.go @@ -330,6 +330,7 @@ func runCompileCommand(cmd *cobra.Command, args []string) { ProfileOut: profileOut, Success: compileError == nil, showPropertiesMode: showProperties, + hideStats: preprocess, } if compileError != nil { @@ -394,6 +395,7 @@ type compileResult struct { Error string `json:"error,omitempty"` showPropertiesMode arguments.ShowPropertiesMode + hideStats bool } func (r *compileResult) Data() interface{} { @@ -405,6 +407,10 @@ func (r *compileResult) String() string { return strings.Join(r.BuilderResult.GetBuildProperties(), fmt.Sprintln()) } + if r.hideStats { + return "" + } + titleColor := color.New(color.FgHiGreen) nameColor := color.New(color.FgHiYellow) pathColor := color.New(color.FgHiBlack)