@@ -19,29 +19,40 @@ func TestGitSSHSignatureSuite(t *testing.T) {
1919func (s * GitSSHSignatureTestSuite ) TestAcceptsUnknownFlags () {
2020 cmd := NewGitSSHSignatureCmd (& flags.GlobalFlags {})
2121
22- // Git may pass: -Y sign -n git -f /path/to/key -U /tmp/buffer
23- // With FParseErrWhitelist, -U is treated as an unknown flag consuming
24- // /tmp/buffer as its value. This is fine because git always puts the
25- // buffer file as the last argument. We test with the buffer as a
26- // separate positional arg (no unknown flag consuming it).
22+ // Git passes: -Y sign -n git -f /path/to/key -U /dev/stdin /tmp/buffer
23+ // -U is an unknown flag that consumes /dev/stdin as its value.
24+ // /tmp/buffer remains as a positional argument.
2725 err := cmd .ParseFlags (
28- []string {"-Y" , "sign" , "-n" , "git" , "-f" , "/path/to/key" , "-U" , "/tmp/buffer" },
26+ []string {
27+ "-Y" ,
28+ "sign" ,
29+ "-n" ,
30+ "git" ,
31+ "-f" ,
32+ "/path/to/key" ,
33+ "-U" ,
34+ "/dev/stdin" ,
35+ "/tmp/buffer" ,
36+ },
2937 )
3038 assert .NoError (s .T (), err , "flag parsing should succeed with unknown flag -U" )
39+
40+ args := cmd .Flags ().Args ()
41+ s .Require ().NotEmpty (args , "should have positional args" )
42+ assert .Equal (s .T (), "/tmp/buffer" , args [len (args )- 1 ],
43+ "buffer file should be preserved as last positional arg" )
3144}
3245
3346func (s * GitSSHSignatureTestSuite ) TestBufferFileAsPositionalArg () {
3447 cmd := NewGitSSHSignatureCmd (& flags.GlobalFlags {})
3548
36- // Standard git invocation: -Y sign -n git -f /path/to/key /tmp/buffer
37- // The buffer file is the last positional argument.
3849 err := cmd .ParseFlags (
3950 []string {"-Y" , "sign" , "-n" , "git" , "-f" , "/path/to/key" , "/tmp/buffer" },
4051 )
4152 assert .NoError (s .T (), err )
4253
4354 args := cmd .Flags ().Args ()
44- assert . NotEmpty ( s . T (), args , "should have positional args" )
55+ s . Require (). NotEmpty ( args , "should have positional args" )
4556 assert .Equal (s .T (), "/tmp/buffer" , args [len (args )- 1 ],
4657 "last positional arg should be the buffer file" )
4758}
@@ -52,15 +63,14 @@ func (s *GitSSHSignatureTestSuite) TestKnownFlagsParsed() {
5263 err := cmd .ParseFlags (
5364 []string {"-Y" , "sign" , "-n" , "git" , "-f" , "/path/to/key" , "/tmp/buffer" },
5465 )
55- assert .NoError (s .T (), err , "flag parsing should succeed" )
66+ assert .NoError (s .T (), err )
5667
5768 val , err := cmd .Flags ().GetString ("command" )
5869 assert .NoError (s .T (), err )
5970 assert .Equal (s .T (), "sign" , val , "command flag should be 'sign'" )
6071
61- // The buffer file should be the last positional argument
6272 args := cmd .Flags ().Args ()
63- assert . NotEmpty ( s . T (), args , "should have positional args" )
73+ s . Require (). NotEmpty ( args , "should have positional args" )
6474 assert .Equal (s .T (), "/tmp/buffer" , args [len (args )- 1 ],
6575 "last positional arg should be the buffer file" )
6676}
0 commit comments