diff --git a/go.mod b/go.mod index b4e65b61559..93fb125a868 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/arduino/arduino-cli -go 1.22 - -toolchain go1.22.3 +go 1.22.3 // We must use this fork until https://github.com/mailru/easyjson/pull/372 is merged replace github.com/mailru/easyjson => github.com/cmaglie/easyjson v0.8.1 @@ -38,6 +36,7 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 go.bug.st/cleanup v1.0.0 go.bug.st/downloader/v2 v2.2.0 + go.bug.st/f v0.4.0 go.bug.st/relaxed-semver v0.12.0 go.bug.st/testifyjson v1.2.0 golang.org/x/term v0.25.0 diff --git a/go.sum b/go.sum index 771924588a9..495585ef9a9 100644 --- a/go.sum +++ b/go.sum @@ -215,6 +215,8 @@ go.bug.st/cleanup v1.0.0 h1:XVj1HZxkBXeq3gMT7ijWUpHyIC1j8XAoNSyQ06CskgA= go.bug.st/cleanup v1.0.0/go.mod h1:EqVmTg2IBk4znLbPD28xne3abjsJftMdqqJEjhn70bk= go.bug.st/downloader/v2 v2.2.0 h1:Y0jSuDISNhrzePkrAWqz9xUC3xol9hqZo/+tz1D4EqY= go.bug.st/downloader/v2 v2.2.0/go.mod h1:VZW2V1iGKV8rJL2ZEGIDzzBeKowYv34AedJz13RzVII= +go.bug.st/f v0.4.0 h1:Vstqb950nMA+PhAlRxUw8QL1ntHy/gXHNyyzjkQLJ10= +go.bug.st/f v0.4.0/go.mod h1:bMo23205ll7UW63KwO1ut5RdlJ9JK8RyEEr88CmOF5Y= go.bug.st/relaxed-semver v0.12.0 h1:se8v3lTdAAFp68+/RS/0Y/nFdnpdzkP5ICY04SPau4E= go.bug.st/relaxed-semver v0.12.0/go.mod h1:Cpcbiig6Omwlq6bS7i3MQWiqS7W7HDd8CAnZFC40Cl0= go.bug.st/serial v1.6.1 h1:VSSWmUxlj1T/YlRo2J104Zv3wJFrjHIl/T3NeruWAHY= diff --git a/internal/arduino/builder/builder.go b/internal/arduino/builder/builder.go index 608baead6ee..91c74965782 100644 --- a/internal/arduino/builder/builder.go +++ b/internal/arduino/builder/builder.go @@ -352,7 +352,10 @@ func (b *Builder) logIfVerbose(warn bool, msg string) { // Build fixdoc func (b *Builder) Build() error { - b.Progress.AddSubSteps(6 /** preprocess **/ + 21 /** build **/) + b.Progress.AddSubSteps(6 + // preprocess + 18 + // build + 1, // size + ) defer b.Progress.RemoveSubSteps() if err := b.preprocess(); err != nil { @@ -362,15 +365,10 @@ func (b *Builder) Build() error { buildErr := b.build() b.libsDetector.PrintUsedAndNotUsedLibraries(buildErr != nil) - b.Progress.CompleteStep() - b.printUsedLibraries(b.libsDetector.ImportedLibraries()) - b.Progress.CompleteStep() - if buildErr != nil { return buildErr } - b.Progress.CompleteStep() if err := b.size(); err != nil { return err diff --git a/internal/integrationtest/daemon/daemon_test.go b/internal/integrationtest/daemon/daemon_test.go index 742e7774316..47225784361 100644 --- a/internal/integrationtest/daemon/daemon_test.go +++ b/internal/integrationtest/daemon/daemon_test.go @@ -24,7 +24,6 @@ import ( "time" "github.com/arduino/arduino-cli/commands/cmderrors" - f "github.com/arduino/arduino-cli/internal/algorithms" "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" @@ -194,13 +193,15 @@ func TestDaemonCompileOptions(t *testing.T) { if msg.GetErrStream() != nil { fmt.Printf("COMPILE> %v\n", string(msg.GetErrStream())) } - analyzer.Process(msg.GetProgress()) + if pr := msg.GetProgress(); pr != nil { + fmt.Printf("COMPILE PROGRESS> %v\n", pr) + analyzer.Process(pr) + } } + // https://github.com/arduino/arduino-cli/issues/2016 - // assert that the task progress is increasing and doesn't contain multiple 100% values - results := analyzer.Results[""] - require.True(t, results[len(results)-1].GetCompleted(), fmt.Sprintf("latest percent value: %v", results[len(results)-1].GetPercent())) - require.IsNonDecreasing(t, f.Map(results, (*commands.TaskProgress).GetPercent)) + // https://github.com/arduino/arduino-cli/issues/2711 + analyzer.Check(t) } func TestDaemonCompileAfterFailedLibInstall(t *testing.T) { diff --git a/internal/integrationtest/daemon/task_progress_test.go b/internal/integrationtest/daemon/task_progress_test.go index c106a2c6588..b24d809c716 100644 --- a/internal/integrationtest/daemon/task_progress_test.go +++ b/internal/integrationtest/daemon/task_progress_test.go @@ -19,6 +19,8 @@ import ( "testing" "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + "github.com/stretchr/testify/require" + "go.bug.st/f" ) // TaskProgressAnalyzer analyzes TaskProgress messages for consistency @@ -44,3 +46,13 @@ func (a *TaskProgressAnalyzer) Process(progress *commands.TaskProgress) { taskName := progress.GetName() a.Results[taskName] = append(a.Results[taskName], progress) } + +func (a *TaskProgressAnalyzer) Check(t *testing.T) { + for task, results := range a.Results { + require.Equal(t, 1, f.Count(results, (*commands.TaskProgress).GetCompleted), "Got multiple 'completed' messages on task %s", task) + l := len(results) + require.True(t, results[l-1].GetCompleted(), "Last message is not 'completed' on task: %s", task) + require.Equal(t, results[l-1].GetPercent(), float32(100), "Last message is not 100% on task: %s", task) + require.IsNonDecreasing(t, f.Map(results, (*commands.TaskProgress).GetPercent), "Percentages are not increasing on task: %s", task) + } +}