/
data_test.go
150 lines (133 loc) · 5.01 KB
/
data_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package stage
import (
"fmt"
. "github.com/onsi/gomega"
"github.com/werf/werf/pkg/config"
"github.com/werf/werf/pkg/container_backend/stage_builder"
"github.com/werf/werf/pkg/util"
)
type TestDependencies struct {
Dependencies []*TestDependency
ExpectedDigest string
}
type TestDependency struct {
ImageName string
TargetEnvImageName string
TargetEnvImageRepo string
TargetEnvImageTag string
TargetEnvImageID string
TargetEnvImageDigest string
TargetBuildArgImageName string
TargetBuildArgImageRepo string
TargetBuildArgImageTag string
TargetBuildArgImageID string
TargetBuildArgImageDigest string
DockerImageRepo string
DockerImageTag string
DockerImageID string
DockerImageDigest string
}
func (dep *TestDependency) GetDockerImageName() string {
return fmt.Sprintf("%s:%s", dep.DockerImageRepo, dep.DockerImageTag)
}
func (dep *TestDependency) ToConfigDependency() *config.Dependency {
depCfg := &config.Dependency{ImageName: dep.ImageName}
if dep.TargetEnvImageName != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageNameImport,
TargetEnv: dep.TargetEnvImageName,
})
}
if dep.TargetEnvImageRepo != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageRepoImport,
TargetEnv: dep.TargetEnvImageRepo,
})
}
if dep.TargetEnvImageTag != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageTagImport,
TargetEnv: dep.TargetEnvImageTag,
})
}
if dep.TargetEnvImageID != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageIDImport,
TargetEnv: dep.TargetEnvImageID,
})
}
if dep.TargetEnvImageDigest != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageDigestImport,
TargetEnv: dep.TargetEnvImageDigest,
})
}
if dep.TargetBuildArgImageName != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageNameImport,
TargetBuildArg: dep.TargetBuildArgImageName,
})
}
if dep.TargetBuildArgImageRepo != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageRepoImport,
TargetBuildArg: dep.TargetBuildArgImageRepo,
})
}
if dep.TargetBuildArgImageTag != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageTagImport,
TargetBuildArg: dep.TargetBuildArgImageTag,
})
}
if dep.TargetBuildArgImageID != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageIDImport,
TargetBuildArg: dep.TargetBuildArgImageID,
})
}
if dep.TargetBuildArgImageDigest != "" {
depCfg.Imports = append(depCfg.Imports, &config.DependencyImport{
Type: config.ImageDigestImport,
TargetBuildArg: dep.TargetBuildArgImageDigest,
})
}
return depCfg
}
func GetConfigDependencies(dependencies []*TestDependency) (res []*config.Dependency) {
for _, dep := range dependencies {
res = append(res, dep.ToConfigDependency())
}
return
}
func CheckImageDependenciesAfterPrepare(img *LegacyImageStub, stageBuilder *stage_builder.StageBuilder, dependencies []*TestDependency) {
for _, dep := range dependencies {
if dep.TargetEnvImageName != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageName]).To(Equal(dep.GetDockerImageName()))
}
if dep.TargetEnvImageRepo != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageRepo]).To(Equal(dep.DockerImageRepo))
}
if dep.TargetEnvImageTag != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageTag]).To(Equal(dep.DockerImageTag))
}
if dep.TargetEnvImageID != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageID]).To(Equal(dep.DockerImageID))
}
if dep.TargetEnvImageDigest != "" {
Expect(img._Container._ServiceCommitChangeOptions.Env[dep.TargetEnvImageDigest]).To(Equal(dep.DockerImageDigest))
}
if dep.TargetBuildArgImageName != "" {
Expect(util.IsStringsContainValue(stageBuilder.GetDockerfileBuilderImplementation().BuildDockerfileOptions.BuildArgs, fmt.Sprintf("%s=%s", dep.TargetBuildArgImageName, dep.GetDockerImageName()))).To(BeTrue())
}
if dep.TargetBuildArgImageRepo != "" {
Expect(util.IsStringsContainValue(stageBuilder.GetDockerfileBuilderImplementation().BuildDockerfileOptions.BuildArgs, fmt.Sprintf("%s=%s", dep.TargetBuildArgImageRepo, dep.DockerImageRepo))).To(BeTrue())
}
if dep.TargetBuildArgImageTag != "" {
Expect(util.IsStringsContainValue(stageBuilder.GetDockerfileBuilderImplementation().BuildDockerfileOptions.BuildArgs, fmt.Sprintf("%s=%s", dep.TargetBuildArgImageTag, dep.DockerImageTag))).To(BeTrue())
}
if dep.TargetBuildArgImageID != "" {
Expect(util.IsStringsContainValue(stageBuilder.GetDockerfileBuilderImplementation().BuildDockerfileOptions.BuildArgs, fmt.Sprintf("%s=%s", dep.TargetBuildArgImageID, dep.DockerImageID))).To(BeTrue())
}
}
}