@@ -1626,3 +1626,108 @@ func TestCalledAs(t *testing.T) {
16261626 t .Run (name , tc .test )
16271627 }
16281628}
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