67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
package internal
|
|
|
|
import (
|
|
"os"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("BinPathFinder", func() {
|
|
Context("when relying on the default assets path", func() {
|
|
var (
|
|
previousAssetsPath string
|
|
)
|
|
BeforeEach(func() {
|
|
previousAssetsPath = assetsPath
|
|
assetsPath = "/some/path/assets/bin"
|
|
})
|
|
AfterEach(func() {
|
|
assetsPath = previousAssetsPath
|
|
})
|
|
It("returns the default path when no env var is configured", func() {
|
|
binPath := BinPathFinder("some_bin")
|
|
Expect(binPath).To(Equal("/some/path/assets/bin/some_bin"))
|
|
})
|
|
})
|
|
|
|
Context("when environment is configured", func() {
|
|
var (
|
|
previousValue string
|
|
wasSet bool
|
|
)
|
|
BeforeEach(func() {
|
|
envVarName := "TEST_ASSET_ANOTHER_SYMBOLIC_NAME"
|
|
if val, ok := os.LookupEnv(envVarName); ok {
|
|
previousValue = val
|
|
wasSet = true
|
|
}
|
|
os.Setenv(envVarName, "/path/to/some_bin.exe")
|
|
})
|
|
AfterEach(func() {
|
|
if wasSet {
|
|
os.Setenv("TEST_ASSET_ANOTHER_SYMBOLIC_NAME", previousValue)
|
|
} else {
|
|
os.Unsetenv("TEST_ASSET_ANOTHER_SYMBOLIC_NAME")
|
|
}
|
|
})
|
|
It("returns the path from the env", func() {
|
|
binPath := BinPathFinder("another_symbolic_name")
|
|
Expect(binPath).To(Equal("/path/to/some_bin.exe"))
|
|
})
|
|
|
|
It("sanitizes the environment variable name", func() {
|
|
By("cleaning all non-underscore punctuation")
|
|
binPath := BinPathFinder("another-symbolic name")
|
|
Expect(binPath).To(Equal("/path/to/some_bin.exe"))
|
|
binPath = BinPathFinder("another+symbolic\\name")
|
|
Expect(binPath).To(Equal("/path/to/some_bin.exe"))
|
|
binPath = BinPathFinder("another=symbolic.name")
|
|
Expect(binPath).To(Equal("/path/to/some_bin.exe"))
|
|
By("removing numbers from the beginning of the name")
|
|
binPath = BinPathFinder("12another_symbolic_name")
|
|
Expect(binPath).To(Equal("/path/to/some_bin.exe"))
|
|
})
|
|
})
|
|
})
|