...
1 package release
2
3 import (
4 "context"
5 "errors"
6 "fmt"
7 "os"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 "gopkg.in/yaml.v3"
12
13 "edge-infra.dev/pkg/f8n/warehouse/cluster"
14 "edge-infra.dev/pkg/f8n/warehouse/oci/layer"
15 "edge-infra.dev/pkg/f8n/warehouse/pallet"
16 "edge-infra.dev/pkg/lib/build/semver"
17 )
18
19 func TestMain(m *testing.M) {
20 os.Exit(m.Run())
21 }
22
23 func TestBasicRelease(t *testing.T) {
24 currentVersion := "0.20.19"
25 l, err := layer.New(layer.Runtime, []byte("hello"))
26 if err != nil {
27 t.Fatal(err)
28 }
29 layers := []layer.Layer{l}
30 storePallet, err := pallet.Image(pallet.Options{
31 Metadata: pallet.Metadata{
32 Name: "store",
33 Team: "f8n",
34 BuildInfo: pallet.BuildInfo{
35 Created: "yesterday",
36 Source: "https://gothub.com/ncrvoyix-swt-retail/edge-infra",
37 Revision: "d34db33f",
38 Version: currentVersion,
39 },
40 },
41 ClusterProviders: cluster.BuiltInProviders(),
42 }, layers...)
43 if err != nil {
44 t.Fatal(err)
45 }
46
47 meta := Metadata{
48 Vendor: "NCR",
49 Version: currentVersion,
50 ReleaseRegistry: "localhost:21700",
51 ReleaseRepo: "edge-release",
52 BuildInfo: pallet.BuildInfo{},
53 }
54 rel := New(meta, []pallet.Pallet{storePallet})
55
56 assert.Equal(t, rel.Metadata.Version, currentVersion)
57 for _, relPallet := range rel.Pallets {
58 assert.Equal(t, relPallet.Metadata().Version, currentVersion)
59 }
60 }
61
62 func TestBadSemverRelease(t *testing.T) {
63 releaser := &Releaser{}
64 releaserBytes, _ := os.ReadFile("testdata/bad_semver_release.yaml")
65
66 err := yaml.Unmarshal(releaserBytes, releaser)
67 if err != nil {
68 t.Fatal(err)
69 }
70
71 _, err = releaser.BuildRelease(context.Background(), pallet.BuildInfo{})
72 if err != nil && errors.Is(err, semver.ErrInvalidSemVer) {
73 fmt.Println("successfully caught error", err)
74 return
75 }
76
77 t.Fatal("did not catch err")
78 }
79
View as plain text