@@ -4386,11 +4386,6 @@ func TestCommandCategories(t *testing.T) {
43864386}
43874387
43884388func TestCommandSliceFlagSeparator (t * testing.T ) {
4389- oldSep := defaultSliceFlagSeparator
4390- defer func () {
4391- defaultSliceFlagSeparator = oldSep
4392- }()
4393-
43944389 cmd := & Command {
43954390 SliceFlagSeparator : ";" ,
43964391 Flags : []Flag {
@@ -4405,6 +4400,26 @@ func TestCommandSliceFlagSeparator(t *testing.T) {
44054400 r .Equal ([]string {"ff" , "dd" , "gg" , "t,u" }, cmd .Value ("foo" ))
44064401}
44074402
4403+ func TestCommandMapKeyValueFlagSeparator (t * testing.T ) {
4404+ cmd := & Command {
4405+ MapFlagKeyValueSeparator : ":" ,
4406+ Flags : []Flag {
4407+ & StringMapFlag {
4408+ Name : "f_string_map" ,
4409+ },
4410+ },
4411+ }
4412+
4413+ r := require .New (t )
4414+ r .NoError (cmd .Run (buildTestContext (t ), []string {"app" , "--f_string_map" , "s1:s2,s3:" , "--f_string_map" , "s4:s5" }))
4415+ exp := map [string ]string {
4416+ "s1" : "s2" ,
4417+ "s3" : "" ,
4418+ "s4" : "s5" ,
4419+ }
4420+ r .Equal (exp , cmd .Value ("f_string_map" ))
4421+ }
4422+
44084423// TestStringFlagTerminator tests the string flag "--flag" with "--" terminator.
44094424func TestStringFlagTerminator (t * testing.T ) {
44104425 tests := []struct {
@@ -4754,6 +4769,7 @@ func TestJSONExportCommand(t *testing.T) {
47544769 "metadata": null,
47554770 "sliceFlagSeparator": "",
47564771 "disableSliceFlagSeparator": false,
4772+ "mapFlagKeyValueSeparator": "",
47574773 "useShortOptionHandling": false,
47584774 "suggest": false,
47594775 "allowExtFlags": false,
@@ -4817,6 +4833,7 @@ func TestJSONExportCommand(t *testing.T) {
48174833 "metadata": null,
48184834 "sliceFlagSeparator": "",
48194835 "disableSliceFlagSeparator": false,
4836+ "mapFlagKeyValueSeparator": "",
48204837 "useShortOptionHandling": false,
48214838 "suggest": false,
48224839 "allowExtFlags": false,
@@ -4851,6 +4868,7 @@ func TestJSONExportCommand(t *testing.T) {
48514868 "metadata": null,
48524869 "sliceFlagSeparator": "",
48534870 "disableSliceFlagSeparator": false,
4871+ "mapFlagKeyValueSeparator": "",
48544872 "useShortOptionHandling": false,
48554873 "suggest": false,
48564874 "allowExtFlags": false,
@@ -4882,6 +4900,7 @@ func TestJSONExportCommand(t *testing.T) {
48824900 "metadata": null,
48834901 "sliceFlagSeparator": "",
48844902 "disableSliceFlagSeparator": false,
4903+ "mapFlagKeyValueSeparator": "",
48854904 "useShortOptionHandling": false,
48864905 "suggest": false,
48874906 "allowExtFlags": false,
@@ -4932,6 +4951,7 @@ func TestJSONExportCommand(t *testing.T) {
49324951 "metadata": null,
49334952 "sliceFlagSeparator": "",
49344953 "disableSliceFlagSeparator": false,
4954+ "mapFlagKeyValueSeparator": "",
49354955 "useShortOptionHandling": false,
49364956 "suggest": false,
49374957 "allowExtFlags": false,
@@ -4999,6 +5019,7 @@ func TestJSONExportCommand(t *testing.T) {
49995019 "metadata": null,
50005020 "sliceFlagSeparator": "",
50015021 "disableSliceFlagSeparator": false,
5022+ "mapFlagKeyValueSeparator": "",
50025023 "useShortOptionHandling": false,
50035024 "suggest": false,
50045025 "allowExtFlags": false,
@@ -5062,6 +5083,7 @@ func TestJSONExportCommand(t *testing.T) {
50625083 "metadata": null,
50635084 "sliceFlagSeparator": "",
50645085 "disableSliceFlagSeparator": false,
5086+ "mapFlagKeyValueSeparator": "",
50655087 "useShortOptionHandling": false,
50665088 "suggest": false,
50675089 "allowExtFlags": false,
@@ -5169,6 +5191,7 @@ func TestJSONExportCommand(t *testing.T) {
51695191 "metadata": null,
51705192 "sliceFlagSeparator": "",
51715193 "disableSliceFlagSeparator": false,
5194+ "mapFlagKeyValueSeparator": "",
51725195 "useShortOptionHandling": false,
51735196 "suggest": false,
51745197 "allowExtFlags": false,
@@ -5284,3 +5307,31 @@ func TestCommand_ExclusiveFlagsWithAfter(t *testing.T) {
52845307 }))
52855308 require .True (t , called )
52865309}
5310+
5311+ func TestCommand_ParallelRun (t * testing.T ) {
5312+ t .Parallel ()
5313+
5314+ for i := 0 ; i < 10 ; i ++ {
5315+ t .Run (fmt .Sprintf ("run_%d" , i ), func (t * testing.T ) {
5316+ t .Parallel ()
5317+
5318+ defer func () {
5319+ if r := recover (); r != nil {
5320+ t .Errorf ("unexpected panic - '%s'" , r )
5321+ }
5322+ }()
5323+
5324+ cmd := & Command {
5325+ Name : "debug" ,
5326+ Usage : "make an explosive entrance" ,
5327+ Action : func (_ context.Context , cmd * Command ) error {
5328+ return nil
5329+ },
5330+ }
5331+
5332+ if err := cmd .Run (context .Background (), nil ); err != nil {
5333+ fmt .Printf ("%s\n " , err )
5334+ }
5335+ })
5336+ }
5337+ }
0 commit comments