コード例 #1
0
        public async Task RevertFileAsync_RevertsFile()
        {
            var projectFileContent = string.Format(
                CultureInfo.InvariantCulture,
                "<a>{0}  <x>{0}    <b>d</b>{0}    <y>{0}      <z>d</z>{0}    </y>{0}  </x>{0}</a>",
                Environment.NewLine);

            using (var test = new XdtTransformerTest("<a xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\"><x><y xdt:Transform=\"Remove\"><z>$c$</z></y></x></a>"))
            {
                var zipArchiveFilePath = Path.Combine(test.TestDirectory.Path, "archive.zip");
                var zipFileInfo        = new InternalZipFileInfo(zipArchiveFilePath, "install.xdt");

                using (var zipFileStream = File.OpenWrite(zipArchiveFilePath))
                    using (var zipArchive = new ZipArchive(zipFileStream, ZipArchiveMode.Create))
                    {
                        var content = Encoding.UTF8.GetBytes("<a xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\"><x><b xdt:Transform=\"Insert\">$c$</b></x></a>");

                        zipArchive.AddEntry(zipFileInfo.ZipArchiveEntryFullName, content);
                    }

                File.WriteAllText(test.TargetFile.FullName, projectFileContent);

                test.ProjectSystem.SetupGet(x => x.ProjectFullPath)
                .Returns(test.TargetFile.DirectoryName);
                test.ProjectSystem.SetupGet(x => x.ProjectName)
                .Returns("ProjectName");
                test.ProjectSystem.Setup(x => x.GetPropertyValue(It.IsNotNull <string>()))
                .Returns("d");
                test.ProjectSystem.Setup(x => x.AddFile(It.IsNotNull <string>(), It.IsNotNull <Stream>()))
                .Callback <string, Stream>(
                    (targetFilePath, stream) =>
                {
                    Assert.Equal(test.TargetFile.Name, targetFilePath);

                    stream.Seek(offset: 0, origin: SeekOrigin.Begin);

                    using (var reader = new StreamReader(stream))
                    {
                        var actualResult   = reader.ReadToEnd();
                        var expectedResult = string.Format(
                            CultureInfo.InvariantCulture,
                            "<a>{0}  <x>{0}    <b>d</b>{0}  </x>{0}</a>",
                            Environment.NewLine);

                        Assert.Equal(expectedResult, actualResult);
                    }
                });

                await test.Transformer.RevertFileAsync(
                    test.StreamTaskFactory,
                    test.TargetFile.Name,
                    new[] { zipFileInfo },
                    test.ProjectSystem.Object,
                    CancellationToken.None);
            }
        }
コード例 #2
0
        public async Task RevertFileAsync_RevertsFile()
        {
            var projectFileContent = string.Format(
                CultureInfo.InvariantCulture,
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>{0}<a>{0}  <x>{0}    <y />{0}    <z>d</z>{0}  </x>{0}  <b>d</b>{0}</a>",
                Environment.NewLine);

            using (var test = new XmlTransformerTest(projectFileContent))
            {
                var zipArchiveFilePath = Path.Combine(test.TestDirectory.Path, "archive.zip");
                var zipFileInfo        = new InternalZipFileInfo(zipArchiveFilePath, "xml.transform");

                using (var zipFileStream = File.OpenWrite(zipArchiveFilePath))
                    using (var zipArchive = new ZipArchive(zipFileStream, ZipArchiveMode.Create))
                    {
                        var content = Encoding.UTF8.GetBytes("<a><x><z>$c$</z></x></a>");

                        zipArchive.AddEntry(zipFileInfo.ZipArchiveEntryFullName, content);
                    }

                File.WriteAllText(test.TargetFile.FullName, projectFileContent);

                test.ProjectSystem.Setup(x => x.FileExistsInProject(It.IsNotNull <string>()))
                .Returns(true);
                test.ProjectSystem.SetupGet(x => x.ProjectFullPath)
                .Returns(test.TargetFile.DirectoryName);
                test.ProjectSystem.SetupGet(x => x.NuGetProjectContext)
                .Returns(Mock.Of <INuGetProjectContext>());
                test.ProjectSystem.Setup(x => x.GetPropertyValue(It.IsNotNull <string>()))
                .Returns("d");
                test.ProjectSystem.Setup(x => x.RemoveFile(It.IsNotNull <string>()));

                await test.Transformer.RevertFileAsync(
                    test.StreamTaskFactory,
                    test.TargetFile.Name,
                    new[] { zipFileInfo },
                    test.ProjectSystem.Object,
                    CancellationToken.None);

                var expectedResult = string.Format(
                    CultureInfo.InvariantCulture,
                    "<?xml version=\"1.0\" encoding=\"utf-8\"?>{0}<a>{0}  <x>{0}    {0}    <z>d</z>{0}  </x>{0}  {0}</a>",
                    Environment.NewLine);
                var actualResult = File.ReadAllText(test.TargetFile.FullName);

                Assert.Equal(expectedResult, actualResult);
            }
        }