github.com/jenkins-x/draft-repo@v0.9.0/pkg/draft/pack/load_test.go (about) 1 package pack 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 ) 9 10 const ( 11 packName = "foo" 12 expectedDockerfile = `FROM python:onbuild 13 14 CMD [ "python", "./hello.py" ] 15 16 EXPOSE 80 17 ` 18 ) 19 20 func TestFromDir(t *testing.T) { 21 pack, err := FromDir("testdata/pack-python") 22 if err != nil { 23 t.Fatalf("could not load python pack: %v", err) 24 } 25 if pack.Chart == nil { 26 t.Errorf("expected chart to be non-nil") 27 } 28 29 if string(pack.Dockerfile) != expectedDockerfile { 30 t.Errorf("expected dockerfile == expected, got '%v'", pack.Dockerfile) 31 } 32 33 if _, err := FromDir("dir-does-not-exist"); err == nil { 34 t.Errorf("expected err to be non-nil when path does not exist") 35 } 36 37 // post-cleanup: switch back to the cwd so other tests continue to work. 38 cwd, err := os.Getwd() 39 if err != nil { 40 t.Fatal(err) 41 } 42 43 dir, err := ioutil.TempDir("", "draft-pack-test") 44 if err != nil { 45 t.Fatal(err) 46 } 47 if err := os.Chdir(dir); err != nil { 48 t.Fatal(err) 49 } 50 51 if os.Getenv("CI") != "" { 52 t.Skip("skipping file permission mode tests on CI servers") 53 } 54 55 // load a pack with an un-readable Dockerfile (file perms 0000) 56 if err := os.Chmod(filepath.Join(dir, packName, DockerfileName), 0000); err != nil { 57 t.Fatalf("dir %s: %s", dir, err) 58 } 59 if _, err := FromDir(dir); err == nil { 60 t.Errorf("expected err to be non-nil when reading the Dockerfile") 61 } 62 63 // revert file perms for the Dockerfile in prep for the detect script 64 if err := os.Chmod(filepath.Join(dir, packName, DockerfileName), 0644); err != nil { 65 t.Fatal(err) 66 } 67 68 // remove the dir from under our feet to force filepath.Abs to fail 69 os.RemoveAll(dir) 70 if _, err := FromDir("."); err == nil { 71 t.Errorf("expected err to be non-nil when filepath.Abs(\".\") should fail") 72 } 73 74 if err := os.Chdir(cwd); err != nil { 75 t.Fatal(err) 76 } 77 }