コード例 #1
0
        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());
        }
コード例 #2
0
ファイル: Upgrader.cs プロジェクト: ghjigan/Subtext
        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);
        }
コード例 #3
0
ファイル: Upgrader.cs プロジェクト: rsaladrigas/Subtext
        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);
        }