Skip to content

Commit

Permalink
Fix commandName to return subcommands in CLI order
Browse files Browse the repository at this point in the history
Signed-off-by: Max Proske <max@mproske.com>
  • Loading branch information
maxproske committed Feb 7, 2025
1 parent 6ecb8d4 commit a61163b
Showing 2 changed files with 52 additions and 2 deletions.
5 changes: 3 additions & 2 deletions cmd/cmdtrace/cmd_span.go
Original file line number Diff line number Diff line change
@@ -20,7 +20,6 @@ import (
"context"
"errors"
"fmt"
"sort"
"strings"
"time"

@@ -130,7 +129,9 @@ func commandName(cmd *cobra.Command) []string {
}
name = append(name, c.Name())
}
sort.Sort(sort.Reverse(sort.StringSlice(name)))
for i, j := 0, len(name)-1; i < j; i, j = i+1, j-1 {
name[i], name[j] = name[j], name[i]
}
return name
}

49 changes: 49 additions & 0 deletions cmd/cmdtrace/cmd_span_test.go
Original file line number Diff line number Diff line change
@@ -20,6 +20,8 @@ import (
"reflect"
"testing"

commands "github.com/docker/compose/v2/cmd/compose"
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"
)

@@ -61,3 +63,50 @@ func TestGetFlags(t *testing.T) {
})
}
}

func TestCommandName(t *testing.T) {
tests := []struct {
name string
setupCmd func() *cobra.Command
want []string
}{
{
name: "docker compose alpha watch -> [alpha, watch]",
setupCmd: func() *cobra.Command {
dockerCmd := &cobra.Command{Use: "docker"}
composeCmd := &cobra.Command{Use: commands.PluginName}
alphaCmd := &cobra.Command{Use: "alpha"}
watchCmd := &cobra.Command{Use: "watch"}

dockerCmd.AddCommand(composeCmd)
composeCmd.AddCommand(alphaCmd)
alphaCmd.AddCommand(watchCmd)

return watchCmd
},
want: []string{"alpha", "watch"},
},
{
name: "docker-compose up -> [up]",
setupCmd: func() *cobra.Command {
dockerComposeCmd := &cobra.Command{Use: commands.PluginName}
upCmd := &cobra.Command{Use: "up"}

dockerComposeCmd.AddCommand(upCmd)

return upCmd
},
want: []string{"up"},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
cmd := tt.setupCmd()
got := commandName(cmd)
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("commandName() = %v, want %v", got, tt.want)
}
})
}
}

0 comments on commit a61163b

Please sign in to comment.