diff --git a/src/Squirrel/UpdateManager.cs b/src/Squirrel/UpdateManager.cs
index 2ae53de9..1b12818a 100644
--- a/src/Squirrel/UpdateManager.cs
+++ b/src/Squirrel/UpdateManager.cs
@@ -22,10 +22,10 @@ namespace Squirrel
public partial class UpdateManager : IUpdateManager
{
/// The unique Id of the application.
- public string AppId => _applicationIdOverride ?? getInstalledApplicationName();
+ public virtual string AppId => _applicationIdOverride ?? getInstalledApplicationName();
///
- public string AppDirectory => Path.Combine(_localAppDataDirectoryOverride ?? GetLocalAppDataDirectory(), AppId);
+ public virtual string AppDirectory => Path.Combine(_localAppDataDirectoryOverride ?? GetLocalAppDataDirectory(), AppId);
///
public bool IsInstalledApp => CurrentlyInstalledVersion() != null;
diff --git a/test/ApplyReleasesTests.cs b/test/ApplyReleasesTests.cs
index a2e23f57..ecac517b 100644
--- a/test/ApplyReleasesTests.cs
+++ b/test/ApplyReleasesTests.cs
@@ -7,6 +7,7 @@ using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using NuGet.Versioning;
using Squirrel.NuGet;
using Squirrel.Tests.TestHelpers;
using Xunit;
@@ -14,6 +15,23 @@ using Xunit.Abstractions;
namespace Squirrel.Tests
{
+ class ApplyReleasesImpl : UpdateManager
+ {
+ public override string AppDirectory => rootDir;
+
+ private readonly string rootDir;
+
+ public ApplyReleasesImpl(string rootDir)
+ {
+ this.rootDir = rootDir;
+ }
+
+ public Task ApplyReleasesPublic(UpdateInfo updateInfo, bool silentInstall, bool attemptingFullInstall, Action progress = null)
+ {
+ return this.ApplyReleases(updateInfo, silentInstall, attemptingFullInstall, progress);
+ }
+ }
+
public class ApplyReleasesTests : TestLoggingBase
{
public ApplyReleasesTests(ITestOutputHelper log) : base(log)
@@ -40,10 +58,10 @@ namespace Squirrel.Tests
// try to blow away a running process
await Task.Delay(1000);
- Assert.False(File.Exists(Path.Combine(tempDir, "theApp", "app-0.1.0", "args2.txt")));
- Assert.True(File.Exists(Path.Combine(tempDir, "theApp", "app-0.1.0", "args.txt")));
+ Assert.False(File.Exists(Path.Combine(tempDir, "theApp", "current", "args2.txt")));
+ Assert.True(File.Exists(Path.Combine(tempDir, "theApp", "current", "args.txt")));
- var text = File.ReadAllText(Path.Combine(tempDir, "theApp", "app-0.1.0", "args.txt"), Encoding.UTF8);
+ var text = File.ReadAllText(Path.Combine(tempDir, "theApp", "current", "args.txt"), Encoding.UTF8);
Assert.Contains("firstrun", text);
}
}
@@ -179,8 +197,15 @@ namespace Squirrel.Tests
await fixture.FullInstall();
}
- Assert.True(Directory.Exists(Path.Combine(tempDir, pkgName, "app-0.1.0")));
+ //Assert.True(Directory.Exists(Path.Combine(tempDir, pkgName, "app-0.1.0")));
+ Assert.True(Directory.Exists(Path.Combine(tempDir, pkgName, "current")));
+
+ var version = Utility.GetAppVersionDirectories(Path.Combine(tempDir, pkgName)).Single();
+ Assert.True(version.IsCurrent);
+ Assert.Equal(new SemanticVersion(0, 1, 0), version.Manifest.Version);
+
await Task.Delay(1000);
+ Assert.True(File.ReadAllText(Path.Combine(version.DirectoryPath, "args.txt")).Contains("--squirrel-firstrun"));
// update top 0.2.0
IntegrationTestHelper.CreateFakeInstalledApp("0.2.0", remotePkgDir, "SquirrelInstalledAppWithDots.nuspec");
@@ -191,7 +216,13 @@ namespace Squirrel.Tests
await fixture.UpdateApp();
}
- Assert.True(Directory.Exists(Path.Combine(tempDir, pkgName, "app-0.2.0")));
+ Utility.UpdateAndRetrieveCurrentFolder(Path.Combine(tempDir, pkgName), false);
+
+ var versions = Utility.GetAppVersionDirectories(Path.Combine(tempDir, pkgName)).ToArray();
+ Assert.Equal(2, versions.Count());
+ Assert.Equal(new SemanticVersion(0, 2, 0), versions.Single(s => s.IsCurrent).Version);
+
+ //Assert.True(Directory.Exists(Path.Combine(tempDir, pkgName, "app-0.2.0")));
await Task.Delay(1000);
// uninstall
@@ -267,7 +298,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.ApplyReleasesImpl(appDir);
+ var fixture = new ApplyReleasesImpl(appDir);
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"));
@@ -277,7 +308,7 @@ namespace Squirrel.Tests
var progress = new List();
- await fixture.ApplyReleases(updateInfo, false, false, progress.Add);
+ await fixture.ApplyReleasesPublic(updateInfo, false, false, progress.Add);
this.Log().Info("Progress: [{0}]", String.Join(",", progress));
progress
@@ -316,7 +347,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.ApplyReleasesImpl(appDir);
+ var fixture = new ApplyReleasesImpl(appDir);
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"));
@@ -325,7 +356,7 @@ namespace Squirrel.Tests
updateInfo.ReleasesToApply.Contains(latestFullEntry).ShouldBeTrue();
var progress = new List();
- await fixture.ApplyReleases(updateInfo, false, false, progress.Add);
+ await fixture.ApplyReleasesPublic(updateInfo, false, false, progress.Add);
this.Log().Info("Progress: [{0}]", String.Join(",", progress));
progress
@@ -364,7 +395,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.ApplyReleasesImpl(appDir);
+ var fixture = new ApplyReleasesImpl(appDir);
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"));
@@ -373,7 +404,7 @@ namespace Squirrel.Tests
updateInfo.ReleasesToApply.Contains(latestFullEntry).ShouldBeTrue();
var progress = new List();
- await fixture.ApplyReleases(updateInfo, false, false, progress.Add);
+ await fixture.ApplyReleasesPublic(updateInfo, false, false, progress.Add);
this.Log().Info("Progress: [{0}]", String.Join(",", progress));
progress
@@ -415,7 +446,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.ApplyReleasesImpl(appDir);
+ var fixture = new ApplyReleasesImpl(appDir);
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"));
@@ -426,7 +457,7 @@ namespace Squirrel.Tests
var progress = new List();
- await fixture.ApplyReleases(updateInfo, false, false, progress.Add);
+ await fixture.ApplyReleasesPublic(updateInfo, false, false, progress.Add);
this.Log().Info("Progress: [{0}]", String.Join(",", progress));
progress
@@ -465,13 +496,13 @@ namespace Squirrel.Tests
}.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(tempDir, "theApp", "packages", x)));
var urlDownloader = new FakeDownloader();
- var fixture = new UpdateManager.ApplyReleasesImpl(appDir);
+ var fixture = new ApplyReleasesImpl(appDir);
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 resultObs = (Task) fixture.GetType().GetMethod("createFullPackagesFromDeltas", BindingFlags.NonPublic | BindingFlags.Instance)
- .Invoke(fixture, new object[] { new[] { deltaEntry }, baseEntry, null });
+ var resultObsMethod = typeof(UpdateManager).GetMethod("createFullPackagesFromDeltas", BindingFlags.NonPublic | BindingFlags.Instance);
+ var resultObs = (Task) resultObsMethod.Invoke(fixture, new object[] { new[] { deltaEntry }, baseEntry, null });
var result = await resultObs;
var zp = new ZipPackage(Path.Combine(tempDir, "theApp", "packages", result.Filename));
@@ -492,7 +523,7 @@ namespace Squirrel.Tests
await mgr.FullInstall();
}
- var fixture = new UpdateManager.ApplyReleasesImpl(Path.Combine(path, "theApp"));
+ var fixture = new ApplyReleasesImpl(Path.Combine(path, "theApp"));
fixture.CreateShortcutsForExecutable("SquirrelAwareApp.exe", ShortcutLocation.Desktop | ShortcutLocation.StartMenu | ShortcutLocation.Startup | ShortcutLocation.AppRoot, false, null, null);
// NB: COM is Weird.
@@ -505,39 +536,28 @@ namespace Squirrel.Tests
}
}
- [Fact]
- public void UnshimOurselvesSmokeTest()
- {
- // NB: This smoke test is really more of a manual test - try it
- // by shimming Slack, then verifying the shim goes away
- var appDir = Environment.ExpandEnvironmentVariables(@"%LocalAppData%\Slack");
- var fixture = new UpdateManager.ApplyReleasesImpl(appDir);
+ //[Fact]
+ //public async Task GetShortcutsSmokeTest()
+ //{
+ // string remotePkgPath;
+ // string path;
- fixture.unshimOurselves();
- }
+ // using (Utility.WithTempDirectory(out path)) {
+ // using (Utility.WithTempDirectory(out remotePkgPath))
+ // using (var mgr = new UpdateManager(remotePkgPath, "theApp", path)) {
+ // IntegrationTestHelper.CreateFakeInstalledApp("1.0.0.1", remotePkgPath);
+ // await mgr.FullInstall();
+ // }
- [Fact]
- public async Task GetShortcutsSmokeTest()
- {
- string remotePkgPath;
- string path;
+ // var fixture = new ApplyReleasesImpl(Path.Combine(path, "theApp"));
+ // var result = fixture.GetShortcutsForExecutable("SquirrelAwareApp.exe", ShortcutLocation.Desktop | ShortcutLocation.StartMenu | ShortcutLocation.Startup, null);
- using (Utility.WithTempDirectory(out path)) {
- using (Utility.WithTempDirectory(out remotePkgPath))
- using (var mgr = new UpdateManager(remotePkgPath, "theApp", path)) {
- IntegrationTestHelper.CreateFakeInstalledApp("1.0.0.1", remotePkgPath);
- await mgr.FullInstall();
- }
+ // Assert.Equal(3, result.Keys.Count);
- var fixture = new UpdateManager.ApplyReleasesImpl(Path.Combine(path, "theApp"));
- var result = fixture.GetShortcutsForExecutable("SquirrelAwareApp.exe", ShortcutLocation.Desktop | ShortcutLocation.StartMenu | ShortcutLocation.Startup, null);
-
- Assert.Equal(3, result.Keys.Count);
-
- // NB: Squirrel-Aware first-run might still be running, slow
- // our roll before blowing away the temp path
- Thread.Sleep(1000);
- }
- }
+ // // NB: Squirrel-Aware first-run might still be running, slow
+ // // our roll before blowing away the temp path
+ // Thread.Sleep(1000);
+ // }
+ //}
}
}
\ No newline at end of file
diff --git a/test/UpdateManagerTests.cs b/test/UpdateManagerTests.cs
index d9ff2e25..e4764630 100644
--- a/test/UpdateManagerTests.cs
+++ b/test/UpdateManagerTests.cs
@@ -72,9 +72,7 @@ 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.ApplyReleasesImpl(appDir);
-
- await fixture.updateLocalReleasesFile();
+ ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(appDir));
var releasePath = Path.Combine(packageDir.FullName, "RELEASES");
File.Exists(releasePath).ShouldBeTrue();
@@ -106,10 +104,11 @@ namespace Squirrel.Tests
var entries = ReleaseEntry.ParseReleaseFile(File.ReadAllText(releasePath, Encoding.UTF8));
entries.Count().ShouldEqual(1);
- new[] {
- "ReactiveUI.dll",
- "NSync.Core.dll",
- }.ForEach(x => File.Exists(Path.Combine(localAppDir, "app-1.0.0.0", x)).ShouldBeTrue());
+ Assert.True(File.Exists(Path.Combine(localAppDir, "current", "ReactiveUI.dll")));
+ Assert.True(File.Exists(Path.Combine(localAppDir, "current", "NSync.Core.dll")));
+
+ var manifest = NuspecManifest.ParseFromFile(Path.Combine(localAppDir, "current", "mysqver"));
+ Assert.Equal(new NuGetVersion(1, 0, 0, 0), manifest.Version);
}
}
@@ -137,7 +136,7 @@ namespace Squirrel.Tests
new[] {
"file space name.txt"
- }.ForEach(x => File.Exists(Path.Combine(localAppDir, "app-0.1.0", x)).ShouldBeTrue());
+ }.ForEach(x => File.Exists(Path.Combine(localAppDir, "current", x)).ShouldBeTrue());
}
}
@@ -162,10 +161,8 @@ namespace Squirrel.Tests
File.Copy(path, Path.Combine(remotePackages, x));
});
- var fixture = new UpdateManager.ApplyReleasesImpl(appDir);
-
// sync both release files
- await fixture.updateLocalReleasesFile();
+ ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(appDir));
ReleaseEntry.BuildReleasesFile(remotePackages);
// check for an update
@@ -207,10 +204,8 @@ namespace Squirrel.Tests
File.Copy(path, Path.Combine(remotePackages, x));
});
- var fixture = new UpdateManager.ApplyReleasesImpl(appDir);
-
// sync both release files
- await fixture.updateLocalReleasesFile();
+ ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(appDir));
ReleaseEntry.BuildReleasesFile(remotePackages);
UpdateInfo updateInfo;
@@ -248,10 +243,8 @@ namespace Squirrel.Tests
File.Copy(path, Path.Combine(remotePackages, x));
});
- var fixture = new UpdateManager.ApplyReleasesImpl(appDir);
-
// sync both release files
- await fixture.updateLocalReleasesFile();
+ ReleaseEntry.BuildReleasesFile(Utility.PackageDirectoryForAppDir(appDir));
ReleaseEntry.BuildReleasesFile(remotePackages);
using (var mgr = new UpdateManager(remotePackages, "theApp", tempDir, new FakeDownloader())) {
@@ -340,16 +333,6 @@ namespace Squirrel.Tests
Assert.False(fixture.IsInstalledApp);
}
- [Fact]
- public void SetModelIdDoesNotThrow()
- {
- using (var fixture = new UpdateManager())
- fixture.SetProcessAppUserModelId();
-
- using (var fixture2 = new UpdateManager("", "TestASD"))
- fixture2.SetProcessAppUserModelId();
- }
-
[Theory]
[InlineData(0, 0, 25, 0)]
[InlineData(12, 0, 25, 3)]