Skip to content

Commit

Permalink
Test commandName subcommand 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 10, 2025
1 parent 6ecb8d4 commit c52c3b3
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
@@ -114,13 +114,14 @@ func wrapRunE(c *cobra.Command, cmdSpan trace.Span, tracingShutdown tracing.Shut
}
}

// commandName returns the path components for a given command.
// commandName returns the path components for a given command,
// in reverse alphabetical order for consistent usage metrics.
//
// The root Compose command and anything before (i.e. "docker")
// are not included.
//
// For example:
// - docker compose alpha watch -> [alpha, watch]
// - docker compose alpha watch -> [watch, alpha]
// - docker-compose up -> [up]
func commandName(cmd *cobra.Command) []string {
var name []string
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 -> [watch, alpha]",
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{"watch", "alpha"},
},
{
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 c52c3b3

Please sign in to comment.