@@ -38,6 +38,31 @@ func TestSimple(t *testing.T) {
38
38
runAndCompare (t , toTest , "1\n " )
39
39
}
40
40
41
+ func TestSimple_runAndGet (t * testing.T ) {
42
+ stdout , stderr , err := Builder ().
43
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).
44
+ Finalize ().RunAndGet ()
45
+
46
+ assert .NoError (t , err )
47
+ assert .Equal (t , "TEST\n " , stdout )
48
+ assert .Equal (t , "ERROR\n " , stderr )
49
+ }
50
+
51
+ func TestSimple_runAndGet_withForks (t * testing.T ) {
52
+ outFork := & bytes.Buffer {}
53
+ errFork := & bytes.Buffer {}
54
+
55
+ stdout , stderr , err := Builder ().
56
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithOutputForks (outFork ).WithErrorForks (errFork ).
57
+ Finalize ().RunAndGet ()
58
+
59
+ assert .NoError (t , err )
60
+ assert .Equal (t , "TEST\n " , outFork .String ())
61
+ assert .Equal (t , "TEST\n " , stdout )
62
+ assert .Equal (t , "ERROR\n " , errFork .String ())
63
+ assert .Equal (t , "ERROR\n " , stderr )
64
+ }
65
+
41
66
func TestSimple_apply (t * testing.T ) {
42
67
toTest := Builder ().
43
68
Join (testHelper , "-pwd" ).Apply (func (_ int , command * exec.Cmd ) {
@@ -73,6 +98,106 @@ func TestSimple_stderr(t *testing.T) {
73
98
assert .Equal (t , "ERROR\n " , output .String ())
74
99
}
75
100
101
+ func TestSimple_with_error (t * testing.T ) {
102
+ output := & bytes.Buffer {}
103
+ output2 := & bytes.Buffer {}
104
+
105
+ err := Builder ().
106
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).
107
+ Finalize ().WithError (output ).WithError (output2 ).Run ()
108
+
109
+ assert .NoError (t , err )
110
+ assert .Equal (t , "" , output .String (), "first output stream should be overwritten" )
111
+ assert .Equal (t , "ERROR\n " , output2 .String ())
112
+ }
113
+
114
+ func TestSimple_with_additional_error_fork (t * testing.T ) {
115
+ output := & bytes.Buffer {}
116
+ output2 := & bytes.Buffer {}
117
+
118
+ err := Builder ().
119
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithErrorForks (output ).WithAdditionalErrorForks (output2 ).
120
+ Finalize ().Run ()
121
+
122
+ assert .NoError (t , err )
123
+ assert .Equal (t , "ERROR\n " , output .String ())
124
+ assert .Equal (t , "ERROR\n " , output2 .String ())
125
+ }
126
+
127
+ func TestSimple_with_additional_error_fork2 (t * testing.T ) {
128
+ output := & bytes.Buffer {}
129
+
130
+ err := Builder ().
131
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithAdditionalErrorForks (output ).
132
+ Finalize ().Run ()
133
+
134
+ assert .NoError (t , err )
135
+ assert .Equal (t , "ERROR\n " , output .String ())
136
+ }
137
+
138
+ func TestSimple_with_additional_error (t * testing.T ) {
139
+ output := & bytes.Buffer {}
140
+ output2 := & bytes.Buffer {}
141
+
142
+ err := Builder ().
143
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).
144
+ Finalize ().WithAdditionalError (output ).WithAdditionalError (output2 ).Run ()
145
+
146
+ assert .NoError (t , err )
147
+ assert .Equal (t , "ERROR\n " , output .String ())
148
+ assert .Equal (t , "ERROR\n " , output2 .String ())
149
+ }
150
+
151
+ func TestSimple_with_output (t * testing.T ) {
152
+ output := & bytes.Buffer {}
153
+ output2 := & bytes.Buffer {}
154
+
155
+ err := Builder ().
156
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).
157
+ Finalize ().WithOutput (output ).WithOutput (output2 ).Run ()
158
+
159
+ assert .NoError (t , err )
160
+ assert .Equal (t , "" , output .String (), "first output stream should be overwritten" )
161
+ assert .Equal (t , "TEST\n " , output2 .String ())
162
+ }
163
+
164
+ func TestSimple_with_additional_output_fork (t * testing.T ) {
165
+ output := & bytes.Buffer {}
166
+ output2 := & bytes.Buffer {}
167
+
168
+ err := Builder ().
169
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithOutputForks (output ).WithAdditionalOutputForks (output2 ).
170
+ Finalize ().Run ()
171
+
172
+ assert .NoError (t , err )
173
+ assert .Equal (t , "TEST\n " , output .String ())
174
+ assert .Equal (t , "TEST\n " , output2 .String ())
175
+ }
176
+
177
+ func TestSimple_with_additional_output_fork2 (t * testing.T ) {
178
+ output := & bytes.Buffer {}
179
+
180
+ err := Builder ().
181
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithAdditionalOutputForks (output ).
182
+ Finalize ().Run ()
183
+
184
+ assert .NoError (t , err )
185
+ assert .Equal (t , "TEST\n " , output .String ())
186
+ }
187
+
188
+ func TestSimple_with_additional_output (t * testing.T ) {
189
+ output := & bytes.Buffer {}
190
+ output2 := & bytes.Buffer {}
191
+
192
+ err := Builder ().
193
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).
194
+ Finalize ().WithAdditionalOutput (output ).WithAdditionalOutput (output2 ).Run ()
195
+
196
+ assert .NoError (t , err )
197
+ assert .Equal (t , "TEST\n " , output .String ())
198
+ assert .Equal (t , "TEST\n " , output2 .String ())
199
+ }
200
+
76
201
func TestSimple_multi_stdout (t * testing.T ) {
77
202
output1 := & bytes.Buffer {}
78
203
output2 := & bytes.Buffer {}
@@ -85,6 +210,19 @@ func TestSimple_multi_stdout(t *testing.T) {
85
210
assert .Equal (t , output1 .String (), output2 .String ())
86
211
}
87
212
213
+ func TestSimple_multi_stdout_mixed (t * testing.T ) {
214
+ output1 := & bytes.Buffer {}
215
+ output2 := & bytes.Buffer {}
216
+
217
+ err := Builder ().
218
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithOutputForks (output1 ).
219
+ Finalize ().WithAdditionalOutput (output2 ).Run ()
220
+
221
+ assert .NoError (t , err )
222
+ assert .Equal (t , "TEST\n " , output1 .String ())
223
+ assert .Equal (t , "TEST\n " , output2 .String ())
224
+ }
225
+
88
226
func TestSimple_multi_stderr (t * testing.T ) {
89
227
output1 := & bytes.Buffer {}
90
228
output2 := & bytes.Buffer {}
@@ -97,6 +235,45 @@ func TestSimple_multi_stderr(t *testing.T) {
97
235
assert .Equal (t , output1 .String (), output2 .String ())
98
236
}
99
237
238
+ func TestSimple_multi_stderr_mixed (t * testing.T ) {
239
+ output1 := & bytes.Buffer {}
240
+ output2 := & bytes.Buffer {}
241
+
242
+ err := Builder ().
243
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithErrorForks (output1 ).
244
+ Finalize ().WithAdditionalError (output2 ).Run ()
245
+
246
+ assert .NoError (t , err )
247
+ assert .Equal (t , "ERROR\n " , output1 .String ())
248
+ assert .Equal (t , "ERROR\n " , output2 .String ())
249
+ }
250
+
251
+ func TestSimple_withOutput_overrides_prev (t * testing.T ) {
252
+ output1 := & bytes.Buffer {}
253
+ output2 := & bytes.Buffer {}
254
+
255
+ err := Builder ().
256
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithOutputForks (output1 ).
257
+ Finalize ().WithOutput (output2 ).Run ()
258
+
259
+ assert .NoError (t , err )
260
+ assert .Equal (t , "" , output1 .String (), "first output stream should be overwritten" )
261
+ assert .Equal (t , "TEST\n " , output2 .String ())
262
+ }
263
+
264
+ func TestSimple_withError_overrides_prev (t * testing.T ) {
265
+ output1 := & bytes.Buffer {}
266
+ output2 := & bytes.Buffer {}
267
+
268
+ err := Builder ().
269
+ Join (testHelper , "-e" , "ERROR" , "-o" , "TEST" ).WithErrorForks (output1 ).
270
+ Finalize ().WithError (output2 ).Run ()
271
+
272
+ assert .NoError (t , err )
273
+ assert .Equal (t , "" , output1 .String (), "first output stream should be overwritten" )
274
+ assert .Equal (t , "ERROR\n " , output2 .String ())
275
+ }
276
+
100
277
func TestSimple_WithInput (t * testing.T ) {
101
278
toTest := Builder ().
102
279
WithInput (strings .NewReader ("TEST\n OUTPUT" )).
0 commit comments