-
Notifications
You must be signed in to change notification settings - Fork 132
Closed
Description
Having upgraded to the latest version of this Go library, our unit tests are now failing for string interpolation from environment variables:
These tests worked with the previous version being used, but are now broken, the resulting string comes out with the text {$ARCH_SUFFIX still in place.
Version in go.mod: github.com/compose-spec/compose-go v1.20.2
Is this a regression? What would you suggest?
package pkg
import (
"os"
"path"
"reflect"
"testing"
"github.com/compose-spec/compose-go/loader"
compose "github.com/compose-spec/compose-go/types"
)
func Test_interpolateEnv_EmptyValue(t *testing.T) {
env := map[string]string{
"ARCH_SUFFIX": "",
}
wantImage := "docker.io/openfaas/basic-auth-plugin:0.18.17"
composeFile := `version: "3.7"
services:
basic-auth-plugin:
image: docker.io/openfaas/basic-auth-plugin:0.18.17${ARCH_SUFFIX}
`
config, err := loader.ParseYAML([]byte(composeFile))
if err != nil {
t.Fatalf("can't parse compose file: %s", err)
}
var files []compose.ConfigFile
files = append(files, compose.ConfigFile{Filename: "docker-compose.yaml", Config: config})
compose, err := loader.Load(compose.ConfigDetails{
WorkingDir: os.TempDir(),
ConfigFiles: files,
Environment: env,
})
if err != nil {
t.Fatalf("can't parse compose file: %s", err)
}
if compose.Services[0].Image != wantImage {
t.Fatalf("incorrect service Image:\n\twant: %s,\n\tgot: %s", wantImage, compose.Services[0].Image)
}
}
func Test_interpolateEnv_NewValue(t *testing.T) {
env := map[string]string{
"ARCH_SUFFIX": "-arm64",
}
wantImage := "docker.io/openfaas/basic-auth-plugin:0.18.17-arm64"
composeFile := `version: "3.7"
services:
basic-auth-plugin:
image: docker.io/openfaas/basic-auth-plugin:0.18.17${ARCH_SUFFIX}
`
config, err := loader.ParseYAML([]byte(composeFile))
if err != nil {
t.Fatalf("can't parse compose file: %s", err)
}
var files []compose.ConfigFile
files = append(files, compose.ConfigFile{Filename: "docker-compose.yaml", Config: config})
compose, err := loader.Load(compose.ConfigDetails{
WorkingDir: os.TempDir(),
ConfigFiles: files,
Environment: env,
})
if err != nil {
t.Fatalf("can't parse compose file: %s", err)
}
if compose.Services[0].Image != wantImage {
t.Fatalf("incorrect service Image:\n\twant: %s,\n\tgot: %s", wantImage, compose.Services[0].Image)
}
}Metadata
Metadata
Assignees
Labels
No labels