Move the code for parsing key-value files, such as used for env-files and label-files to a separate package. This allows other projects (such as compose) to use the same parsing logic, but provide custom lookup functions for their situation (which is slightly different). The new package provides utilities for parsing key-value files for either a file or an io.Reader. Most tests for EnvFile were now testing functionality that's already tested in the new package, so were (re)moved. Co-authored-by: Nicolas De Loof <nicolas.deloof@gmail.com> Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
41 lines
976 B
Go
41 lines
976 B
Go
package opts
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"gotest.tools/v3/assert"
|
|
is "gotest.tools/v3/assert/cmp"
|
|
)
|
|
|
|
func tmpFileWithContent(t *testing.T, content string) string {
|
|
t.Helper()
|
|
fileName := filepath.Join(t.TempDir(), "envfile")
|
|
err := os.WriteFile(fileName, []byte(content), 0o644)
|
|
assert.NilError(t, err)
|
|
return fileName
|
|
}
|
|
|
|
// Test ParseEnvFile for a non existent file
|
|
func TestParseEnvFileNonExistentFile(t *testing.T) {
|
|
_, err := ParseEnvFile("no_such_file")
|
|
assert.Check(t, is.ErrorType(err, os.IsNotExist))
|
|
}
|
|
|
|
// ParseEnvFile with environment variable import definitions
|
|
func TestParseEnvVariableDefinitionsFile(t *testing.T) {
|
|
content := `# comment=
|
|
UNDEFINED_VAR
|
|
DEFINED_VAR
|
|
`
|
|
tmpFile := tmpFileWithContent(t, content)
|
|
|
|
t.Setenv("DEFINED_VAR", "defined-value")
|
|
variables, err := ParseEnvFile(tmpFile)
|
|
assert.NilError(t, err)
|
|
|
|
expectedLines := []string{"DEFINED_VAR=defined-value"}
|
|
assert.Check(t, is.DeepEqual(variables, expectedLines))
|
|
}
|