github.com/thriqon/involucro@v1.1.3/integrationtest/hooks_test.go (about) 1 package integrationtest 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 ) 8 9 func TestIoLines(t *testing.T) { 10 if testing.Short() { 11 t.SkipNow() 12 } 13 if err := ioutil.WriteFile("iolines_test.txt", []byte("ASD\nDSA"), 0755); err != nil { 14 t.Fatal(err) 15 } 16 defer os.Remove("iolines_test.txt") 17 18 script := ` 19 for line in io.lines('iolines_test.txt') do 20 inv.task('do' .. line) 21 .using('busybox') 22 .run('echo', 'TESTOK') 23 end` 24 25 cases := []string{"ASD", "DSA"} 26 27 for _, el := range cases { 28 assertStdoutContainsFlag([]string{ 29 "-e", script, "do" + el, 30 }, "TESTOK", t) 31 } 32 } 33 34 func TestHooksWithIoLines(t *testing.T) { 35 if testing.Short() { 36 t.SkipNow() 37 } 38 ioutil.WriteFile("37_lines.txt", []byte{}, 0755) 39 40 defer func() { 41 os.Remove("37_lines.txt") 42 }() 43 script := ` 44 inv.task('write') 45 .using('busybox') 46 .run('/bin/sh', '-c', 'echo A >> 37_lines.txt && echo B >> 37_lines.txt && echo C >> 37_lines.txt') 47 48 inv.task('modify') 49 .hook(function () 50 for line in io.lines("37_lines.txt") do 51 inv.task('do' .. line).using('busybox').run('echo', line) 52 end 53 end) 54 ` 55 56 assertStdoutContainsFlag([]string{"-e", script, "write", "modify", "doB"}, "B", t) 57 }