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  })