github.com/thriqon/involucro@v1.1.3/integrationtest/26_correctly_handle_files_test.go (about)

     1  package integrationtest
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/fsouza/go-dockerclient"
    10  	"github.com/involucro/involucro/app"
    11  )
    12  
    13  func TestFileHandlingSymlinks(t *testing.T) {
    14  	if testing.Short() {
    15  		t.SkipNow()
    16  	}
    17  	dir, err := ioutil.TempDir("", "inttest-26")
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	defer os.RemoveAll(dir)
    22  
    23  	if err := os.Mkdir(filepath.Join(dir, "p"), 0755); err != nil {
    24  		t.Fatal(err)
    25  	}
    26  
    27  	if err, ok := os.Symlink("../p", filepath.Join(dir, "p", "cur")).(*os.LinkError); ok && err != nil {
    28  		t.Fatal(err)
    29  	}
    30  
    31  	c, err := docker.NewClientFromEnv()
    32  	if err != nil {
    33  		t.Fatal(err)
    34  	}
    35  
    36  	args := []string{
    37  		"involucro",
    38  		"-e",
    39  		"inv.task('wrap').wrap('" + dir + "').at('/data').inImage('busybox').as('inttest/26')",
    40  		"wrap",
    41  	}
    42  	defer func() {
    43  		c.RemoveImage("inttest/26")
    44  	}()
    45  
    46  	if err := app.Main(args); err != nil {
    47  		t.Fatal(err)
    48  	}
    49  
    50  	args = []string{
    51  		"involucro",
    52  		"-e",
    53  		"inv.task('test').using('inttest/26').run('ls', '/data/p/cur/cur/cur/cur')",
    54  		"test",
    55  	}
    56  
    57  	if err := app.Main(args); err != nil {
    58  		t.Error(err)
    59  	}
    60  }