@@ -23,6 +23,7 @@ import (
2323 "context"
2424 "io"
2525 "io/ioutil"
26+ "net/url"
2627 "os"
2728 "path/filepath"
2829 "runtime"
@@ -153,3 +154,44 @@ func initProducers(t *testing.T, producers producers, stdout, stderr string) {
153154 assert .NilError (t , err )
154155 assert .NilError (t , producers .Stderr .Close ())
155156}
157+
158+ func TestBinaryIOArgs (t * testing.T ) {
159+ res , err := BinaryIO ("/file.bin" , map [string ]string {"id" : "1" })("" )
160+ assert .NilError (t , err )
161+ assert .Equal (t , "binary:///file.bin?id=1" , res .Config ().Stdout )
162+ assert .Equal (t , "binary:///file.bin?id=1" , res .Config ().Stderr )
163+ }
164+
165+ func TestBinaryIOAbsolutePath (t * testing.T ) {
166+ res , err := BinaryIO ("/full/path/bin" , nil )("!" )
167+ assert .NilError (t , err )
168+
169+ // Test parse back
170+ parsed , err := url .Parse (res .Config ().Stdout )
171+ assert .NilError (t , err )
172+ assert .Equal (t , "binary" , parsed .Scheme )
173+ assert .Equal (t , "/full/path/bin" , parsed .Path )
174+ }
175+
176+ func TestBinaryIOFailOnRelativePath (t * testing.T ) {
177+ _ , err := BinaryIO ("./bin" , nil )("!" )
178+ assert .Error (t , err , "absolute path needed" )
179+ }
180+
181+ func TestLogFileAbsolutePath (t * testing.T ) {
182+ res , err := LogFile ("/full/path/file.txt" )("!" )
183+ assert .NilError (t , err )
184+ assert .Equal (t , "file:///full/path/file.txt" , res .Config ().Stdout )
185+ assert .Equal (t , "file:///full/path/file.txt" , res .Config ().Stderr )
186+
187+ // Test parse back
188+ parsed , err := url .Parse (res .Config ().Stdout )
189+ assert .NilError (t , err )
190+ assert .Equal (t , "file" , parsed .Scheme )
191+ assert .Equal (t , "/full/path/file.txt" , parsed .Path )
192+ }
193+
194+ func TestLogFileFailOnRelativePath (t * testing.T ) {
195+ _ , err := LogFile ("./file.txt" )("!" )
196+ assert .Error (t , err , "absolute path needed" )
197+ }
0 commit comments