github.com/cloudfoundry-incubator/stembuild@v0.0.0-20211223202937-5b61d62226c6/package_stemcell/ovftool/ovftool_test.go (about) 1 package ovftool_test 2 3 import ( 4 "io/ioutil" 5 "os" 6 "runtime" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 11 "path/filepath" 12 13 "github.com/cloudfoundry-incubator/stembuild/package_stemcell/ovftool" 14 ) 15 16 var _ = Describe("ovftool", func() { 17 18 Context("findExecutable", func() { 19 var exeFolder, outFolder string 20 21 BeforeEach(func() { 22 var err error 23 exeFolder, err = ioutil.TempDir(os.TempDir(), "dummyExecutables") 24 Expect(err).NotTo(HaveOccurred()) 25 26 outFolder = filepath.Join(exeFolder, "out") 27 os.Mkdir(outFolder, os.ModeDir|os.ModePerm) 28 }) 29 30 AfterEach(func() { 31 err := os.RemoveAll(exeFolder) 32 Expect(err).NotTo(HaveOccurred()) 33 }) 34 35 var ovftoolExe = "ovftool" 36 if runtime.GOOS == "windows" { 37 ovftoolExe += ".exe" 38 } 39 40 It("given root that has executable and valid executable name, should return location of the executable", func() { 41 ioutil.WriteFile(filepath.Join(outFolder, ovftoolExe), []byte{}, os.ModePerm) 42 43 executable, err := ovftool.FindExecutable(exeFolder, ovftoolExe) 44 45 Expect(err).NotTo(HaveOccurred()) 46 Expect(executable).To(Equal(filepath.Join(outFolder, ovftoolExe))) 47 }) 48 49 It("given root that does not have the executable and valid executable name, should return an error", func() { 50 errorString := "executable file not found in: " + exeFolder 51 52 executable, err := ovftool.FindExecutable(exeFolder, ovftoolExe) 53 54 Expect(err).To(HaveOccurred()) 55 Expect(err.Error()).To(ContainSubstring(errorString)) 56 Expect(executable).To(Equal("")) 57 }) 58 59 It("given valid root and invalid name, should return an error", func() { 60 errorString := "executable file not found in: " + exeFolder 61 62 executable, err := ovftool.FindExecutable(exeFolder, "notRealExec") 63 64 Expect(err).To(HaveOccurred()) 65 Expect(err.Error()).To(ContainSubstring(errorString)) 66 Expect(executable).To(Equal("")) 67 }) 68 69 It("given invalid root and valid name, should return an error", func() { 70 pwd, err := os.Getwd() 71 Expect(err).NotTo(HaveOccurred()) 72 // pwd is set to stembuild/ovftool, so we need to go up a directory 73 pwd = filepath.Join(pwd, "..", "dirShouldNotExist") 74 75 executable, err := ovftool.FindExecutable(pwd, ovftoolExe) 76 77 // No need to check entire error string as it'is not generated by our code 78 Expect(err).To(HaveOccurred()) 79 Expect(executable).To(Equal("")) 80 }) 81 }) 82 })