Skip to content

Commit f07ffae

Browse files
authored
Fix NPE for atlascli and add tests (#1036)
1 parent 9d57ffe commit f07ffae

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

internal/cli/root/atlas/builder_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func TestBuilder(t *testing.T) {
4444
func TestOutputOpts_notifyIfApplicable(t *testing.T) {
4545
tests := testCases()
4646
for _, tt := range tests {
47-
t.Run(fmt.Sprintf("%v / %v", tt.currentVersion, tt.release.GetTagName()), func(t *testing.T) {
47+
t.Run(fmt.Sprintf("%v/%v", tt.currentVersion, tt.release), func(t *testing.T) {
4848
config.ToolName = config.AtlasCLI
4949
prevVersion := version.Version
5050
version.Version = tt.currentVersion
@@ -77,7 +77,11 @@ func TestOutputOpts_notifyIfApplicable(t *testing.T) {
7777
t.Errorf("notifyIfApplicable() unexpected error:%v", err)
7878
}
7979

80-
v := latestrelease.VersionFromTag(tt.release.GetTagName(), config.ToolName)
80+
v := ""
81+
if tt.release != nil {
82+
v = latestrelease.VersionFromTag(tt.release.GetTagName(), config.ToolName)
83+
}
84+
8185
want := ""
8286
if tt.expectNewVersion {
8387
want = fmt.Sprintf(`
@@ -126,6 +130,11 @@ func testCases() []testCase {
126130
expectNewVersion: false,
127131
release: &github.RepositoryRelease{TagName: &atlasV, Prerelease: &f, Draft: &f},
128132
},
133+
{
134+
currentVersion: "v3.0.0-123",
135+
expectNewVersion: false,
136+
release: nil,
137+
},
129138
}
130139
return tests
131140
}

internal/cli/root/mongocli/builder_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func TestBuilder(t *testing.T) {
134134
func TestOutputOpts_notifyIfApplicable(t *testing.T) {
135135
tests := testCases()
136136
for _, tt := range tests {
137-
t.Run(fmt.Sprintf("%v / %v", tt.currentVersion, tt.release.GetTagName()), func(t *testing.T) {
137+
t.Run(fmt.Sprintf("%v/%v", tt.currentVersion, tt.release), func(t *testing.T) {
138138
prevVersion := version.Version
139139
version.Version = tt.currentVersion
140140
defer func() {
@@ -166,7 +166,11 @@ func TestOutputOpts_notifyIfApplicable(t *testing.T) {
166166
t.Errorf("notifyIfApplicable() unexpected error:%v", err)
167167
}
168168

169-
v := latestrelease.VersionFromTag(tt.release.GetTagName(), config.ToolName)
169+
v := ""
170+
if tt.release != nil {
171+
v = latestrelease.VersionFromTag(tt.release.GetTagName(), config.ToolName)
172+
}
173+
170174
want := ""
171175
if tt.expectNewVersion {
172176
want = fmt.Sprintf(`
@@ -221,6 +225,11 @@ func testCases() []testCase {
221225
expectNewVersion: false,
222226
release: &github.RepositoryRelease{TagName: &mcliV, Prerelease: &f, Draft: &f},
223227
},
228+
{
229+
currentVersion: "v3.0.0-123",
230+
expectNewVersion: false,
231+
release: nil,
232+
},
224233
}
225234
return tests
226235
}

internal/latestrelease/finder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func (f *finder) loadOrGet() (*ReleaseInformation, *semver.Version, error) {
103103
}
104104

105105
newestRelease, err := f.find()
106-
if err != nil {
106+
if err != nil || newestRelease == nil {
107107
return nil, nil, err
108108
}
109109

@@ -126,7 +126,7 @@ func (f *finder) Find() (releaseInfo *ReleaseInformation, err error) {
126126
}
127127

128128
releaseInfo, newestVersion, err := f.loadOrGet()
129-
if err != nil || svCurrentVersion.Compare(newestVersion) > 0 {
129+
if err != nil || releaseInfo == nil || svCurrentVersion.Compare(newestVersion) > 0 {
130130
return nil, err
131131
}
132132
return releaseInfo, nil

0 commit comments

Comments
 (0)