diff --git a/src/Squirrel/IUpdateManager.cs b/src/Squirrel/IUpdateManager.cs index b64368c6..96bd7509 100644 --- a/src/Squirrel/IUpdateManager.cs +++ b/src/Squirrel/IUpdateManager.cs @@ -20,7 +20,7 @@ namespace Squirrel /// will return values from 0-100 and Complete, or Throw /// An UpdateInfo object representing the updates to install. /// - Task CheckForUpdate(bool ignoreDeltaUpdates, Action progress = null); + Task CheckForUpdate(bool ignoreDeltaUpdates = false, Action progress = null); /// /// Download a list of releases into the local package directory. diff --git a/src/Squirrel/UpdateManager.ApplyReleases.cs b/src/Squirrel/UpdateManager.ApplyReleases.cs index 04b41c0f..edbcedff 100644 --- a/src/Squirrel/UpdateManager.ApplyReleases.cs +++ b/src/Squirrel/UpdateManager.ApplyReleases.cs @@ -13,7 +13,7 @@ namespace Squirrel { public sealed partial class UpdateManager { - class ApplyReleasesImpl : IEnableLogger + internal class ApplyReleasesImpl : IEnableLogger { // TODO: Kill this entire concept readonly FrameworkVersion appFrameworkVersion = FrameworkVersion.Net45; @@ -309,7 +309,7 @@ namespace Squirrel }); } - async Task updateLocalReleasesFile() + internal async Task updateLocalReleasesFile() { await Task.Run(() => ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(rootAppDirectory))); } diff --git a/src/Squirrel/UpdateManager.CheckForUpdates.cs b/src/Squirrel/UpdateManager.CheckForUpdates.cs index e47e7276..e71722d6 100644 --- a/src/Squirrel/UpdateManager.CheckForUpdates.cs +++ b/src/Squirrel/UpdateManager.CheckForUpdates.cs @@ -11,7 +11,7 @@ namespace Squirrel { public sealed partial class UpdateManager { - class CheckForUpdateImpl : IEnableLogger + internal class CheckForUpdateImpl : IEnableLogger { readonly string rootAppDirectory; diff --git a/src/Squirrel/UpdateManager.DownloadReleases.cs b/src/Squirrel/UpdateManager.DownloadReleases.cs index 023cbdaf..0997d47e 100644 --- a/src/Squirrel/UpdateManager.DownloadReleases.cs +++ b/src/Squirrel/UpdateManager.DownloadReleases.cs @@ -10,7 +10,7 @@ namespace Squirrel { public sealed partial class UpdateManager { - class DownloadReleasesImpl : IEnableLogger + internal class DownloadReleasesImpl : IEnableLogger { readonly string rootAppDirectory; diff --git a/src/Squirrel/UpdateManager.cs b/src/Squirrel/UpdateManager.cs index 575b20fc..f01f219f 100644 --- a/src/Squirrel/UpdateManager.cs +++ b/src/Squirrel/UpdateManager.cs @@ -41,7 +41,7 @@ namespace Squirrel this.urlDownloader = urlDownloader ?? new FileDownloader(); } - public async Task CheckForUpdate(bool ignoreDeltaUpdates, Action progress = null) + public async Task CheckForUpdate(bool ignoreDeltaUpdates = false, Action progress = null) { var checkForUpdate = new CheckForUpdateImpl(rootAppDirectory); diff --git a/test/ApplyReleasesTests.cs b/test/ApplyReleasesTests.cs index 42935972..ddf78346 100644 --- a/test/ApplyReleasesTests.cs +++ b/test/ApplyReleasesTests.cs @@ -90,7 +90,7 @@ namespace Squirrel.Tests "Squirrel.Core.1.1.0.0-full.nupkg", }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(packagesDir, x))); - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.0.0.0-full.nupkg")); var latestFullEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.1.0.0-full.nupkg")); @@ -98,16 +98,14 @@ namespace Squirrel.Tests var updateInfo = UpdateInfo.Create(baseEntry, new[] { latestFullEntry }, packagesDir, FrameworkVersion.Net40); updateInfo.ReleasesToApply.Contains(latestFullEntry).ShouldBeTrue(); - using (fixture) { - var progress = new List(); + var progress = new List(); - await fixture.ApplyReleases(updateInfo, progress.Add); - this.Log().Info("Progress: [{0}]", String.Join(",", progress)); + await fixture.ApplyReleases(updateInfo, progress.Add); + this.Log().Info("Progress: [{0}]", String.Join(",", progress)); - progress - .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) - .ShouldEqual(100); - } + progress + .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) + .ShouldEqual(100); var filesToFind = new[] { new {Name = "NLog.dll", Version = new Version("2.0.0.0")}, @@ -141,7 +139,7 @@ namespace Squirrel.Tests "Squirrel.Core.1.2.0.0-full.nupkg", }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(packagesDir, x))); - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.1.0.0-full.nupkg")); var latestFullEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.2.0.0-full.nupkg")); @@ -149,15 +147,13 @@ namespace Squirrel.Tests var updateInfo = UpdateInfo.Create(baseEntry, new[] { latestFullEntry }, packagesDir, FrameworkVersion.Net40); updateInfo.ReleasesToApply.Contains(latestFullEntry).ShouldBeTrue(); - using (fixture) { - var progress = new List(); - await fixture.ApplyReleases(updateInfo, progress.Add); - this.Log().Info("Progress: [{0}]", String.Join(",", progress)); + var progress = new List(); + await fixture.ApplyReleases(updateInfo, progress.Add); + this.Log().Info("Progress: [{0}]", String.Join(",", progress)); - progress - .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) - .ShouldEqual(100); - } + progress + .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) + .ShouldEqual(100); var rootDirectory = Path.Combine(tempDir, "theApp", "app-1.2.0.0"); @@ -191,7 +187,7 @@ namespace Squirrel.Tests "Squirrel.Core.1.3.0.0-full.nupkg", }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(packagesDir, x))); - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.1.0.0-full.nupkg")); var latestFullEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.3.0.0-full.nupkg")); @@ -199,15 +195,13 @@ namespace Squirrel.Tests var updateInfo = UpdateInfo.Create(baseEntry, new[] { latestFullEntry }, packagesDir, FrameworkVersion.Net40); updateInfo.ReleasesToApply.Contains(latestFullEntry).ShouldBeTrue(); - using (fixture) { - var progress = new List(); - await fixture.ApplyReleases(updateInfo, progress.Add); - this.Log().Info("Progress: [{0}]", String.Join(",", progress)); + var progress = new List(); + await fixture.ApplyReleases(updateInfo, progress.Add); + this.Log().Info("Progress: [{0}]", String.Join(",", progress)); - progress - .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) - .ShouldEqual(100); - } + progress + .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) + .ShouldEqual(100); var rootDirectory = Path.Combine(tempDir, "theApp", "app-1.3.0.0"); @@ -243,7 +237,7 @@ namespace Squirrel.Tests "Squirrel.Core.1.1.0.0-full.nupkg", }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(packagesDir, x))); - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.0.0.0-full.nupkg")); var deltaEntry = ReleaseEntry.GenerateFromFile(Path.Combine(packagesDir, "Squirrel.Core.1.1.0.0-delta.nupkg")); @@ -252,16 +246,14 @@ namespace Squirrel.Tests var updateInfo = UpdateInfo.Create(baseEntry, new[] { deltaEntry, latestFullEntry }, packagesDir, FrameworkVersion.Net40); updateInfo.ReleasesToApply.Contains(deltaEntry).ShouldBeTrue(); - using (fixture) { - var progress = new List(); + var progress = new List(); - await fixture.ApplyReleases(updateInfo, progress.Add); - this.Log().Info("Progress: [{0}]", String.Join(",", progress)); + await fixture.ApplyReleases(updateInfo, progress.Add); + this.Log().Info("Progress: [{0}]", String.Join(",", progress)); - progress - .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) - .ShouldEqual(100); - } + progress + .Aggregate(0, (acc, x) => { x.ShouldBeGreaterThan(acc); return x; }) + .ShouldEqual(100); var filesToFind = new[] { new {Name = "NLog.dll", Version = new Version("2.0.0.0")}, @@ -294,17 +286,17 @@ namespace Squirrel.Tests }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(tempDir, "theApp", "packages", x))); var urlDownloader = new FakeUrlDownloader(); - using (var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, urlDownloader)) { - var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Squirrel.Core.1.0.0.0-full.nupkg")); - var deltaEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Squirrel.Core.1.1.0.0-delta.nupkg")); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); - var resultObs = (Task)fixture.GetType().GetMethod("createFullPackagesFromDeltas", BindingFlags.NonPublic | BindingFlags.Instance) - .Invoke(fixture, new object[] { new[] {deltaEntry}, baseEntry }); + var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Squirrel.Core.1.0.0.0-full.nupkg")); + var deltaEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Squirrel.Core.1.1.0.0-delta.nupkg")); - var result = await resultObs; - var zp = new ZipPackage(Path.Combine(tempDir, "theApp", "packages", result.Filename)); - zp.Version.ToString().ShouldEqual("1.1.0.0"); - } + var resultObs = (Task)fixture.GetType().GetMethod("createFullPackagesFromDeltas", BindingFlags.NonPublic | BindingFlags.Instance) + .Invoke(fixture, new object[] { new[] {deltaEntry}, baseEntry }); + + var result = await resultObs; + var zp = new ZipPackage(Path.Combine(tempDir, "theApp", "packages", result.Filename)); + zp.Version.ToString().ShouldEqual("1.1.0.0"); } } } diff --git a/test/UpdateManagerTests.cs b/test/UpdateManagerTests.cs index 97e9034c..c08fb64b 100644 --- a/test/UpdateManagerTests.cs +++ b/test/UpdateManagerTests.cs @@ -27,11 +27,9 @@ namespace Squirrel.Tests "Squirrel.Core.1.1.0.0-full.nupkg", }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(tempDir, "theApp", "packages", x))); - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); - using (fixture) { - await fixture.UpdateLocalReleasesFile(); - } + await fixture.updateLocalReleasesFile(); var releasePath = Path.Combine(packageDir.FullName, "RELEASES"); File.Exists(releasePath).ShouldBeTrue(); @@ -63,17 +61,16 @@ namespace Squirrel.Tests File.Copy(path, Path.Combine(remotePackages, x)); }); - var fixture = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); + + // sync both release files + await fixture.updateLocalReleasesFile(); + ReleaseEntry.BuildReleasesFile(remotePackages); + // check for an update UpdateInfo updateInfo; - using (fixture) - { - // sync both release files - await fixture.UpdateLocalReleasesFile(); - ReleaseEntry.BuildReleasesFile(remotePackages); - - // check for an update - updateInfo = await fixture.CheckForUpdate(); + using (var mgr = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader())) { + updateInfo = await mgr.CheckForUpdate(); } Assert.NotNull(updateInfo); @@ -111,17 +108,15 @@ namespace Squirrel.Tests File.Copy(path, Path.Combine(remotePackages, x)); }); - var fixture = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); + + // sync both release files + await fixture.updateLocalReleasesFile(); + ReleaseEntry.BuildReleasesFile(remotePackages); UpdateInfo updateInfo; - using (fixture) - { - // sync both release files - await fixture.UpdateLocalReleasesFile(); - ReleaseEntry.BuildReleasesFile(remotePackages); - - // check for an update - updateInfo = await fixture.CheckForUpdate(); + using (var mgr = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader())) { + updateInfo = await mgr.CheckForUpdate(); } Assert.NotNull(updateInfo); @@ -154,25 +149,21 @@ namespace Squirrel.Tests File.Copy(path, Path.Combine(remotePackages, x)); }); - var fixture = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader()); + var fixture = new UpdateManager.ApplyReleasesImpl(tempDir); - UpdateInfo updateInfo; - using (fixture) - { - // sync both release files - await fixture.UpdateLocalReleasesFile(); - ReleaseEntry.BuildReleasesFile(remotePackages); - - updateInfo = await fixture.CheckForUpdate(); + // sync both release files + await fixture.updateLocalReleasesFile(); + ReleaseEntry.BuildReleasesFile(remotePackages); + using (var mgr = new UpdateManager(remotePackages, "theApp", FrameworkVersion.Net40, tempDir, new FakeUrlDownloader())) { + UpdateInfo updateInfo; + updateInfo = await mgr.CheckForUpdate(); Assert.True(updateInfo.ReleasesToApply.First().IsDelta); - updateInfo = await fixture.CheckForUpdate(ignoreDeltaUpdates: true); - + updateInfo = await mgr.CheckForUpdate(ignoreDeltaUpdates: true); Assert.False(updateInfo.ReleasesToApply.First().IsDelta); } } - } [Fact] @@ -220,11 +211,8 @@ namespace Squirrel.Tests public async Task WhenUrlResultsInWebExceptionReturnNull() { // This should result in a WebException (which gets caught) unless you can actually access http://lol - var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net45); - var updateInfo = await fixture.CheckForUpdate(); - Assert.Null(updateInfo); } }