Skip to content

Commit 966aa49

Browse files
authored
Merge pull request #581 from Elizafox/main
Refactor the config/logging stuff out of build
2 parents 5542043 + 8211abc commit 966aa49

File tree

19 files changed

+1179
-1020
lines changed

19 files changed

+1179
-1020
lines changed

pkg/build/build.go

Lines changed: 103 additions & 714 deletions
Large diffs are not rendered by default.

pkg/build/build_test.go

Lines changed: 68 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@ import (
2020
"path/filepath"
2121
"testing"
2222

23+
"chainguard.dev/melange/pkg/config"
24+
"chainguard.dev/melange/pkg/logger"
25+
2326
apko_types "chainguard.dev/apko/pkg/build/types"
2427
"github.com/google/go-cmp/cmp"
2528
"github.com/google/go-cmp/cmp/cmpopts"
2629
"github.com/stretchr/testify/require"
2730
)
2831

2932
var requireErrInvalidConfiguration require.ErrorAssertionFunc = func(t require.TestingT, err error, _ ...interface{}) {
30-
require.ErrorAs(t, err, &ErrInvalidConfiguration{})
33+
require.ErrorAs(t, err, &config.ErrInvalidConfiguration{})
3134
}
3235

3336
// TestConfiguration_Load is the main set of tests for loading a configuration
@@ -37,40 +40,40 @@ func TestConfiguration_Load(t *testing.T) {
3740
name string
3841
skipConfigCleanStep bool
3942
requireErr require.ErrorAssertionFunc
40-
expected Configuration
43+
expected *config.Configuration
4144
}{
4245
{
4346
name: "range-subpackages",
4447
requireErr: require.NoError,
45-
expected: Configuration{
46-
Package: Package{
48+
expected: &config.Configuration{
49+
Package: config.Package{
4750
Name: "hello",
4851
Version: "world",
4952
},
50-
Pipeline: []Pipeline{
53+
Pipeline: []config.Pipeline{
5154
{
5255
Name: "hello",
5356
Runs: "world",
5457
},
5558
},
56-
Subpackages: []Subpackage{{
59+
Subpackages: []config.Subpackage{{
5760
Name: "cats",
58-
Pipeline: []Pipeline{{
61+
Pipeline: []config.Pipeline{{
5962
Runs: "cats are angry",
6063
}},
6164
}, {
6265
Name: "dogs",
63-
Pipeline: []Pipeline{{
66+
Pipeline: []config.Pipeline{{
6467
Runs: "dogs are loyal",
6568
}},
6669
}, {
6770
Name: "turtles",
68-
Pipeline: []Pipeline{{
71+
Pipeline: []config.Pipeline{{
6972
Runs: "turtles are slow",
7073
}},
7174
}, {
7275
Name: "donatello",
73-
Pipeline: []Pipeline{
76+
Pipeline: []config.Pipeline{
7477
{
7578
Runs: "donatello's color is purple",
7679
},
@@ -81,7 +84,7 @@ func TestConfiguration_Load(t *testing.T) {
8184
},
8285
}, {
8386
Name: "leonardo",
84-
Pipeline: []Pipeline{
87+
Pipeline: []config.Pipeline{
8588
{
8689
Runs: "leonardo's color is blue",
8790
},
@@ -92,7 +95,7 @@ func TestConfiguration_Load(t *testing.T) {
9295
},
9396
}, {
9497
Name: "michelangelo",
95-
Pipeline: []Pipeline{
98+
Pipeline: []config.Pipeline{
9699
{
97100
Runs: "michelangelo's color is orange",
98101
},
@@ -103,7 +106,7 @@ func TestConfiguration_Load(t *testing.T) {
103106
},
104107
}, {
105108
Name: "raphael",
106-
Pipeline: []Pipeline{
109+
Pipeline: []config.Pipeline{
107110
{
108111
Runs: "raphael's color is red",
109112
},
@@ -118,15 +121,15 @@ func TestConfiguration_Load(t *testing.T) {
118121
{
119122
name: "github",
120123
requireErr: require.NoError,
121-
expected: Configuration{
122-
Package: Package{
124+
expected: &config.Configuration{
125+
Package: config.Package{
123126
Name: "cosign",
124127
Version: "2.0.0",
125128
},
126-
Update: Update{
129+
Update: config.Update{
127130
Enabled: true,
128131
Shared: false,
129-
GitHubMonitor: &GitHubMonitor{
132+
GitHubMonitor: &config.GitHubMonitor{
130133
Identifier: "sigstore/cosign",
131134
StripPrefix: "v",
132135
UseTags: true,
@@ -137,43 +140,47 @@ func TestConfiguration_Load(t *testing.T) {
137140
{
138141
name: "release-monitor",
139142
requireErr: require.NoError,
140-
expected: Configuration{
141-
Package: Package{Name: "bison", Version: "3.8.2"},
142-
Update: Update{
143+
expected: &config.Configuration{
144+
Package: config.Package{Name: "bison", Version: "3.8.2"},
145+
Update: config.Update{
143146
Enabled: true,
144147
Shared: false,
145-
ReleaseMonitor: &ReleaseMonitor{
148+
ReleaseMonitor: &config.ReleaseMonitor{
146149
Identifier: 193,
147150
},
148151
},
149152
},
150153
},
151154
{
152-
name: "unknown-fields",
153-
requireErr: require.Error,
154-
expected: Configuration{},
155+
name: "unknown-fields",
156+
skipConfigCleanStep: true,
157+
requireErr: require.Error,
158+
expected: nil,
155159
},
156160
{
157-
name: "missing-package-name",
158-
requireErr: requireErrInvalidConfiguration,
159-
expected: Configuration{},
161+
name: "missing-package-name",
162+
skipConfigCleanStep: true,
163+
requireErr: requireErrInvalidConfiguration,
164+
expected: nil,
160165
},
161166
{
162-
name: "invalid-package-name",
163-
requireErr: requireErrInvalidConfiguration,
164-
expected: Configuration{},
167+
name: "invalid-package-name",
168+
skipConfigCleanStep: true,
169+
requireErr: requireErrInvalidConfiguration,
170+
expected: nil,
165171
},
166172
{
167-
name: "invalid-range-subpackage-name",
168-
requireErr: requireErrInvalidConfiguration,
169-
expected: Configuration{},
173+
name: "invalid-range-subpackage-name",
174+
skipConfigCleanStep: true,
175+
requireErr: requireErrInvalidConfiguration,
176+
expected: nil,
170177
},
171178
{
172179
name: "env-vars-set-that-have-default-values",
173180
skipConfigCleanStep: true,
174181
requireErr: require.NoError,
175-
expected: Configuration{
176-
Package: Package{
182+
expected: &config.Configuration{
183+
Package: config.Package{
177184
Name: "cosign",
178185
Version: "2.0.0",
179186
Epoch: 0,
@@ -188,35 +195,44 @@ func TestConfiguration_Load(t *testing.T) {
188195
Groups: []apko_types.Group{{GroupName: "build", GID: 1000, Members: []string{"build"}}},
189196
},
190197
},
191-
Subpackages: []Subpackage{},
198+
Subpackages: []config.Subpackage{},
192199
},
193200
},
194201
}
195202

196203
for _, tt := range tests {
197204
t.Run(tt.name, func(t *testing.T) {
198-
log := nopLogger{}
205+
log := logger.NopLogger{}
199206
ctx := Build{
200207
ConfigFile: filepath.Join("testdata", "configuration_load", fmt.Sprintf("%s.melange.yaml", tt.name)),
201208
Logger: log,
202209
}
203210

204-
cfg := &Configuration{}
205-
err := cfg.Load(ctx)
211+
cfg, err := config.ParseConfiguration(
212+
ctx.ConfigFile,
213+
config.WithEnvFileForParsing(ctx.EnvFile),
214+
config.WithLogger(ctx.Logger),
215+
config.WithVarsFileForParsing(ctx.VarsFile))
206216
tt.requireErr(t, err)
207217

208218
if !tt.skipConfigCleanStep {
209219
cleanTestConfig(cfg)
210220
}
211221

212-
if d := cmp.Diff(tt.expected, *cfg, cmpopts.IgnoreUnexported(Pipeline{})); d != "" {
213-
t.Fatalf("actual didn't match expected (-want, +got): %s", d)
222+
if tt.expected == nil {
223+
if cfg != nil {
224+
t.Fatalf("actual didn't match expected (want nil, got config)")
225+
}
226+
} else {
227+
if d := cmp.Diff(*tt.expected, *cfg, cmpopts.IgnoreUnexported(config.Pipeline{})); d != "" {
228+
t.Fatalf("actual didn't match expected (-want, +got): %s", d)
229+
}
214230
}
215231
})
216232
}
217233
}
218234

219-
func cleanTestConfig(cfg *Configuration) {
235+
func cleanTestConfig(cfg *config.Configuration) {
220236
if cfg == nil {
221237
return
222238
}
@@ -238,12 +254,12 @@ package:
238254
name: nginx
239255
version: 100
240256
`
241-
expected := &Configuration{
242-
Package: Package{
257+
expected := &config.Configuration{
258+
Package: config.Package{
243259
Name: "nginx",
244260
Version: "100",
245261
},
246-
Subpackages: []Subpackage{},
262+
Subpackages: []config.Subpackage{},
247263
}
248264
expected.Environment.Accounts.Users = []apko_types.User{{
249265
UserName: "build",
@@ -265,13 +281,17 @@ package:
265281
t.Fatal(err)
266282
}
267283

268-
log := nopLogger{}
284+
log := logger.NopLogger{}
269285
ctx := Build{
270286
ConfigFile: f,
271287
Logger: log,
272288
}
273-
cfg := &Configuration{}
274-
if err := cfg.Load(ctx); err != nil {
289+
cfg, err := config.ParseConfiguration(
290+
ctx.ConfigFile,
291+
config.WithEnvFileForParsing(ctx.EnvFile),
292+
config.WithLogger(ctx.Logger),
293+
config.WithVarsFileForParsing(ctx.VarsFile))
294+
if err != nil {
275295
t.Fatal(err)
276296
}
277297
if d := cmp.Diff(expected, cfg); d != "" {

pkg/build/logger.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)