@@ -18,6 +18,9 @@ package e2e
1818
1919import (
2020 "bufio"
21+ "fmt"
22+ "os"
23+ "path/filepath"
2124 "slices"
2225 "strings"
2326 "testing"
@@ -26,26 +29,59 @@ import (
2629)
2730
2831func Test_interpolation (t * testing.T ) {
29- c := NewParallelCLI (t )
32+ provider , err := findExecutable ("example-provider" )
33+ assert .NilError (t , err )
34+ path := fmt .Sprintf ("%s%s%s" , os .Getenv ("PATH" ), string (os .PathListSeparator ), filepath .Dir (provider ))
35+ c := NewParallelCLI (t , WithEnv ("PATH=" + path ))
36+
3037 const projectName = "interpolation"
3138 t .Cleanup (func () {
3239 c .cleanupWithDown (t , projectName )
3340 })
3441
35- res := c .RunDockerComposeCmdNoCheck (t , "-f" , "fixtures/interpolation/compose.yaml" , "--project-name" , projectName , "up" )
42+ res := c .RunDockerComposeCmd (t , "-f" , "fixtures/interpolation/compose.yaml" , "--project-name" , projectName , "up" )
43+ env := getEnv (res .Combined ())
44+
45+ assert .Check (t , slices .Contains (env , "FOO=FOO-from-dot-env" ))
46+ assert .Check (t , slices .Contains (env , "ZOT=FOO-from-dot-env" ))
47+ assert .Check (t , slices .Contains (env , "QIX=some FOO-from-dot-env value" ))
48+ assert .Check (t , slices .Contains (env , "BAR_FROM_ENV_FILE=bar_from_environment" ))
49+
50+ assert .Check (t , slices .Contains (env , "BY_PROVIDER_FROM_ENV=https://magic.cloud/example" ))
51+ assert .Check (t , slices .Contains (env , "BY_PROVIDER_FROM_ENV_FILE=https://magic.cloud/example" ))
52+ }
53+
54+ func Test_interpolationWithInclude (t * testing.T ) {
55+ provider , err := findExecutable ("example-provider" )
56+ assert .NilError (t , err )
57+ path := fmt .Sprintf ("%s%s%s" , os .Getenv ("PATH" ), string (os .PathListSeparator ), filepath .Dir (provider ))
58+ c := NewParallelCLI (t , WithEnv ("PATH=" + path ))
59+
60+ const projectName = "interpolation-include"
61+ t .Cleanup (func () {
62+ c .cleanupWithDown (t , projectName )
63+ })
64+
65+ res := c .RunDockerComposeCmd (t , "-f" , "fixtures/interpolation/include/compose.yaml" , "--project-name" , projectName , "up" )
66+ env := getEnv (res .Combined ())
67+
68+ assert .Check (t , slices .Contains (env , "FOO=FOO-from-include" ))
69+ assert .Check (t , slices .Contains (env , "ZOT=FOO-from-include" ))
70+ assert .Check (t , slices .Contains (env , "QIX=some FOO-from-include value" ))
71+
72+ assert .Check (t , slices .Contains (env , "BY_PROVIDER_FROM_ENV=https://magic.cloud/example" ))
73+ assert .Check (t , slices .Contains (env , "BY_PROVIDER_FROM_ENV_FILE=https://magic.cloud/example" ))
74+ }
75+
76+ func getEnv (out string ) []string {
3677 var env []string
37- scanner := bufio .NewScanner (strings .NewReader (res . Stdout () ))
78+ scanner := bufio .NewScanner (strings .NewReader (out ))
3879 for scanner .Scan () {
3980 line := scanner .Text ()
4081 if strings .HasPrefix (line , "test-1 | " ) {
4182 env = append (env , line [10 :])
4283 }
4384 }
4485 slices .Sort (env )
45-
46- assert .Check (t , slices .Contains (env , "FOO=BAR" ))
47- assert .Check (t , slices .Contains (env , "ZOT=BAR" ))
48- assert .Check (t , slices .Contains (env , "QIX=some BAR value" ))
49- assert .Check (t , slices .Contains (env , "BAR_FROM_ENV_FILE=bar_from_environment" ))
50-
86+ return env
5187}
0 commit comments