github.com/azure/draft-classic@v0.16.0/pkg/draft/pack/pack_test.go (about) 1 package pack 2 3 import ( 4 "bytes" 5 "io" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "k8s.io/helm/pkg/proto/hapi/chart" 12 ) 13 14 const testDockerfile = `FROM nginx:latest 15 ` 16 const testTasksFile = `[pre-up] 17 pre-up-task = "echo pre-up" 18 19 [post-deploy] 20 setup-task = "echo setup" 21 22 [cleanup] 23 cleanup-task = "echo cleanup" 24 ` 25 26 func TestSaveDir(t *testing.T) { 27 p := &Pack{ 28 Chart: &chart.Chart{ 29 Metadata: &chart.Metadata{ 30 Name: "chart-for-nigel-thornberry", 31 }, 32 }, 33 Files: map[string]io.ReadCloser{ 34 dockerfileName: ioutil.NopCloser(bytes.NewBufferString(testDockerfile)), 35 TasksFileName: ioutil.NopCloser(bytes.NewBufferString(testTasksFile)), 36 }, 37 } 38 dir, err := ioutil.TempDir("", "draft-pack-test") 39 if err != nil { 40 t.Fatal(err) 41 } 42 defer os.RemoveAll(dir) 43 44 if err := p.SaveDir(dir); err != nil { 45 t.Errorf("expected there to be no error when writing to %v, got %v", dir, err) 46 } 47 48 _, err = os.Stat(filepath.Join(dir, dockerfileName)) 49 if err != nil { 50 if os.IsNotExist(err) { 51 t.Errorf("Expected %s to be created but wasn't", dockerfileName) 52 } else { 53 t.Fatal(err) 54 } 55 } 56 57 tasksPath := filepath.Join(dir, TargetTasksFileName) 58 _, err = os.Stat(tasksPath) 59 if err != nil { 60 if os.IsNotExist(err) { 61 t.Errorf("Expected %s to have been created but wasnt", TargetTasksFileName) 62 } else { 63 t.Fatal(err) 64 } 65 } 66 67 data, err := ioutil.ReadFile(tasksPath) 68 if err != nil { 69 t.Fatal(err) 70 } 71 if string(data) == "" { 72 t.Error("Expected content in .draft-tasks.toml, got empty string") 73 } 74 } 75 76 func TestSaveDirDockerfileExistsInAppDir(t *testing.T) { 77 p := &Pack{ 78 Chart: &chart.Chart{ 79 Metadata: &chart.Metadata{ 80 Name: "chart-for-nigel-thornberry", 81 }, 82 }, 83 Files: map[string]io.ReadCloser{ 84 dockerfileName: ioutil.NopCloser(bytes.NewBufferString(testDockerfile)), 85 }, 86 } 87 dir, err := ioutil.TempDir("", "draft-pack-test") 88 if err != nil { 89 t.Fatal(err) 90 } 91 defer os.RemoveAll(dir) 92 93 tmpfn := filepath.Join(dir, "Dockerfile") 94 expectedDockerfile := []byte("FROM draft") 95 if err := ioutil.WriteFile(tmpfn, expectedDockerfile, 0644); err != nil { 96 t.Fatal(err) 97 } 98 99 if err := p.SaveDir(dir); err != nil { 100 t.Errorf("expected there to be no error when writing to %v, got %v", dir, err) 101 } 102 103 savedDockerfile, err := ioutil.ReadFile(tmpfn) 104 if err != nil { 105 t.Fatal(err) 106 } 107 108 if !bytes.Equal(savedDockerfile, expectedDockerfile) { 109 t.Errorf("expected '%s', got '%s'", string(expectedDockerfile), string(savedDockerfile)) 110 } 111 }