public void ShouldOnlySkipIfSpecified() { previous = new JournalEntry("123", "env", "proj", "pkg", "0.0.9", "rp01", DateTime.Now, "C:\\PackageOld.nupkg", "C:\\App", "C:\\MyApp", true); RunConvention(); Assert.That(variables.Get(SpecialVariables.Action.SkipJournal), Is.Null); }
public void ShouldNotSkipIfPreviouslyFailed() { variables.Set(SpecialVariables.Package.SkipIfAlreadyInstalled, true.ToString()); previous = new JournalEntry("123", "env", "proj", "pkg", "0.0.9", "rp01", DateTime.Now, "C:\\PackageOld.nupkg", "C:\\App", "C:\\MyApp", false); RunConvention(); Assert.That(variables.Get(SpecialVariables.Action.SkipJournal), Is.Null); }
public void AddJournalEntry(JournalEntry entry) { using (semaphore.Acquire(SemaphoreName, "Another process is using the deployment journal")) { var xElement = entry.ToXmlElement(); Log.VerboseFormat("Adding journal entry:\n{0}", xElement.ToString()); Write(Read().Concat(new[] {xElement})); } }
public void SetUp() { fileSystem = Substitute.For<ICalamariFileSystem>(); deploymentJournal = Substitute.For<IDeploymentJournal>(); clock = Substitute.For<IClock>(); retentionPolicy = new RetentionPolicy(fileSystem, deploymentJournal, clock); now = new DateTimeOffset(new DateTime(2015, 01, 15), new TimeSpan(0, 0, 0)); clock.GetUtcTime().Returns(now); // Deployed 4 days prior to 'now' fourDayOldDeployment = new JournalEntry("fourDayOld", "blah", "blah", "blah", "blah", policySet1, now.AddDays(-4).LocalDateTime, "C:\\packages\\Acme.1.0.0.nupkg", "C:\\Applications\\Acme.1.0.0", null, true); // Deployed 4 days prior to 'now' but to the same location as the latest successful deployment fourDayOldSameLocationDeployment = new JournalEntry("twoDayOld", "blah", "blah", "blah", "blah", policySet1, now.AddDays(-4).LocalDateTime, "C:\\packages\\Acme.1.2.0.nupkg", "C:\\Applications\\Acme.1.2.0", null, true); // Deployed 3 days prior to 'now' threeDayOldDeployment = new JournalEntry("threeDayOld", "blah", "blah", "blah", "blah", policySet1, now.AddDays(-3).LocalDateTime, "C:\\packages\\Acme.1.1.0.nupkg", "C:\\Applications\\Acme.1.1.0", null, true); // Deployed 2 days prior to 'now' twoDayOldDeployment = new JournalEntry("twoDayOld", "blah", "blah", "blah", "blah", policySet1, now.AddDays(-2).LocalDateTime, "C:\\packages\\Acme.1.2.0.nupkg", "C:\\Applications\\Acme.1.2.0", null, true); // Deployed (unsuccessfully) 1 day prior to 'now' oneDayOldUnsuccessfulDeployment = new JournalEntry("oneDayOldUnsuccessful", "blah", "blah", "blah", "blah", policySet1, now.AddDays(-1).LocalDateTime, "C:\\packages\\Acme.1.3.0.nupkg", "C:\\Applications\\Acme.1.3.0", null, false); // Deployed 5 days prior to 'now', but has a different policy-set fiveDayOldNonMatchingDeployment = new JournalEntry("fiveDayOld", "blah", "blah", "blah", "blah", policySet2, now.AddDays(-5).LocalDateTime, "C:\\packages\\Beta.1.0.0.nupkg", "C:\\Applications\\Beta.1.0.0", null, true); var journalEntries = new List<JournalEntry> { fiveDayOldNonMatchingDeployment, fourDayOldDeployment, threeDayOldDeployment, twoDayOldDeployment, oneDayOldUnsuccessfulDeployment }; deploymentJournal.GetAllJournalEntries().Returns(journalEntries); foreach (var journalEntry in journalEntries) { fileSystem.FileExists(journalEntry.ExtractedFrom).Returns(true); fileSystem.DirectoryExists(journalEntry.ExtractedTo).Returns(true); } }
void DeleteExtractionSource(JournalEntry deployment, List<JournalEntry> preservedEntries) { if (string.IsNullOrWhiteSpace(deployment.ExtractedFrom) || !fileSystem.FileExists(deployment.ExtractedFrom) || preservedEntries.Any(entry => deployment.ExtractedFrom.Equals(entry.ExtractedFrom, StringComparison.Ordinal))) return; Log.VerboseFormat("Removing package file '{0}'", deployment.ExtractedFrom); fileSystem.DeleteFile(deployment.ExtractedFrom, FailureOptions.IgnoreFailure); }
void DeleteExtractionDestination(JournalEntry deployment, List<JournalEntry> preservedEntries) { if (!fileSystem.DirectoryExists(deployment.ExtractedTo) || preservedEntries.Any(entry => deployment.ExtractedTo.Equals(entry.ExtractedTo, StringComparison.Ordinal))) return; Log.VerboseFormat("Removing directory '{0}'", deployment.ExtractedTo); fileSystem.PurgeDirectory(deployment.ExtractedTo, FailureOptions.IgnoreFailure); try { fileSystem.DeleteDirectory(deployment.ExtractedTo); } catch (Exception ex) { Log.VerboseFormat("Could not delete directory '{0}' because some files could not be deleted: {1}", deployment.ExtractedFrom, ex.Message); } }
public void ShouldAddEmptyVariablesIfNoPreviousInstallation() { previous = null; RunConvention(); Assert.That(variables.Get(SpecialVariables.Tentacle.PreviousInstallation.OriginalInstalledPath), Is.EqualTo("")); }
public void ShouldAddVariablesIfPreviousInstallation() { previous = new JournalEntry("123", "env", "proj", "pkg", "0.0.9", "rp01", DateTime.Now, "C:\\PackageOld.nupkg", "C:\\App", "C:\\MyApp", true); RunConvention(); Assert.That(variables.Get(SpecialVariables.Tentacle.PreviousInstallation.OriginalInstalledPath), Is.EqualTo("C:\\App")); }