Skip to content

Commit

Permalink
more GinkgoT().TempDir() for automatic cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
aramprice committed Jul 19, 2024
1 parent e2824f5 commit cd4120e
Show file tree
Hide file tree
Showing 13 changed files with 82 additions and 177 deletions.
2 changes: 0 additions & 2 deletions iaas_cli/iaas_cli_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ var targetVMPath string
var vCenterCredentialUrl string

var _ = BeforeSuite(func() {

vCenterCredentialUrl = os.Getenv("VCENTER_ADMIN_CREDENTIAL_URL")
Expect(vCenterCredentialUrl).NotTo(Equal(""), "VCENTER_ADMIN_CREDENTIAL_URL is required")

Expand All @@ -28,5 +27,4 @@ var _ = BeforeSuite(func() {
Expect(vmName).NotTo(Equal(""), "PACKAGE_TEST_VM_NAME is required")

targetVMPath = fmt.Sprintf("%s/%s", vmFolder, vmName)

})
4 changes: 2 additions & 2 deletions iaas_cli/iaas_clients/vcenter_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package iaas_clients
import (
"errors"
"fmt"
"os"

"github.com/cloudfoundry/stembuild/iaas_cli/iaas_clifakes"

Expand Down Expand Up @@ -256,8 +255,9 @@ ethernet-0 VirtualE1000e internal-network
Context("ExportVM", func() {
var destinationDir string
BeforeEach(func() {
destinationDir, _ = os.MkdirTemp(os.TempDir(), "destinationDir")
destinationDir = GinkgoT().TempDir() // automatically cleaned up
})

It("exports the VM to local machine from vcenter using vm inventory path", func() {
expectedArgs := []string{"export.ovf", "-u", credentialUrl, "-sha", "1", "-vm", "validVMPath", destinationDir}
runner.RunReturns(0)
Expand Down
4 changes: 1 addition & 3 deletions iaas_cli/iaas_clients/vcenter_govmomi_contract_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,7 @@ var _ = Describe("VcenterClient", func() {
Skip("export VCENTER_CA_CERT=<a valid ca cert> to run this test")
}

tmpDir, err := os.MkdirTemp("", "vcenter-client-contract-tests")
defer os.RemoveAll(tmpDir)
Expect(err).ToNot(HaveOccurred())
tmpDir := GinkgoT().TempDir() // automatically cleaned up
f, err := os.CreateTemp(tmpDir, "valid-cert")
Expect(err).ToNot(HaveOccurred())

Expand Down
4 changes: 2 additions & 2 deletions integration/construct/construct_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ var _ = SynchronizedAfterSuite(func() {
_ = os.RemoveAll(tmpDir)
}, func() {
if pathToCACert != "" {
os.RemoveAll(pathToCACert)
_ = os.RemoveAll(pathToCACert)
}
})

Expand Down Expand Up @@ -305,7 +305,7 @@ func runIgnoringOutput(args []string) int {

_, w, _ := os.Pipe()

defer w.Close()
defer func() { _ = w.Close() }()

os.Stderr = w
os.Stdout = w
Expand Down
8 changes: 3 additions & 5 deletions integration/interrupt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ import (

var _ = Describe("Interrupts", func() {
Describe("catchInterruptSignal", func() {
// Tried to create test to handle 2 interrupts in a row, but timing of processes makes testing difficult

It("cleans up on one interrupt", func() {
var err error
stembuildExecutable, err = helpers.BuildStembuild("1200.0.0")
Expect(err).ToNot(HaveOccurred())

inputVmdk := filepath.Join("..", "test", "data", "expected.vmdk")
tmpDir, err := os.MkdirTemp(os.TempDir(), "stembuild-interrupts")
Expect(err).ToNot(HaveOccurred())
tmpDir := GinkgoT().TempDir() // automatically cleaned up

session := helpers.Stembuild(stembuildExecutable, "package", "--vmdk", inputVmdk, "--outputDir", tmpDir)
time.Sleep(1 * time.Second)
Expand All @@ -35,8 +36,5 @@ var _ = Describe("Interrupts", func() {
stdErr := session.Err.Contents()
Expect(string(stdErr)).To(ContainSubstring("received ("))
})

// Tried to create test to handle 2 interrupts in a row, but timing of processes makes it difficult
// to test
})
})
65 changes: 20 additions & 45 deletions package_stemcell/ovftool/ovftool_darwin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
package ovftool_test

import (
"bytes"
"os"
"os/exec"
"path/filepath"

. "github.com/onsi/ginkgo/v2"
Expand All @@ -14,66 +16,47 @@ import (
)

var _ = Describe("ovftool darwin", func() {

Context("homeDirectory", func() {
var home = ""

BeforeEach(func() {
home = os.Getenv("HOME")
})

AfterEach(func() {
os.Setenv("HOME", home)
})

It("returns value of HOME environment variable is set", func() {
Expect(home).NotTo(Equal(""))
envHomedir := "/fake/envHomedir/dir"
GinkgoT().Setenv("HOME", envHomedir)

testHome := ovftool.HomeDirectory()
Expect(testHome).To(Equal(home))
Expect(testHome).To(Equal(envHomedir))
})

It("returns user HOME directory if HOME environment variable is not set", func() {
os.Unsetenv("HOME")
GinkgoT().Setenv("HOME", "")

osHomedirBytes, err := exec.Command("sh", "-c", "cd ~ && pwd").Output()
Expect(err).NotTo(HaveOccurred())
osHomedir := string(bytes.TrimSpace(osHomedirBytes))

testHome := ovftool.HomeDirectory()
Expect(testHome).To(Equal(home))
Expect(testHome).To(Equal(osHomedir))
})

})

Context("Ovftool", func() {
var oldPath string

BeforeEach(func() {
oldPath = os.Getenv("PATH")
os.Unsetenv("PATH")
})

AfterEach(func() {
os.Setenv("PATH", oldPath)
GinkgoT().Setenv("PATH", "")
})

It("when ovftool is on the path, its path is returned", func() {
tmpDir, err := os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
err = os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
tmpDir := GinkgoT().TempDir() // automatically cleaned up
err := os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
Expect(err).ToNot(HaveOccurred())
os.Setenv("PATH", tmpDir)
GinkgoT().Setenv("PATH", tmpDir)

ovfPath, err := ovftool.Ovftool([]string{})
os.RemoveAll(tmpDir)

Expect(err).ToNot(HaveOccurred())
Expect(ovfPath).To(Equal(filepath.Join(tmpDir, "ovftool")))
})

It("fails when given invalid set of install paths", func() {
tmpDir, err := os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
tmpDir := GinkgoT().TempDir() // automatically cleaned up

_, err = ovftool.Ovftool([]string{tmpDir})
os.RemoveAll(tmpDir)
_, err := ovftool.Ovftool([]string{tmpDir})

Expect(err).To(HaveOccurred())
})
Expand All @@ -87,18 +70,10 @@ var _ = Describe("ovftool darwin", func() {
var tmpDir, dummyDir string

BeforeEach(func() {
var err error
tmpDir, err = os.MkdirTemp(os.TempDir(), "ovftmp")
tmpDir = GinkgoT().TempDir() // automatically cleaned up
dummyDir = GinkgoT().TempDir() // automatically cleaned up
err := os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
Expect(err).ToNot(HaveOccurred())
dummyDir, err = os.MkdirTemp(os.TempDir(), "trashdir")
Expect(err).ToNot(HaveOccurred())
err = os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
Expect(err).ToNot(HaveOccurred())
})

AfterEach(func() {
os.RemoveAll(tmpDir)
os.RemoveAll(dummyDir)
})

It("Returns the path to the ovftool", func() {
Expand Down
24 changes: 6 additions & 18 deletions package_stemcell/ovftool/ovftool_portable_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,21 @@ import (
)

var _ = Describe("ovftool", func() {

var oldPath string

BeforeEach(func() {
oldPath = os.Getenv("PATH")
os.Unsetenv("PATH")
})

AfterEach(func() {
os.Setenv("PATH", oldPath)
})

It("when ovftool is on the PATH, its path is returned", func() {
tmpDir, err := os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
err = os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
tmpDir := GinkgoT().TempDir() // automatically cleaned up
err := os.WriteFile(filepath.Join(tmpDir, "ovftool"), []byte{}, 0700)
Expect(err).ToNot(HaveOccurred())
os.Setenv("PATH", tmpDir)

ovfPath, err := ovftool.Ovftool([]string{})
os.RemoveAll(tmpDir)
GinkgoT().Setenv("PATH", tmpDir)

ovfPath, err := ovftool.Ovftool([]string{})
Expect(err).ToNot(HaveOccurred())
Expect(ovfPath).To(Equal(filepath.Join(tmpDir, "ovftool")))
})

It("fails when ovftool is not installed in the PATH", func() {
GinkgoT().Setenv("PATH", "/tmp")

_, err := ovftool.Ovftool([]string{})
Expect(err).To(HaveOccurred())
})
Expand Down
18 changes: 5 additions & 13 deletions package_stemcell/ovftool/ovftool_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,18 @@ var _ = Describe("ovftool", func() {

Context("findExecutable", func() {
var exeFolder, outFolder string
var ovftoolExe = "ovftool"
if runtime.GOOS == "windows" {
ovftoolExe += ".exe"
}

BeforeEach(func() {
var err error
exeFolder, err = os.MkdirTemp(os.TempDir(), "dummyExecutables")
Expect(err).NotTo(HaveOccurred())
exeFolder = GinkgoT().TempDir() // automatically cleaned up

outFolder = filepath.Join(exeFolder, "out")
Expect(os.Mkdir(outFolder, os.ModeDir|os.ModePerm)).To(Succeed())
})

AfterEach(func() {
err := os.RemoveAll(exeFolder)
Expect(err).NotTo(HaveOccurred())
})

var ovftoolExe = "ovftool"
if runtime.GOOS == "windows" {
ovftoolExe += ".exe"
}

It("given root that has executable and valid executable name, should return location of the executable", func() {
Expect(os.WriteFile(filepath.Join(outFolder, ovftoolExe), []byte{}, os.ModePerm)).To(Succeed())

Expand Down
51 changes: 15 additions & 36 deletions package_stemcell/ovftool/ovftool_windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,16 @@ import (
"os"
"path/filepath"

"github.com/cloudfoundry/stembuild/package_stemcell/ovftool"
"golang.org/x/sys/windows/registry"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"golang.org/x/sys/windows/registry"

"github.com/cloudfoundry/stembuild/package_stemcell/ovftool"
)

var _ = Describe("ovftool", func() {

Context("vmwareInstallPaths", func() {

It("returns install paths when given valid set of registry key paths", func() {

keypaths := []string{
`SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation`,
`SOFTWARE\Wow6432Node\VMware, Inc.\VMware OVF Tool`,
Expand All @@ -31,7 +28,7 @@ var _ = Describe("ovftool", func() {
})

It("fails when given invalid registry key path", func() {
keypaths := []string{`\SOFTWARE\faketempkey`}
keypaths := []string{`\SOFTWARE\fake-temp-key`}

_, err := ovftool.VmwareInstallPaths(keypaths)

Expand All @@ -57,17 +54,16 @@ var _ = Describe("ovftool", func() {
_, exists, err := registry.CreateKey(key, `faketempkey`, registry.WRITE)
Expect(err).ToNot(HaveOccurred())
Expect(exists).To(BeFalse())
keypaths = []string{`\SOFTWARE\faketempkey`}
keypaths = []string{`\SOFTWARE\fake-temp-key`}
})

AfterEach(func() {
Expect(key).ToNot(BeNil())
err := registry.DeleteKey(key, `faketempkey`)
err := registry.DeleteKey(key, `fake-temp-key`)
Expect(err).ToNot(HaveOccurred())
})

It("fails", func() {

_, err := ovftool.VmwareInstallPaths(keypaths)

Expect(err).To(HaveOccurred())
Expand All @@ -76,23 +72,16 @@ var _ = Describe("ovftool", func() {
})

Context("Ovftool", func() {
var oldPath string

BeforeEach(func() {
oldPath = os.Getenv("PATH")
os.Unsetenv("PATH")
})

AfterEach(func() {
os.Setenv("PATH", oldPath)
GinkgoT().Setenv("PATH", "")
})

It("when ovftool is on the path, its path is returned", func() {
tmpDir, err := os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
err = os.WriteFile(filepath.Join(tmpDir, "ovftool.exe"), []byte{}, 0700)
tmpDir := GinkgoT().TempDir() // automatically cleaned up
err := os.WriteFile(filepath.Join(tmpDir, "ovftool.exe"), []byte{}, 0700)
Expect(err).ToNot(HaveOccurred())
os.Setenv("PATH", tmpDir)

GinkgoT().Setenv("PATH", tmpDir)

ovfPath, err := ovftool.Ovftool([]string{})
os.RemoveAll(tmpDir)
Expand All @@ -102,11 +91,9 @@ var _ = Describe("ovftool", func() {
})

It("fails when given invalid set of install paths", func() {
tmpDir, err := os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
tmpDir := GinkgoT().TempDir() // automatically cleaned up

_, err = ovftool.Ovftool([]string{tmpDir})
os.RemoveAll(tmpDir)

Expect(err).To(HaveOccurred())
})
Expand All @@ -120,22 +107,14 @@ var _ = Describe("ovftool", func() {
var tmpDir, dummyDir string

BeforeEach(func() {
var err error
tmpDir, err = os.MkdirTemp(os.TempDir(), "ovftmp")
Expect(err).ToNot(HaveOccurred())
dummyDir, err = os.MkdirTemp(os.TempDir(), "trashdir")
Expect(err).ToNot(HaveOccurred())
tmpDir := GinkgoT().TempDir() // automatically cleaned up
dummyDir := GinkgoT().TempDir() // automatically cleaned up
err = os.WriteFile(filepath.Join(tmpDir, "ovftool.exe"), []byte{}, 0644)
Expect(err).ToNot(HaveOccurred())
})

AfterEach(func() {
os.RemoveAll(tmpDir)
os.RemoveAll(dummyDir)
})

It("Returns the path to the ovftool", func() {
ovfPath, err := ovftool.Ovftool([]string{"notrealdir", dummyDir, tmpDir})
ovfPath, err := ovftool.Ovftool([]string{"not-real-dir", dummyDir, tmpDir})

Expect(err).ToNot(HaveOccurred())
Expect(ovfPath).To(Equal(filepath.Join(tmpDir, "ovftool.exe")))
Expand Down
Loading

0 comments on commit cd4120e

Please sign in to comment.