11 func TestReadAll(t *testing.T) {
12 tmpDir, err := ioutil.TempDir("", "dockerignore-test")
16 defer os.RemoveAll(tmpDir)
18 di, err := ReadAll(nil)
20 t.Fatalf("Expected not to have error, got %v", err)
23 if diLen := len(di); diLen != 0 {
24 t.Fatalf("Expected to have zero dockerignore entry, got %d", diLen)
27 diName := filepath.Join(tmpDir, ".dockerignore")
28 content := fmt.Sprintf("test1\n/test2\n/a/file/here\n\nlastfile\n# this is a comment\n! /inverted/abs/path\n!\n! \n")
29 err = ioutil.WriteFile(diName, []byte(content), 0777)
34 diFd, err := os.Open(diName)
40 di, err = ReadAll(diFd)
46 t.Fatalf("Expected 5 entries, got %v", len(di))
49 t.Fatal("First element is not test1")
51 if di[1] != "test2" { // according to https://docs.docker.com/engine/reference/builder/#dockerignore-file, /foo/bar should be treated as foo/bar
52 t.Fatal("Second element is not test2")
54 if di[2] != "a/file/here" { // according to https://docs.docker.com/engine/reference/builder/#dockerignore-file, /foo/bar should be treated as foo/bar
55 t.Fatal("Third element is not a/file/here")
57 if di[3] != "lastfile" {
58 t.Fatal("Fourth element is not lastfile")
60 if di[4] != "!inverted/abs/path" {
61 t.Fatal("Fifth element is not !inverted/abs/path")
64 t.Fatalf("Sixth element is not !, but %s", di[5])
67 t.Fatalf("Sixth element is not !, but %s", di[6])