From 78d3cb707d8c6532b5f56f2638cad76f96ad19d3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Jun 2026 00:37:39 +0000 Subject: [PATCH 1/2] Fix duplicate checkmark in fix output Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/cli/fix_command.go | 2 +- pkg/cli/fix_command_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pkg/cli/fix_command.go b/pkg/cli/fix_command.go index 73dd800b722..61d77507378 100644 --- a/pkg/cli/fix_command.go +++ b/pkg/cli/fix_command.go @@ -328,7 +328,7 @@ func processWorkflowFileWithInfo(filePath string, codemods []Codemod, write bool return false, nil, fmt.Errorf("failed to scaffold shared Serena workflow: %w", err) } - fmt.Fprintf(os.Stderr, "%s\n", console.FormatSuccessMessage("✓ "+fileName)) + fmt.Fprintf(os.Stderr, "%s\n", console.FormatSuccessMessage(fileName)) for _, codemodName := range appliedCodemods { fmt.Fprintf(os.Stderr, " • %s\n", codemodName) } diff --git a/pkg/cli/fix_command_test.go b/pkg/cli/fix_command_test.go index a328ea741ee..92a7b2c04fe 100644 --- a/pkg/cli/fix_command_test.go +++ b/pkg/cli/fix_command_test.go @@ -3,6 +3,7 @@ package cli import ( + "io" "os" "os/exec" "path/filepath" @@ -20,6 +21,37 @@ func getCodemodByID(id string) *Codemod { if cm.ID == id { return &cm } + + func TestProcessWorkflowFileWithInfo_WriteOutputUsesSingleCheckmark(t *testing.T) { + tmpDir := t.TempDir() + workflowFile := filepath.Join(tmpDir, "test-workflow.md") + + content := `--- + timeout_minutes: 30 + ---` + require.NoError(t, os.WriteFile(workflowFile, []byte(content), 0644)) + + timeoutCodemod := getCodemodByID("timeout-minutes-migration") + require.NotNil(t, timeoutCodemod) + + originalStderr := os.Stderr + r, w, err := os.Pipe() + require.NoError(t, err) + os.Stderr = w + t.Cleanup(func() { os.Stderr = originalStderr }) + + fixed, _, err := processWorkflowFileWithInfo(workflowFile, []Codemod{*timeoutCodemod}, true, false) + require.NoError(t, err) + require.True(t, fixed) + + require.NoError(t, w.Close()) + outputBytes, err := io.ReadAll(r) + require.NoError(t, err) + output := string(outputBytes) + + assert.Contains(t, output, "✓ test-workflow.md") + assert.NotContains(t, output, "✓ ✓ test-workflow.md") + } } return nil } From b7c6110a133b22bafcb037bf9f5b1d488b27c813 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Jun 2026 00:38:51 +0000 Subject: [PATCH 2/2] Add regression test for single checkmark output Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/cli/fix_command_test.go | 52 ++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/pkg/cli/fix_command_test.go b/pkg/cli/fix_command_test.go index 92a7b2c04fe..e148898ca08 100644 --- a/pkg/cli/fix_command_test.go +++ b/pkg/cli/fix_command_test.go @@ -21,39 +21,39 @@ func getCodemodByID(id string) *Codemod { if cm.ID == id { return &cm } + } + return nil +} - func TestProcessWorkflowFileWithInfo_WriteOutputUsesSingleCheckmark(t *testing.T) { - tmpDir := t.TempDir() - workflowFile := filepath.Join(tmpDir, "test-workflow.md") +func TestProcessWorkflowFileWithInfo_WriteOutputUsesSingleCheckmark(t *testing.T) { + tmpDir := t.TempDir() + workflowFile := filepath.Join(tmpDir, "test-workflow.md") - content := `--- - timeout_minutes: 30 - ---` - require.NoError(t, os.WriteFile(workflowFile, []byte(content), 0644)) + content := `--- +timeout_minutes: 30 +---` + require.NoError(t, os.WriteFile(workflowFile, []byte(content), 0644)) - timeoutCodemod := getCodemodByID("timeout-minutes-migration") - require.NotNil(t, timeoutCodemod) + timeoutCodemod := getCodemodByID("timeout-minutes-migration") + require.NotNil(t, timeoutCodemod) - originalStderr := os.Stderr - r, w, err := os.Pipe() - require.NoError(t, err) - os.Stderr = w - t.Cleanup(func() { os.Stderr = originalStderr }) + originalStderr := os.Stderr + r, w, err := os.Pipe() + require.NoError(t, err) + os.Stderr = w + t.Cleanup(func() { os.Stderr = originalStderr }) - fixed, _, err := processWorkflowFileWithInfo(workflowFile, []Codemod{*timeoutCodemod}, true, false) - require.NoError(t, err) - require.True(t, fixed) + fixed, _, err := processWorkflowFileWithInfo(workflowFile, []Codemod{*timeoutCodemod}, true, false) + require.NoError(t, err) + require.True(t, fixed) - require.NoError(t, w.Close()) - outputBytes, err := io.ReadAll(r) - require.NoError(t, err) - output := string(outputBytes) + require.NoError(t, w.Close()) + outputBytes, err := io.ReadAll(r) + require.NoError(t, err) + output := string(outputBytes) - assert.Contains(t, output, "✓ test-workflow.md") - assert.NotContains(t, output, "✓ ✓ test-workflow.md") - } - } - return nil + assert.Contains(t, output, "✓ test-workflow.md") + assert.NotContains(t, output, "✓ ✓ test-workflow.md") } func TestFixCommand_TimeoutMinutesMigration(t *testing.T) {