public void UpgradeConfig_WithSourceAndDestinationDirectory_UpgradesWebConfig() { // arrange const string newConfig = @"<configuration><connectionStrings><connectionString name=""default"" /></connectionStrings><Foo /></configuration>"; const string oldConfig = @"<configuration><connectionStrings><connectionString name=""mine"" /></connectionStrings></configuration>"; var newConfigFile = new Mock<IFile>(); var stream = new NonDisposableMemoryStream(); newConfigFile.Setup(f => f.OpenWrite()).Returns(stream); newConfigFile.Setup(f => f.Contents).Returns(newConfig); var existingFileConfig = new Mock<IFile>(); newConfigFile.Setup(f => f.Overwrite(existingFileConfig.Object)); existingFileConfig.Setup(f => f.Contents).Returns(oldConfig); existingFileConfig.Setup(f => f.Exists).Returns(true); var sourceDirectory = new Mock<IDirectory>(); sourceDirectory.Setup(s => s.CombineFile("Web.config")).Returns(newConfigFile.Object); var destinationDirectory = new Mock<IDirectory>(); destinationDirectory.Setup(d => d.CombineFile("Web.config")).Returns(existingFileConfig.Object); var upgrader = new WebConfigUpgrader(sourceDirectory.Object); // act upgrader.UpgradeConfig(destinationDirectory.Object); // assert const string expected = @"<configuration> <connectionStrings> <connectionString name=""mine"" /> </connectionStrings> <Foo /> </configuration>"; Assert.AreEqual(expected, stream.ToStringContents()); }
public void Run() { //assuming sourceDirectory is set, either explicitly or by unzipped resources. var sourceDirectory = new SubtextDirectory(Settings.SourceDirectory); if (!VerifyDirectory(sourceDirectory, "source")) { return; } var targetDirectory = new SubtextDirectory(Settings.UpgradeTargetDirectory); if (!VerifyDirectory(targetDirectory, "target")) { return; } IDirectory backup = null; if (!String.IsNullOrEmpty(Settings.BackupDirectory)) { backup = new SubtextDirectory(Settings.BackupDirectory); if (!VerifyDirectory(backup, "backup")) { return; } } string message = "Upgrading using the following settings:"; Progress.ReportProgress(10, message); if (UserCancelled()) { return; } message = string.Format("Source Directory: '{0}'", Settings.SourceDirectory); Progress.ReportProgress(10, message); if (UserCancelled()) { return; } message = string.Format("Target Directory: '{0}", Settings.UpgradeTargetDirectory); Progress.ReportProgress(10, message); if (UserCancelled()) { return; } if (backup != null) { message = string.Format("Backup Directory: '{0}", Settings.BackupDirectory); Progress.ReportProgress(20, message); if (UserCancelled()) { return; } message = string.Format("Clearing backup directory '{0}'", backup.Path); Progress.ReportProgress(20, message); if (UserCancelled()) { return; } backup.Delete(true); backup.Create(); message = "Backing up source and target directories"; Progress.ReportProgress(20, message); if (UserCancelled()) { return; } sourceDirectory.CopyTo(backup.Combine("source").Create()); targetDirectory.CopyTo(backup.Combine("target").Create()); } var configUpgrader = new WebConfigUpgrader(sourceDirectory); message = "Upgrading Web.config"; Progress.ReportProgress(30, message); if (UserCancelled()) { return; } configUpgrader.UpgradeConfig(targetDirectory); var customSkinConfig = targetDirectory.CombineFile(@"Admin\Skins.User.config"); if (customSkinConfig.Exists) { message = "Updating skin.config for custom skins"; Progress.ReportProgress(60, message); if (UserCancelled()) { return; } var skinConfig = new LegacySkinsConfig(customSkinConfig); var skinsDirectory = sourceDirectory.Combine(@"Skins").Ensure(); skinConfig.UpgradeSkins(skinsDirectory); } else { message = string.Format("Did not find custom skins file at '{0}'", customSkinConfig.Path); Progress.ReportProgress(60, message); if (UserCancelled()) { return; } } message = string.Format("Deploying '{0}' to '{1}'", sourceDirectory.Path, targetDirectory.Path); Progress.ReportProgress(80, message); if (UserCancelled()) { return; } var deployer = new FileDeployer(sourceDirectory, targetDirectory); deployer.Deploy(); message = "Cleaning up old directories"; Progress.ReportProgress(90, message); if (UserCancelled()) { return; } deployer.RemoveOldDirectories(); message = "Checking skins for references to legacy Subtext.Web.Controls assembly."; Progress.ReportProgress(95, message); var skinUpgrader = new SkinUpgrader(targetDirectory.Combine("Skins")); skinUpgrader.Run(); message = "Done!"; Progress.ReportProgress(100, message); }
public void Run() { //assuming sourceDirectory is set, either explicitly or by unzipped resources. var sourceDirectory = new SubtextDirectory(Settings.SourceDirectory); if (!VerifyDirectory(sourceDirectory, "source")) { return; } var targetDirectory = new SubtextDirectory(Settings.UpgradeTargetDirectory); if (!VerifyDirectory(targetDirectory, "target")) { return; } IDirectory backup = null; if (!String.IsNullOrEmpty(Settings.BackupDirectory)) { backup = new SubtextDirectory(Settings.BackupDirectory); if (!VerifyDirectory(backup, "backup")) { return; } } string message = "Upgrading using the following settings:"; Progress.ReportProgress(10, message); if (UserCancelled()) return; message = string.Format("Source Directory: '{0}'", Settings.SourceDirectory); Progress.ReportProgress(10, message); if (UserCancelled()) return; message = string.Format("Target Directory: '{0}", Settings.UpgradeTargetDirectory); Progress.ReportProgress(10, message); if (UserCancelled()) return; if (backup != null) { message = string.Format("Backup Directory: '{0}", Settings.BackupDirectory); Progress.ReportProgress(20, message); if (UserCancelled()) return; message = string.Format("Clearing backup directory '{0}'", backup.Path); Progress.ReportProgress(20, message); if (UserCancelled()) return; backup.Delete(true); backup.Create(); message = "Backing up source and target directories"; Progress.ReportProgress(20, message); if (UserCancelled()) return; sourceDirectory.CopyTo(backup.Combine("source").Create()); targetDirectory.CopyTo(backup.Combine("target").Create()); } var configUpgrader = new WebConfigUpgrader(sourceDirectory); message = "Upgrading Web.config"; Progress.ReportProgress(30, message); if (UserCancelled()) return; configUpgrader.UpgradeConfig(targetDirectory); var customSkinConfig = targetDirectory.CombineFile(@"Admin\Skins.User.config"); if (customSkinConfig.Exists) { message = "Updating skin.config for custom skins"; Progress.ReportProgress(60, message); if (UserCancelled()) return; var skinConfig = new LegacySkinsConfig(customSkinConfig); var skinsDirectory = sourceDirectory.Combine(@"Skins").Ensure(); skinConfig.UpgradeSkins(skinsDirectory); } else { message = string.Format("Did not find custom skins file at '{0}'", customSkinConfig.Path); Progress.ReportProgress(60, message); if (UserCancelled()) return; } message = string.Format("Deploying '{0}' to '{1}'", sourceDirectory.Path, targetDirectory.Path); Progress.ReportProgress(80, message); if (UserCancelled()) return; var deployer = new FileDeployer(sourceDirectory, targetDirectory); deployer.Deploy(); message = "Cleaning up old directories"; Progress.ReportProgress(90, message); if (UserCancelled()) return; deployer.RemoveOldDirectories(); message = "Checking skins for references to legacy Subtext.Web.Controls assembly."; Progress.ReportProgress(95, message); var skinUpgrader = new SkinUpgrader(targetDirectory.Combine("Skins")); skinUpgrader.Run(); message = "Done!"; Progress.ReportProgress(100, message); }