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  }