Skip to content

Commit 0335a94

Browse files
committed
Configre CI for unittests
1 parent 06b92a8 commit 0335a94

File tree

4 files changed

+104
-35
lines changed

4 files changed

+104
-35
lines changed

.github/workflows/go-test.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Go Unit Tests
2+
3+
on:
4+
push:
5+
paths:
6+
- 'cmd/**'
7+
pull_request:
8+
paths:
9+
- 'cmd/**'
10+
11+
jobs:
12+
test:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Set up Go
19+
uses: actions/setup-go@v5
20+
with:
21+
go-version-file: 'go.mod'
22+
23+
- name: Run tests
24+
run: make go-test

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ deps:
3737
generate-catalog-template: deps bundles.yaml
3838
@$(GO) run ./cmd/generate-catalog/
3939

40+
go-test: deps
41+
@$(GO) test ./cmd/...
42+
4043
$(OPM):
4144
mkdir -p "$$(dirname $@)"
4245
os_name="$$(uname | tr '[:upper:]' '[:lower:]')"; \

cmd/generate-catalog/generate_test.go

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,34 @@ import (
77
"github.com/stretchr/testify/assert"
88
)
99

10+
var (
11+
v3610 = semver.MustParse("3.61.0")
12+
v3620 = semver.MustParse("3.62.0")
13+
v3621 = semver.MustParse("3.62.1")
14+
v4000 = semver.MustParse("4.0.0")
15+
v4001 = semver.MustParse("4.0.1")
16+
v4002 = semver.MustParse("4.0.2")
17+
v4100 = semver.MustParse("4.1.0")
18+
v4101 = semver.MustParse("4.1.1")
19+
v4200 = semver.MustParse("4.2.0")
20+
21+
entry3620 = newChannelEntry(v3620, v3610, v3610, nil)
22+
entry3621 = newChannelEntry(v3621, v3620, v3610, nil)
23+
entry4000 = newChannelEntry(v4000, v3621, v3620, nil)
24+
entry4001 = newChannelEntry(v4001, v4000, v3620, []*semver.Version{v4001})
25+
entry4002 = newChannelEntry(v4002, v4001, v3620, []*semver.Version{v4001})
26+
entry4100 = newChannelEntry(v4100, v4002, v4000, []*semver.Version{v4001})
27+
entry4101 = newChannelEntry(v4101, v4100, v4000, []*semver.Version{v4001})
28+
entry4200 = newChannelEntry(v4200, v4101, v4100, []*semver.Version{v4001})
29+
30+
channel36 = newChannel(v3620, []ChannelEntry{entry3620, entry3621})
31+
latestChannel = newLatestChannel([]ChannelEntry{entry3620, entry3621})
32+
channel40 = newChannel(v4000, []ChannelEntry{entry4000, entry4001, entry4002})
33+
channel41 = newChannel(v4100, []ChannelEntry{entry4000, entry4001, entry4002, entry4100, entry4101})
34+
channel42 = newChannel(v4200, []ChannelEntry{entry4000, entry4001, entry4002, entry4100, entry4101, entry4200})
35+
stableChannel = newStableChannel([]ChannelEntry{entry4000, entry4001, entry4002, entry4100, entry4101, entry4200})
36+
)
37+
1038
func TestGenerateChannels(t *testing.T) {
1139
// Define test cases
1240
tests := []struct {
@@ -16,40 +44,29 @@ func TestGenerateChannels(t *testing.T) {
1644
expectedChannels []Channel
1745
}{
1846
{
19-
name: "Single major version with no broken versions",
20-
versions: []*semver.Version{
21-
semver.MustParse("4.0.0"),
22-
semver.MustParse("4.0.1"),
23-
semver.MustParse("4.1.0"),
24-
semver.MustParse("4.1.1"),
25-
},
26-
brokenVersions: nil,
27-
expectedChannels: []Channel{
28-
// Expected channels for the given versions
29-
},
30-
},
31-
{
32-
name: "Multiple major versions with broken versions",
47+
name: "Multiple major versions with broken version",
3348
versions: []*semver.Version{
34-
semver.MustParse("3.61.0"),
35-
semver.MustParse("4.0.0"),
36-
semver.MustParse("4.0.1"),
37-
semver.MustParse("4.1.0"),
38-
semver.MustParse("5.0.0"),
49+
v3620,
50+
v3621,
51+
v4000,
52+
v4001,
53+
v4002,
54+
v4100,
55+
v4101,
56+
v4200,
3957
},
4058
brokenVersions: []*semver.Version{
41-
semver.MustParse("4.0.1"),
59+
v4001,
4260
},
4361
expectedChannels: []Channel{
44-
// Expected channels for the given versions
62+
*channel36,
63+
latestChannel,
64+
*channel40,
65+
*channel41,
66+
*channel42,
67+
stableChannel,
4568
},
4669
},
47-
{
48-
name: "Empty versions list",
49-
versions: []*semver.Version{},
50-
brokenVersions: nil,
51-
expectedChannels: []Channel{},
52-
},
5370
}
5471

5572
for _, tt := range tests {

cmd/generate-catalog/types_test.go

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ func TestNewChannelEntry(t *testing.T) {
2222
{
2323
name: "Valid channel entry with no broken versions",
2424
version: "4.1.0",
25-
previousEntryVersion: "4.0.0",
25+
previousEntryVersion: "4.0.5",
2626
previousChannelVersion: "4.0.0",
27-
brokenVersions: []string{},
27+
brokenVersions: nil,
2828
expectedName: "rhacs-operator.v4.1.0",
29-
expectedReplaces: "rhacs-operator.v4.0.0",
29+
expectedReplaces: "rhacs-operator.v4.0.5",
3030
expectedSkipRange: ">= 4.0.0 < 4.1.0",
31-
expectedSkips: []string{},
31+
expectedSkips: nil,
3232
},
3333
{
34-
name: "Valid channel entry with broken versions",
34+
name: "Valid channel entry with broken version",
3535
version: "4.2.0",
3636
previousEntryVersion: "4.1.0",
3737
previousChannelVersion: "4.1.0",
@@ -41,23 +41,48 @@ func TestNewChannelEntry(t *testing.T) {
4141
expectedSkipRange: ">= 4.1.0 < 4.2.0",
4242
expectedSkips: []string{"rhacs-operator.v4.1.1"},
4343
},
44+
{
45+
name: "Channel entry for version 2 minor version ahead of broken version which should not be in skips value",
46+
version: "4.5.0",
47+
previousEntryVersion: "4.4.5",
48+
previousChannelVersion: "4.4.0",
49+
brokenVersions: []string{"4.1.1"},
50+
expectedName: "rhacs-operator.v4.5.0",
51+
expectedReplaces: "rhacs-operator.v4.4.5",
52+
expectedSkipRange: ">= 4.4.0 < 4.5.0",
53+
expectedSkips: nil,
54+
},
4455
{
4556
name: "Version without replaces",
4657
version: "4.0.0",
4758
previousEntryVersion: "3.62.0",
4859
previousChannelVersion: "3.62.0",
49-
brokenVersions: []string{},
60+
brokenVersions: nil,
5061
expectedName: "rhacs-operator.v4.0.0",
5162
expectedReplaces: "",
5263
expectedSkipRange: ">= 3.62.0 < 4.0.0",
53-
expectedSkips: []string{},
64+
expectedSkips: nil,
65+
},
66+
{
67+
name: "Multiple broken versions",
68+
version: "4.3.0",
69+
previousEntryVersion: "4.2.0",
70+
previousChannelVersion: "4.2.0",
71+
brokenVersions: []string{"4.2.1", "4.2.2"},
72+
expectedName: "rhacs-operator.v4.3.0",
73+
expectedReplaces: "rhacs-operator.v4.2.0",
74+
expectedSkipRange: ">= 4.2.0 < 4.3.0",
75+
expectedSkips: []string{"rhacs-operator.v4.2.1", "rhacs-operator.v4.2.2"},
5476
},
5577
}
5678

5779
for _, tt := range tests {
5880
t.Run(tt.name, func(t *testing.T) {
5981
version := semver.MustParse(tt.version)
60-
previousEntryVersion := semver.MustParse(tt.previousEntryVersion)
82+
var previousEntryVersion *semver.Version
83+
if tt.previousEntryVersion != "" {
84+
previousEntryVersion = semver.MustParse(tt.previousEntryVersion)
85+
}
6186
previousChannelVersion := semver.MustParse(tt.previousChannelVersion)
6287

6388
var brokenVersions []*semver.Version

0 commit comments

Comments
 (0)