@@ -1626,3 +1626,108 @@ func TestCalledAs(t *testing.T) {
1626
1626
t .Run (name , tc .test )
1627
1627
}
1628
1628
}
1629
+
1630
+ func TestFParseErrWhitelistBackwardCompatibility (t * testing.T ) {
1631
+ c := & Command {Use : "c" , Run : emptyRun }
1632
+ c .Flags ().BoolP ("boola" , "a" , false , "a boolean flag" )
1633
+
1634
+ output , err := executeCommand (c , "c" , "-a" , "--unknown" , "flag" )
1635
+ if err == nil {
1636
+ t .Error ("expected unknown flag error" )
1637
+ }
1638
+ checkStringContains (t , output , "unknown flag: --unknown" )
1639
+ }
1640
+
1641
+ func TestFParseErrWhitelistSameCommand (t * testing.T ) {
1642
+ c := & Command {
1643
+ Use : "c" ,
1644
+ Run : emptyRun ,
1645
+ FParseErrWhitelist : FParseErrWhitelist {
1646
+ UnknownFlags : true ,
1647
+ },
1648
+ }
1649
+ c .Flags ().BoolP ("boola" , "a" , false , "a boolean flag" )
1650
+
1651
+ _ , err := executeCommand (c , "c" , "-a" , "--unknown" , "flag" )
1652
+ if err != nil {
1653
+ t .Error ("unexpected error: " , err )
1654
+ }
1655
+ }
1656
+
1657
+ func TestFParseErrWhitelistParentCommand (t * testing.T ) {
1658
+ root := & Command {
1659
+ Use : "root" ,
1660
+ Run : emptyRun ,
1661
+ FParseErrWhitelist : FParseErrWhitelist {
1662
+ UnknownFlags : true ,
1663
+ },
1664
+ }
1665
+
1666
+ c := & Command {
1667
+ Use : "child" ,
1668
+ Run : emptyRun ,
1669
+ }
1670
+ c .Flags ().BoolP ("boola" , "a" , false , "a boolean flag" )
1671
+
1672
+ root .AddCommand (c )
1673
+
1674
+ output , err := executeCommand (root , "child" , "-a" , "--unknown" , "flag" )
1675
+ if err == nil {
1676
+ t .Error ("expected unknown flag error" )
1677
+ }
1678
+ checkStringContains (t , output , "unknown flag: --unknown" )
1679
+ }
1680
+
1681
+ func TestFParseErrWhitelistChildCommand (t * testing.T ) {
1682
+ root := & Command {
1683
+ Use : "root" ,
1684
+ Run : emptyRun ,
1685
+ }
1686
+
1687
+ c := & Command {
1688
+ Use : "child" ,
1689
+ Run : emptyRun ,
1690
+ FParseErrWhitelist : FParseErrWhitelist {
1691
+ UnknownFlags : true ,
1692
+ },
1693
+ }
1694
+ c .Flags ().BoolP ("boola" , "a" , false , "a boolean flag" )
1695
+
1696
+ root .AddCommand (c )
1697
+
1698
+ _ , err := executeCommand (root , "child" , "-a" , "--unknown" , "flag" )
1699
+ if err != nil {
1700
+ t .Error ("unexpected error: " , err .Error ())
1701
+ }
1702
+ }
1703
+
1704
+ func TestFParseErrWhitelistSiblingCommand (t * testing.T ) {
1705
+ root := & Command {
1706
+ Use : "root" ,
1707
+ Run : emptyRun ,
1708
+ }
1709
+
1710
+ c := & Command {
1711
+ Use : "child" ,
1712
+ Run : emptyRun ,
1713
+ FParseErrWhitelist : FParseErrWhitelist {
1714
+ UnknownFlags : true ,
1715
+ },
1716
+ }
1717
+ c .Flags ().BoolP ("boola" , "a" , false , "a boolean flag" )
1718
+
1719
+ s := & Command {
1720
+ Use : "sibling" ,
1721
+ Run : emptyRun ,
1722
+ }
1723
+ s .Flags ().BoolP ("boolb" , "b" , false , "a boolean flag" )
1724
+
1725
+ root .AddCommand (c )
1726
+ root .AddCommand (s )
1727
+
1728
+ output , err := executeCommand (root , "sibling" , "-b" , "--unknown" , "flag" )
1729
+ if err == nil {
1730
+ t .Error ("expected unknown flag error" )
1731
+ }
1732
+ checkStringContains (t , output , "unknown flag: --unknown" )
1733
+ }
0 commit comments