-
Notifications
You must be signed in to change notification settings - Fork 278
/
fake_builder.go
124 lines (103 loc) · 3.01 KB
/
fake_builder.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
package fakes
import (
"github.com/Masterminds/semver"
"github.com/buildpacks/imgutil"
ifakes "github.com/buildpacks/imgutil/fakes"
"github.com/buildpacks/lifecycle/api"
"github.com/buildpacks/pack/internal/build"
"github.com/buildpacks/pack/internal/builder"
"github.com/buildpacks/pack/pkg/dist"
)
type FakeBuilder struct {
ReturnForImage imgutil.Image
ReturnForUID int
ReturnForGID int
ReturnForLifecycleDescriptor builder.LifecycleDescriptor
ReturnForStack builder.StackMetadata
ReturnForRunImages []builder.RunImageMetadata
ReturnForOrderExtensions dist.Order
}
func NewFakeBuilder(ops ...func(*FakeBuilder)) (*FakeBuilder, error) {
fakeBuilder := &FakeBuilder{
ReturnForImage: ifakes.NewImage("some-builder-name", "", nil),
ReturnForUID: 99,
ReturnForGID: 99,
ReturnForLifecycleDescriptor: builder.LifecycleDescriptor{
Info: builder.LifecycleInfo{
Version: &builder.Version{Version: *semver.MustParse("12.34")},
},
APIs: builder.LifecycleAPIs{
Buildpack: builder.APIVersions{
Supported: builder.APISet{api.MustParse("0.4")},
},
Platform: builder.APIVersions{
Supported: builder.APISet{api.MustParse("0.4")},
},
},
},
ReturnForStack: builder.StackMetadata{},
}
for _, op := range ops {
op(fakeBuilder)
}
return fakeBuilder, nil
}
func WithDeprecatedPlatformAPIs(apis []*api.Version) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForLifecycleDescriptor.APIs.Platform.Deprecated = apis
}
}
func WithSupportedPlatformAPIs(apis []*api.Version) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForLifecycleDescriptor.APIs.Platform.Supported = apis
}
}
func WithImage(image imgutil.Image) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForImage = image
}
}
func WithOrderExtensions(orderExt dist.Order) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForOrderExtensions = orderExt
}
}
func WithUID(uid int) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForUID = uid
}
}
func WithGID(gid int) func(*FakeBuilder) {
return func(builder *FakeBuilder) {
builder.ReturnForGID = gid
}
}
func (b *FakeBuilder) Name() string {
return b.ReturnForImage.Name()
}
func (b *FakeBuilder) Image() imgutil.Image {
return b.ReturnForImage
}
func (b *FakeBuilder) UID() int {
return b.ReturnForUID
}
func (b *FakeBuilder) GID() int {
return b.ReturnForGID
}
func (b *FakeBuilder) LifecycleDescriptor() builder.LifecycleDescriptor {
return b.ReturnForLifecycleDescriptor
}
func (b *FakeBuilder) OrderExtensions() dist.Order {
return b.ReturnForOrderExtensions
}
func (b *FakeBuilder) Stack() builder.StackMetadata {
return b.ReturnForStack
}
func (b *FakeBuilder) RunImages() []builder.RunImageMetadata {
return b.ReturnForRunImages
}
func WithBuilder(builder *FakeBuilder) func(*build.LifecycleOptions) {
return func(opts *build.LifecycleOptions) {
opts.Builder = builder
}
}