Skip to content

Commit

Permalink
fix loading empty manifest (#16)
Browse files Browse the repository at this point in the history
gertd authored Nov 13, 2023
1 parent 86ddbe1 commit 4bd1103
Showing 4 changed files with 41 additions and 8 deletions.
11 changes: 7 additions & 4 deletions v2/load.go
Original file line number Diff line number Diff line change
@@ -14,15 +14,18 @@ func Load(r io.Reader) (*model.Model, error) {
dec := yaml.NewDecoder(r)
dec.KnownFields(true)

if err := dec.Decode(&manifest); err != nil {
return nil, err
}

m := model.Model{
Version: model.ModelVersion,
Objects: map[model.ObjectName]*model.Object{},
}

if err := dec.Decode(&manifest); err != nil {
if err == io.EOF {
return &m, nil
}
return nil, err
}

for objName, obj := range manifest {
on := model.ObjectName(objName)

13 changes: 13 additions & 0 deletions v2/manifest_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package v2_test

import (
"bytes"
"encoding/json"
"os"
"testing"
@@ -43,3 +44,15 @@ func TestLoadModel(t *testing.T) {
require.NoError(t, err)
}
}

func TestLoadEmptyManifest(t *testing.T) {
r := bytes.NewReader([]byte{})

m1, err := v2.Load(r)
require.NoError(t, err)
require.NotNil(t, m1)

b1, err := json.Marshal(m1)
require.NoError(t, err)
require.NotNil(t, b1)
}
11 changes: 7 additions & 4 deletions v3/load.go
Original file line number Diff line number Diff line change
@@ -14,15 +14,18 @@ func Load(r io.Reader) (*model.Model, error) {
dec := yaml.NewDecoder(r)
dec.KnownFields(true)

if err := dec.Decode(&manifest); err != nil {
return nil, err
}

m := model.Model{
Version: model.ModelVersion,
Objects: map[model.ObjectName]*model.Object{},
}

if err := dec.Decode(&manifest); err != nil {
if err == io.EOF {
return &m, nil
}
return nil, err
}

for on, o := range manifest.ObjectTypes {
log.Debug().Str("object", string(on)).Msg("loading object")

14 changes: 14 additions & 0 deletions v3/manifest_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package v3_test

import (
"bytes"
"encoding/json"
"os"
"testing"
@@ -52,3 +53,16 @@ func TestLoadModel(t *testing.T) {
require.Equal(t, jsondiff.FullMatch, diff, "diff: %s", str)
}
}

func TestLoadEmptyManifest(t *testing.T) {
r := bytes.NewReader([]byte{})

m1, err := v3.Load(r)
require.NoError(t, err)
require.NotNil(t, m1)

b1, err := json.Marshal(m1)
require.NoError(t, err)
require.NotNil(t, b1)

}

0 comments on commit 4bd1103

Please sign in to comment.