@@ -1010,6 +1010,39 @@ func TestStreamForbiddenStdout(t *testing.T) {
10101010 })
10111011}
10121012
1013+ func TestInvalidStreamRequirements (t * testing.T ) {
1014+ t .Parallel ()
1015+ ctx := context .Background ()
1016+
1017+ t .Run ("stdin" , func (t * testing.T ) {
1018+ t .Parallel ()
1019+ stdout := & closeTrackingWriter {}
1020+ p := pipe .New (pipe .WithStdoutCloser (stdout ))
1021+ p .Add (requirementStage {
1022+ name : "source" ,
1023+ requirement : pipe.StageRequirements {
1024+ Stdin : pipe .StreamRequirement (123 ),
1025+ },
1026+ })
1027+ require .ErrorContains (t , p .Run (ctx ), `stdin: invalid stream requirement 123` )
1028+ assert .True (t , stdout .closed , "WithStdoutCloser destination should be closed" )
1029+ })
1030+
1031+ t .Run ("stdout" , func (t * testing.T ) {
1032+ t .Parallel ()
1033+ stdout := & closeTrackingWriter {}
1034+ p := pipe .New (pipe .WithStdoutCloser (stdout ))
1035+ p .Add (requirementStage {
1036+ name : "sink" ,
1037+ requirement : pipe.StageRequirements {
1038+ Stdout : pipe .StreamRequirement (123 ),
1039+ },
1040+ })
1041+ require .ErrorContains (t , p .Run (ctx ), `stdout: invalid stream requirement 123` )
1042+ assert .True (t , stdout .closed , "WithStdoutCloser destination should be closed" )
1043+ })
1044+ }
1045+
10131046func TestStreamForbiddenMiddleStage (t * testing.T ) {
10141047 t .Parallel ()
10151048 ctx := context .Background ()
0 commit comments