Skip to content

Commit 6854e72

Browse files
authored
Merge pull request #167 from tri-adam/create-at-path-fix
2 parents 6855f43 + 04acabc commit 6854e72

File tree

2 files changed

+57
-23
lines changed

2 files changed

+57
-23
lines changed

pkg/sif/create.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,12 @@ func CreateContainerAtPath(path string, opts ...CreateOpt) (*FileImage, error) {
303303
if err != nil {
304304
fp.Close()
305305
os.Remove(fp.Name())
306+
307+
return nil, err
306308
}
307309

308310
f.closeOnUnload = true
309-
return f, err
311+
return f, nil
310312
}
311313

312314
func zeroData(fimg *FileImage, descr *rawDescriptor) error {

pkg/sif/create_test.go

+54-22
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,22 @@ func TestNextAligned(t *testing.T) {
4040

4141
func TestCreateContainer(t *testing.T) {
4242
tests := []struct {
43-
name string
44-
opts []CreateOpt
43+
name string
44+
opts []CreateOpt
45+
wantErr error
4546
}{
47+
{
48+
name: "ErrInsufficientCapacity",
49+
opts: []CreateOpt{
50+
OptCreateWithID(testID),
51+
OptCreateWithTime(testTime),
52+
OptCreateWithDescriptorCapacity(0),
53+
OptCreateWithDescriptors(
54+
getDescriptorInput(t, DataGeneric, []byte{0xfa, 0xce}),
55+
),
56+
},
57+
wantErr: errInsufficientCapacity,
58+
},
4659
{
4760
name: "Empty",
4861
opts: []CreateOpt{
@@ -136,25 +149,41 @@ func TestCreateContainer(t *testing.T) {
136149
var b Buffer
137150

138151
f, err := CreateContainer(&b, tt.opts...)
139-
if err != nil {
140-
t.Fatal(err)
141-
}
142152

143-
if err := f.UnloadContainer(); err != nil {
144-
t.Fatal(err)
153+
if got, want := err, tt.wantErr; !errors.Is(got, want) {
154+
t.Fatalf("got error %v, want %v", got, want)
145155
}
146156

147-
g := goldie.New(t, goldie.WithTestNameForDir(true))
148-
g.Assert(t, tt.name, b.Bytes())
157+
if err == nil {
158+
if err := f.UnloadContainer(); err != nil {
159+
t.Error(err)
160+
}
161+
162+
g := goldie.New(t, goldie.WithTestNameForDir(true))
163+
g.Assert(t, tt.name, b.Bytes())
164+
}
149165
})
150166
}
151167
}
152168

153169
func TestCreateContainerAtPath(t *testing.T) {
154170
tests := []struct {
155-
name string
156-
opts []CreateOpt
171+
name string
172+
opts []CreateOpt
173+
wantErr error
157174
}{
175+
{
176+
name: "ErrInsufficientCapacity",
177+
opts: []CreateOpt{
178+
OptCreateWithID(testID),
179+
OptCreateWithTime(testTime),
180+
OptCreateWithDescriptorCapacity(0),
181+
OptCreateWithDescriptors(
182+
getDescriptorInput(t, DataGeneric, []byte{0xfa, 0xce}),
183+
),
184+
},
185+
wantErr: errInsufficientCapacity,
186+
},
158187
{
159188
name: "Empty",
160189
opts: []CreateOpt{
@@ -237,21 +266,24 @@ func TestCreateContainerAtPath(t *testing.T) {
237266
tf.Close()
238267

239268
f, err := CreateContainerAtPath(tf.Name(), tt.opts...)
240-
if err != nil {
241-
t.Fatal(err)
242-
}
243269

244-
if err := f.UnloadContainer(); err != nil {
245-
t.Fatal(err)
270+
if got, want := err, tt.wantErr; !errors.Is(got, want) {
271+
t.Fatalf("got error %v, want %v", got, want)
246272
}
247273

248-
b, err := os.ReadFile(tf.Name())
249-
if err != nil {
250-
t.Fatal(err)
251-
}
274+
if err == nil {
275+
if err := f.UnloadContainer(); err != nil {
276+
t.Error(err)
277+
}
252278

253-
g := goldie.New(t, goldie.WithTestNameForDir(true))
254-
g.Assert(t, tt.name, b)
279+
b, err := os.ReadFile(tf.Name())
280+
if err != nil {
281+
t.Fatal(err)
282+
}
283+
284+
g := goldie.New(t, goldie.WithTestNameForDir(true))
285+
g.Assert(t, tt.name, b)
286+
}
255287
})
256288
}
257289
}

0 commit comments

Comments
 (0)