Skip to content

Commit fd41eed

Browse files
committed
fix bug, green test
1 parent b51003c commit fd41eed

File tree

3 files changed

+47
-40
lines changed

3 files changed

+47
-40
lines changed

Rubberduck.Core/UI/Command/VersionCheckCommand.cs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -53,40 +53,40 @@ protected override async void OnExecute(object parameter)
5353
Logger.Info("Executing version check...");
5454

5555
var tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5));
56-
await _versionCheck
57-
.GetLatestVersionAsync(settings, tokenSource.Token)
58-
.ContinueWith(t =>
59-
{
60-
if (t.IsFaulted)
61-
{
62-
Logger.Warn(t.Exception);
63-
return;
64-
}
56+
Version latest = default;
6557

66-
if (_versionCheck.CurrentVersion < t.Result)
67-
{
68-
var proceed = true;
69-
if (_versionCheck.IsDebugBuild || !settings.IncludePreRelease)
70-
{
71-
// if the latest version has a revision number and isn't a pre-release build,
72-
// avoid prompting since we can't know if the build already includes the latest version.
73-
proceed = t.Result.Revision == 0;
74-
}
58+
try
59+
{
60+
latest = await _versionCheck.GetLatestVersionAsync(settings, tokenSource.Token);
61+
}
62+
catch(Exception e)
63+
{
64+
Logger.Warn(e, "Version check failed.");
65+
}
7566

76-
if (proceed)
77-
{
78-
PromptAndBrowse(t.Result, settings.IncludePreRelease);
79-
}
80-
else
81-
{
82-
Logger.Info("Version check skips notification of an existing newer version available.");
83-
}
84-
}
85-
else
86-
{
87-
Logger.Info("Version check completed: running current latest.");
88-
}
89-
});
67+
if (_versionCheck.CurrentVersion < latest)
68+
{
69+
var proceed = true;
70+
if (_versionCheck.IsDebugBuild || !settings.IncludePreRelease)
71+
{
72+
// if the latest version has a revision number and isn't a pre-release build,
73+
// avoid prompting since we can't know if the build already includes the latest version.
74+
proceed = latest.Revision == 0;
75+
}
76+
77+
if (proceed)
78+
{
79+
PromptAndBrowse(latest, settings.IncludePreRelease);
80+
}
81+
else
82+
{
83+
Logger.Info("Version check skips notification of an existing newer version available.");
84+
}
85+
}
86+
else if (latest != default)
87+
{
88+
Logger.Info("Version check completed: running current latest.");
89+
}
9090
}
9191

9292
private void PromptAndBrowse(Version latestVersion, bool includePreRelease)

Rubberduck.Core/VersionCheck/VersionCheckService.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,22 @@ public async Task<Version> GetLatestVersionAsync(GeneralSettings settings, Cance
3636
return _latestVersion;
3737
}
3838

39-
var tags = await _client.GetLatestTagsAsync(token);
39+
try
40+
{
41+
var tags = await _client.GetLatestTagsAsync(token);
4042

41-
var next = tags.Single(e => e.IsPreRelease);
42-
var main = tags.Single(e => !e.IsPreRelease);
43-
_logger.Info($"Main: v{main.Version.ToString(3)}; Next: v{next.Version.ToString(4)}");
43+
var next = tags.Single(e => e.IsPreRelease);
44+
var main = tags.Single(e => !e.IsPreRelease);
45+
_logger.Info($"Main: v{main.Version.ToString(3)}; Next: v{next.Version.ToString(4)}");
4446

45-
_latestVersion = settings.IncludePreRelease ? next.Version : main.Version;
46-
_logger.Info($"Check prerelease: {settings.IncludePreRelease}; latest: v{_latestVersion.ToString(4)}");
47+
_latestVersion = settings.IncludePreRelease ? next.Version : main.Version;
48+
_logger.Info($"Check prerelease: {settings.IncludePreRelease}; latest: v{_latestVersion.ToString(4)}");
49+
}
50+
catch ( Exception ex )
51+
{
52+
_logger.Warn(ex, "Version check failed.");
4753

54+
}
4855
return _latestVersion;
4956
}
5057

RubberduckTests/VersionCheckTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public async Task GetLatestVersionThrowsHttpException_IsHandled()
2424

2525
var sut = new VersionCheckService(appVersion, apiClient.Object);
2626

27-
await sut.GetLatestVersionAsync(new GeneralSettings(), CancellationToken.None);
27+
var result = await sut.GetLatestVersionAsync(new GeneralSettings(), CancellationToken.None);
2828

29-
Assert.IsTrue(true); // if we make it here, service isn't throwing.
29+
Assert.IsNull(result);
3030
}
3131
}
3232

0 commit comments

Comments
 (0)