public void CreateFullPackagesFromDeltaSmokeTest() { string tempDir; using (Utility.WithTempDirectory(out tempDir)) { Directory.CreateDirectory(Path.Combine(tempDir, "theApp", "packages")); new[] { "Shimmer.Core.1.0.0.0-full.nupkg", "Shimmer.Core.1.1.0.0-delta.nupkg" }.ForEach(x => File.Copy(IntegrationTestHelper.GetPath("fixtures", x), Path.Combine(tempDir, "theApp", "packages", x))); var urlDownloader = new Mock<IUrlDownloader>(); var fixture = new UpdateManager("http://lol", "theApp", tempDir, null, urlDownloader.Object); var baseEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Shimmer.Core.1.0.0.0-full.nupkg")); var deltaEntry = ReleaseEntry.GenerateFromFile(Path.Combine(tempDir, "theApp", "packages", "Shimmer.Core.1.1.0.0-delta.nupkg")); var resultObs = (IObservable<ReleaseEntry>)fixture.GetType().GetMethod("createFullPackagesFromDeltas", BindingFlags.NonPublic | BindingFlags.Instance) .Invoke(fixture, new object[] { new[] {deltaEntry}, baseEntry }); var result = resultObs.First(); var zp = new ZipPackage(Path.Combine(tempDir, "theApp", "packages", result.Filename)); zp.Version.ToString().ShouldEqual("1.1.0.0"); } }
public void IfAppSetupThrowsWeFailTheInstall() { string tempDir; using (acquireEnvVarLock()) using (setShouldThrow()) using (Utility.WithTempDirectory(out tempDir)) { var di = new DirectoryInfo(Path.Combine(tempDir, "theApp", "app-1.1.0.0")); di.CreateRecursive(); File.Copy(getPathToShimmerTestTarget(), Path.Combine(di.FullName, "ShimmerIAppUpdateTestTarget.exe")); var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, null, null); bool shouldDie = true; try { this.Log().Info("Invoking post-install"); var mi = fixture.GetType().GetMethod("runPostInstallOnDirectory", BindingFlags.NonPublic | BindingFlags.Instance); mi.Invoke(fixture, new object[] { di.FullName, true, new Version(1, 1, 0, 0), Enumerable.Empty<ShortcutCreationRequest>() }); } catch (TargetInvocationException ex) { this.Log().Info("Expected to receive Exception", ex); // NB: This is the exception explicitly rigged in OnAppInstall if (ex.InnerException is FileNotFoundException) { shouldDie = false; } else { this.Log().ErrorException("Expected FileNotFoundException, didn't get it", ex); } } shouldDie.ShouldBeFalse(); } }
public void ShouldCreateAppShortcutsBasedOnClientExe() { string tempDir; using (acquireEnvVarLock()) using (Utility.WithTempDirectory(out tempDir)) using (setEnvVar("ShortcutDir", tempDir)) { var di = new DirectoryInfo(Path.Combine(tempDir, "theApp", "app-1.1.0.0")); di.CreateRecursive(); File.Copy(getPathToShimmerTestTarget(), Path.Combine(di.FullName, "ShimmerIAppUpdateTestTarget.exe")); var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, null, null); this.Log().Info("Invoking post-install"); var mi = fixture.GetType().GetMethod("runPostInstallOnDirectory", BindingFlags.NonPublic | BindingFlags.Instance); mi.Invoke(fixture, new object[] { di.FullName, true, new Version(1, 1, 0, 0), Enumerable.Empty<ShortcutCreationRequest>() }); File.Exists(Path.Combine(tempDir, "Foo.lnk")).ShouldBeTrue(); } }
public void CallAppInstallOnTheJustInstalledVersion() { string tempDir; using (acquireEnvVarLock()) using (Utility.WithTempDirectory(out tempDir)) { var di = Path.Combine(tempDir, "theApp", "app-1.1.0.0"); Directory.CreateDirectory(di); File.Copy(getPathToShimmerTestTarget(), Path.Combine(di, "ShimmerIAppUpdateTestTarget.exe")); var fixture = new UpdateManager("http://lol", "theApp", FrameworkVersion.Net40, tempDir, null, null); this.Log().Info("Invoking post-install"); var mi = fixture.GetType().GetMethod("runPostInstallOnDirectory", BindingFlags.NonPublic | BindingFlags.Instance); mi.Invoke(fixture, new object[] { di, true, new Version(1, 1, 0, 0), Enumerable.Empty<ShortcutCreationRequest>() }); getEnvVar("AppInstall_Called").ShouldEqual("1"); getEnvVar("VersionInstalled_Called").ShouldEqual("1.1.0.0"); } }