97 lines
2.3 KiB
Go
97 lines
2.3 KiB
Go
package helm
|
|
|
|
import (
|
|
"github.com/stretchr/testify/suite"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
type ConfigTestSuite struct {
|
|
suite.Suite
|
|
// These tests need to mutate the environment, so the suite.setenv and .unsetenv functions store the original contents of the
|
|
// relevant variable in this map. Its use of *string is so they can distinguish between "not set" and "set to empty string"
|
|
envBackup map[string]*string
|
|
}
|
|
|
|
func TestConfigTestSuite(t *testing.T) {
|
|
suite.Run(t, new(ConfigTestSuite))
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) TestPopulateWithPluginPrefix() {
|
|
suite.unsetenv("HELM_COMMAND")
|
|
suite.unsetenv("UPDATE_DEPENDENCIES")
|
|
suite.unsetenv("DEBUG")
|
|
|
|
suite.setenv("PLUGIN_HELM_COMMAND", "execute order 66")
|
|
suite.setenv("PLUGIN_UPDATE_DEPENDENCIES", "true")
|
|
suite.setenv("PLUGIN_DEBUG", "true")
|
|
|
|
cfg := Config{}
|
|
suite.Require().NoError(cfg.Populate())
|
|
|
|
suite.Equal("execute order 66", cfg.Command)
|
|
suite.True(cfg.UpdateDependencies)
|
|
suite.True(cfg.Debug)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) TestPopulateWithNoPrefix() {
|
|
suite.unsetenv("PLUGIN_HELM_COMMAND")
|
|
suite.unsetenv("PLUGIN_UPDATE_DEPENDENCIES")
|
|
suite.unsetenv("PLUGIN_DEBUG")
|
|
|
|
suite.setenv("HELM_COMMAND", "execute order 66")
|
|
suite.setenv("UPDATE_DEPENDENCIES", "true")
|
|
suite.setenv("DEBUG", "true")
|
|
|
|
cfg := Config{}
|
|
suite.Require().NoError(cfg.Populate())
|
|
|
|
suite.Equal("execute order 66", cfg.Command)
|
|
suite.True(cfg.UpdateDependencies)
|
|
suite.True(cfg.Debug)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) TestPopulateWithConflictingVariables() {
|
|
suite.setenv("PLUGIN_HELM_COMMAND", "execute order 66")
|
|
suite.setenv("HELM_COMMAND", "defend the jedi")
|
|
|
|
cfg := Config{}
|
|
suite.Require().NoError(cfg.Populate())
|
|
|
|
suite.Equal("defend the jedi", cfg.Command)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) setenv(key, val string) {
|
|
orig, ok := os.LookupEnv(key)
|
|
if ok {
|
|
suite.envBackup[key] = &orig
|
|
} else {
|
|
suite.envBackup[key] = nil
|
|
}
|
|
os.Setenv(key, val)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) unsetenv(key string) {
|
|
orig, ok := os.LookupEnv(key)
|
|
if ok {
|
|
suite.envBackup[key] = &orig
|
|
} else {
|
|
suite.envBackup[key] = nil
|
|
}
|
|
os.Unsetenv(key)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) BeforeTest(_, _ string) {
|
|
suite.envBackup = make(map[string]*string)
|
|
}
|
|
|
|
func (suite *ConfigTestSuite) AfterTest(_, _ string) {
|
|
for key, val := range suite.envBackup {
|
|
if val == nil {
|
|
os.Unsetenv(key)
|
|
} else {
|
|
os.Setenv(key, *val)
|
|
}
|
|
}
|
|
}
|