@@ -840,12 +840,14 @@ func TestCommand_OptionsWithSharedValue(t *testing.T) {
840840				{
841841					Name :    "url" ,
842842					Flag :    "url" ,
843+ 					Env :     "URL" ,
843844					Default : def ,
844845					Value :   serpent .StringOf (& got ),
845846				},
846847				{
847848					Name :    "alt-url" ,
848849					Flag :    "alt-url" ,
850+ 					Env :     "ALT_URL" ,
849851					Default : altDef ,
850852					Value :   serpent .StringOf (& got ),
851853				},
@@ -873,6 +875,30 @@ func TestCommand_OptionsWithSharedValue(t *testing.T) {
873875	require .NoError (t , err )
874876	require .Equal (t , "hup" , got )
875877
878+ 	// Both flags are given, last wins. 
879+ 	err  =  makeCmd ("def.com" , "" ).Invoke ("--url" , "sup" , "--alt-url" , "hup" ).Run ()
880+ 	require .NoError (t , err )
881+ 	require .Equal (t , "hup" , got )
882+ 
883+ 	// Both flags are given, last wins #2. 
884+ 	err  =  makeCmd ("" , "def.com" ).Invoke ("--alt-url" , "hup" , "--url" , "sup" ).Run ()
885+ 	require .NoError (t , err )
886+ 	require .Equal (t , "sup" , got )
887+ 
888+ 	// Both flags are given, option type priority wins. 
889+ 	inv  :=  makeCmd ("def.com" , "" ).Invoke ("--alt-url" , "hup" )
890+ 	inv .Environ .Set ("URL" , "sup" )
891+ 	err  =  inv .Run ()
892+ 	require .NoError (t , err )
893+ 	require .Equal (t , "hup" , got )
894+ 
895+ 	// Both flags are given, option type priority wins #2. 
896+ 	inv  =  makeCmd ("" , "def.com" ).Invoke ("--url" , "sup" )
897+ 	inv .Environ .Set ("ALT_URL" , "hup" )
898+ 	err  =  inv .Run ()
899+ 	require .NoError (t , err )
900+ 	require .Equal (t , "sup" , got )
901+ 
876902	// Catch invalid configuration. 
877903	err  =  makeCmd ("def.com" , "alt-def.com" ).Invoke ().Run ()
878904	require .Error (t , err , "default values are different" )
0 commit comments