@@ -69,3 +69,58 @@ func TestPersistentPreRunEConfigFallback(t *testing.T) {
6969 err := rootCmd .PersistentPreRunE (cmd , nil )
7070 require .NoError (t , err )
7171}
72+
73+ func TestCommandPathFromArgs (t * testing.T ) {
74+ tests := []struct {
75+ name string
76+ args []string
77+ want string
78+ }{
79+ {
80+ name : "simple subcommand" ,
81+ args : []string {"dune" , "query" , "list" },
82+ want : "query list" ,
83+ },
84+ {
85+ name : "root flag before subcommand" ,
86+ args : []string {"dune" , "--api-key" , "KEY" , "query" , "list" },
87+ want : "query list" ,
88+ },
89+ {
90+ name : "flag with equals syntax" ,
91+ args : []string {"dune" , "--api-key=KEY" , "query" , "list" },
92+ want : "query list" ,
93+ },
94+ {
95+ name : "trailing flags after subcommand" ,
96+ args : []string {"dune" , "query" , "list" , "--limit" , "10" },
97+ want : "query list" ,
98+ },
99+ {
100+ name : "flags before and after subcommand" ,
101+ args : []string {"dune" , "--api-key" , "KEY" , "query" , "list" , "--limit" , "10" },
102+ want : "query list" ,
103+ },
104+ {
105+ name : "binary only" ,
106+ args : []string {"dune" },
107+ want : "unknown" ,
108+ },
109+ {
110+ name : "only flags" ,
111+ args : []string {"dune" , "--help" },
112+ want : "unknown" ,
113+ },
114+ {
115+ name : "single subcommand" ,
116+ args : []string {"dune" , "auth" },
117+ want : "auth" ,
118+ },
119+ }
120+
121+ for _ , tt := range tests {
122+ t .Run (tt .name , func (t * testing.T ) {
123+ assert .Equal (t , tt .want , commandPathFromArgs (tt .args ))
124+ })
125+ }
126+ }
0 commit comments