Skip to content

Commit 0e62c8b

Browse files
committedAug 8, 2019
feat(appregistry): avoid panics in flattened processor
1 parent 674741d commit 0e62c8b

File tree

4 files changed

+19
-64
lines changed

4 files changed

+19
-64
lines changed
 

‎.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ bin
1616

1717
# Ignore sqlite
1818
*.db
19+
20+
# Igore apprclient meta
21+
pkg/apprclient/openapi/git_push.sh

‎pkg/apprclient/openapi/git_push.sh

-52
This file was deleted.

‎pkg/appregistry/checker_test.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@ func TestProcessWithFlattenedFormat(t *testing.T) {
1818
Typeflag: tar.TypeDir,
1919
Name: "/",
2020
}
21-
bundleAML := &tar.Header{
21+
bundleYAML := &tar.Header{
2222
Typeflag: tar.TypeReg,
2323
Name: "bundle.yaml",
2424
}
2525

2626
workingDirectory, err := ioutil.TempDir(".", "manifests-")
2727
require.NoError(t, err)
28-
defer func(){
28+
defer func() {
2929
require.NoError(t, os.RemoveAll(workingDirectory))
3030
}()
3131

3232
doneGot, errGot := checker.Process(root, "test", workingDirectory, nil)
3333
assert.NoError(t, errGot)
3434
assert.False(t, doneGot)
3535

36-
doneGot, errGot = checker.Process(bundleAML, "test", workingDirectory, nil)
36+
doneGot, errGot = checker.Process(bundleYAML, "test", workingDirectory, nil)
3737
assert.NoError(t, errGot)
3838
assert.False(t, doneGot)
3939

@@ -45,22 +45,22 @@ func TestProcessWithNestedBundleFormat(t *testing.T) {
4545

4646
// Simulate a flattened format as used by Operator Courier
4747
headers := []*tar.Header{
48-
&tar.Header{Name: "manifests", Typeflag: tar.TypeDir},
49-
&tar.Header{Name: "manifests/etcd", Typeflag: tar.TypeDir},
50-
&tar.Header{Name: "manifests/etcd/0.6.1", Typeflag: tar.TypeDir},
51-
&tar.Header{Name: "manifests/etcd/0.6.1/etcdcluster.crd.yaml", Typeflag: tar.TypeReg},
52-
&tar.Header{Name: "manifests/etcd/0.6.1/etcdoperator.clusterserviceversion.yaml", Typeflag: tar.TypeReg},
53-
&tar.Header{Name: "manifests/etcd/etcd.package.yaml", Typeflag: tar.TypeReg},
48+
{Name: "manifests", Typeflag: tar.TypeDir},
49+
{Name: "manifests/etcd", Typeflag: tar.TypeDir},
50+
{Name: "manifests/etcd/0.6.1", Typeflag: tar.TypeDir},
51+
{Name: "manifests/etcd/0.6.1/etcdcluster.crd.yaml", Typeflag: tar.TypeReg},
52+
{Name: "manifests/etcd/0.6.1/etcdoperator.clusterserviceversion.yaml", Typeflag: tar.TypeReg},
53+
{Name: "manifests/etcd/etcd.package.yaml", Typeflag: tar.TypeReg},
5454
}
5555

5656
workingDirectory, err := ioutil.TempDir(".", "manifests-")
5757
require.NoError(t, err)
58-
defer func(){
58+
defer func() {
5959
require.NoError(t, os.RemoveAll(workingDirectory))
6060
}()
6161

6262
for _, header := range headers {
63-
doneGot, errGot := checker.Process(header,"test", workingDirectory, nil)
63+
doneGot, errGot := checker.Process(header, "test", workingDirectory, nil)
6464
assert.NoError(t, errGot)
6565

6666
if checker.IsNestedBundleFormat() {

‎pkg/appregistry/flattened_processor.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ func (w *flattenedProcessor) Process(header *tar.Header, manifestName, workingDi
5151
return
5252
}
5353

54+
if len(manifest.Packages) == 0 {
55+
err = fmt.Errorf("no packages found")
56+
return
57+
}
5458
// now let's write each file to a directory
5559
packageName := manifest.Packages[0].PackageName
5660

@@ -108,7 +112,7 @@ func (w *flattenedProcessor) Process(header *tar.Header, manifestName, workingDi
108112
func writeYamlToFile(filepath, content string) error {
109113
fo, err := os.Create(filepath)
110114
if err != nil {
111-
panic(err)
115+
return err
112116
}
113117

114118
defer fo.Close()

0 commit comments

Comments
 (0)
Please sign in to comment.