github.com/cloudfoundry-incubator/stembuild@v0.0.0-20211223202937-5b61d62226c6/package_stemcell/ovftool/ovftool_darwin_test.go (about)

     1  //go:build darwin
     2  // +build darwin
     3  
     4  package ovftool_test
     5  
     6  import (
     7  	"io/ioutil"
     8  	"os"
     9  	"path/filepath"
    10  
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  
    14  	"github.com/cloudfoundry-incubator/stembuild/package_stemcell/ovftool"
    15  )
    16  
    17  var _ = Describe("ovftool darwin", func() {
    18  
    19  	Context("homeDirectory", func() {
    20  		var home = ""
    21  
    22  		BeforeEach(func() {
    23  			home = os.Getenv("HOME")
    24  		})
    25  
    26  		AfterEach(func() {
    27  			os.Setenv("HOME", home)
    28  		})
    29  
    30  		It("returns value of HOME environment variable is set", func() {
    31  			Expect(home).NotTo(Equal(""))
    32  
    33  			testHome := ovftool.HomeDirectory()
    34  			Expect(testHome).To(Equal(home))
    35  		})
    36  
    37  		It("returns user HOME directory if HOME environment variable is not set", func() {
    38  			os.Unsetenv("HOME")
    39  
    40  			testHome := ovftool.HomeDirectory()
    41  			Expect(testHome).To(Equal(home))
    42  		})
    43  
    44  	})
    45  
    46  	Context("Ovftool", func() {
    47  		var oldPath string
    48  
    49  		BeforeEach(func() {
    50  			oldPath = os.Getenv("PATH")
    51  			os.Unsetenv("PATH")
    52  		})
    53  
    54  		AfterEach(func() {
    55  			os.Setenv("PATH", oldPath)
    56  		})
    57  
    58  		It("when ovftool is on the path, its path is returned", func() {
    59  			tmpDir, err := ioutil.TempDir(os.TempDir(), "ovftmp")
    60  			Expect(err).ToNot(HaveOccurred())
    61  			err = ioutil.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
    62  			Expect(err).ToNot(HaveOccurred())
    63  			os.Setenv("PATH", tmpDir)
    64  
    65  			ovfPath, err := ovftool.Ovftool([]string{})
    66  			os.RemoveAll(tmpDir)
    67  
    68  			Expect(err).ToNot(HaveOccurred())
    69  			Expect(ovfPath).To(Equal(filepath.Join(tmpDir, "ovftool")))
    70  		})
    71  
    72  		It("fails when given invalid set of install paths", func() {
    73  			tmpDir, err := ioutil.TempDir(os.TempDir(), "ovftmp")
    74  			Expect(err).ToNot(HaveOccurred())
    75  
    76  			_, err = ovftool.Ovftool([]string{tmpDir})
    77  			os.RemoveAll(tmpDir)
    78  
    79  			Expect(err).To(HaveOccurred())
    80  		})
    81  
    82  		It("fails when given empty set of install paths", func() {
    83  			_, err := ovftool.Ovftool([]string{})
    84  			Expect(err).To(HaveOccurred())
    85  		})
    86  
    87  		Context("when ovftool is installed", func() {
    88  			var tmpDir, dummyDir string
    89  
    90  			BeforeEach(func() {
    91  				var err error
    92  				tmpDir, err = ioutil.TempDir(os.TempDir(), "ovftmp")
    93  				Expect(err).ToNot(HaveOccurred())
    94  				dummyDir, err = ioutil.TempDir(os.TempDir(), "trashdir")
    95  				Expect(err).ToNot(HaveOccurred())
    96  				err = ioutil.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
    97  				Expect(err).ToNot(HaveOccurred())
    98  			})
    99  
   100  			AfterEach(func() {
   101  				os.RemoveAll(tmpDir)
   102  				os.RemoveAll(dummyDir)
   103  			})
   104  
   105  			It("Returns the path to the ovftool", func() {
   106  				ovfPath, err := ovftool.Ovftool([]string{"notrealdir", dummyDir, tmpDir})
   107  
   108  				Expect(err).ToNot(HaveOccurred())
   109  				Expect(ovfPath).To(Equal(filepath.Join(tmpDir, "ovftool")))
   110  			})
   111  		})
   112  	})
   113  })