@@ -16,7 +16,7 @@ func TestRoundTrip(t *testing.T) {
16
16
if err != nil {
17
17
t .Fatal (err )
18
18
}
19
- rt , err := LoadFromContent (context .Background (), content )
19
+ rt , err := LoadFromContent (context .Background (), content , "should-not-be-used" )
20
20
if err != nil {
21
21
t .Fatal (err )
22
22
}
@@ -25,3 +25,89 @@ func TestRoundTrip(t *testing.T) {
25
25
}
26
26
})
27
27
}
28
+
29
+ func TestLoadFromContent (t * testing.T ) {
30
+ tdt := []struct {
31
+ desc string
32
+ compose string
33
+ fallback string
34
+ wantProject string
35
+ }{
36
+ {
37
+ desc : "compose with project name" ,
38
+ compose : "name: project1\n services:\n service1:\n image: nginx" ,
39
+ fallback : "" ,
40
+ wantProject : "project1" ,
41
+ },
42
+ {
43
+ desc : "compose without project name" ,
44
+ compose : "services:\n service1:\n image: nginx" ,
45
+ fallback : "project2" ,
46
+ wantProject : "project2" ,
47
+ },
48
+ {
49
+ desc : "compose with project name and ignored fallback" ,
50
+ compose : "name: project3\n services:\n service1:\n image: nginx" ,
51
+ fallback : "project4" ,
52
+ wantProject : "project3" ,
53
+ },
54
+ {
55
+ desc : "compose with unknown network" ,
56
+ compose : "name: project4\n services:\n service1:\n image: nginx\n networks:\n - unknown" ,
57
+ wantProject : "project4" ,
58
+ },
59
+ {
60
+ desc : "compose with cpus" ,
61
+ compose : "name: project5\n services:\n service1:\n image: nginx\n deploy:\n resources:\n reservations:\n cpus: 2" ,
62
+ wantProject : "project5" ,
63
+ },
64
+ {
65
+ desc : "compose with config" ,
66
+ compose : "name: project6\n services:\n service1:\n image: nginx\n environment:\n - CONFIG" ,
67
+ wantProject : "project6" ,
68
+ },
69
+ {
70
+ desc : "compose with interpolation" ,
71
+ compose : "name: project7\n services:\n service1:\n image: nginx\n environment:\n - ENVVAR=${ENVVAR}" ,
72
+ wantProject : "project7" ,
73
+ },
74
+ {
75
+ desc : "should not load env_file" ,
76
+ compose : "name: project9\n services:\n service1:\n image: nginx\n env_file:\n - asdf" ,
77
+ wantProject : "project9" ,
78
+ },
79
+ }
80
+
81
+ t .Setenv ("ENVVAR" , "value" )
82
+
83
+ for _ , tt := range tdt {
84
+ t .Run (tt .desc , func (t * testing.T ) {
85
+ project , err := LoadFromContent (context .Background (), []byte (tt .compose ), tt .fallback )
86
+ if err != nil {
87
+ t .Fatal (err )
88
+ }
89
+ if project .Name != tt .wantProject {
90
+ t .Errorf ("Expected project name to be project1, got %s" , project .Name )
91
+ }
92
+ if len (project .Services ) != 1 {
93
+ t .Errorf ("Expected 1 service, got %d" , len (project .Services ))
94
+ }
95
+ if _ , ok := project .Services ["service1" ]; ! ok {
96
+ t .Errorf ("Expected service1 to be present, got %v" , project .Services )
97
+ }
98
+ if project .Services ["service1" ].Image != "nginx" {
99
+ t .Errorf ("Expected service1 image to be nginx, got %s" , project .Services ["service1" ].Image )
100
+ }
101
+ if config , ok := project .Services ["service1" ].Environment ["CONFIG" ]; ok {
102
+ if config != nil {
103
+ t .Errorf ("Expected CONFIG to be nil, got %q" , * config )
104
+ }
105
+ }
106
+ if envvar , ok := project .Services ["service1" ].Environment ["ENVVAR" ]; ok {
107
+ if * envvar != "${ENVVAR}" {
108
+ t .Errorf ("Expected ENVVAR to be ${ENVVAR}, got %q" , * envvar )
109
+ }
110
+ }
111
+ })
112
+ }
113
+ }
0 commit comments