public void Execute_WithMinimalConfig_ReturnsTrue() { FakeBuildEngine anEngine = new FakeBuildEngine(); var buildCop = new BuildCopMsBuildTask(); ((ITask)buildCop).BuildEngine = anEngine; buildCop.buildGroups = new TaskItem[1] { new TaskItem("MinimalConfig") }; Assert.IsTrue(buildCop.Execute()); Assert.That(buildCop.Errors.Length, Is.EqualTo(0)); }
public void Execute_WithDefaultNewVisualStudioProjectAndSampleBuildCopConfig_FailsOnTreatErrorsAsWarnings() { FakeBuildEngine anEngine = new FakeBuildEngine(); var buildCop = new BuildCopMsBuildTask(); ((ITask)buildCop).BuildEngine = anEngine; buildCop.buildGroups = new TaskItem[1] { new TaskItem("DefaultNewVisualStudioProjectAndSampleBuildCopConfig") }; Assert.IsFalse(buildCop.Execute()); Assert.That(buildCop.Errors.Length, Is.EqualTo(1)); Assert.That(buildCop.Errors[0].ItemSpec, Is.EqualTo("Error .\\VisualStudioNewProject.proj The build property \"TreatWarningsAsErrors\" does not exist in the build file.")); }
public void CanBuildSimpleMsiPackage() { var folder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); using (var fs = new DisposableFileSystem()) { var baseFolder = fs.GetFolder(); var intermediateFolder = Path.Combine(baseFolder, "obj"); var pdbPath = Path.Combine(baseFolder, @"bin\testpackage.wixpdb"); var engine = new FakeBuildEngine(); var task = new WixBuild { BuildEngine = engine, SourceFiles = new[] { new TaskItem(Path.Combine(folder, "Package.wxs")), new TaskItem(Path.Combine(folder, "PackageComponents.wxs")), }, LocalizationFiles = new[] { new TaskItem(Path.Combine(folder, "Package.en-us.wxl")), }, BindInputPaths = new[] { new TaskItem(Path.Combine(folder, "data")), }, IntermediateDirectory = new TaskItem(intermediateFolder), OutputFile = new TaskItem(Path.Combine(baseFolder, @"bin\test.msi")), PdbType = "Full", PdbFile = new TaskItem(pdbPath), DefaultCompressionLevel = "nOnE", }; var result = task.Execute(); Assert.True(result, $"MSBuild task failed unexpectedly. Output:\r\n{engine.Output}"); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); Assert.True(File.Exists(pdbPath)); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\cab1.cab"))); var intermediate = Intermediate.Load(pdbPath); var section = intermediate.Sections.Single(); var fileSymbol = section.Symbols.OfType <FileSymbol>().Single(); Assert.Equal(Path.Combine(folder, @"data\test.txt"), fileSymbol[FileSymbolFields.Source].AsPath().Path); Assert.Equal(@"test.txt", fileSymbol[FileSymbolFields.Source].PreviousValue.AsPath().Path); } }
public void ReportsInnerExceptionForUnexpectedExceptions() { var folder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); using (var fs = new DisposableFileSystem()) { var baseFolder = fs.GetFolder(); var intermediateFolder = Path.Combine(baseFolder, "obj"); var pdbPath = Path.Combine(baseFolder, @"bin\testpackage.wixpdb"); var engine = new FakeBuildEngine(); var task = new DoIt { BuildEngine = engine, SourceFiles = new[] { new TaskItem(Path.Combine(folder, "Package.wxs")), new TaskItem(Path.Combine(folder, "PackageComponents.wxs")), }, LocalizationFiles = new[] { new TaskItem(Path.Combine(folder, "Package.en-us.wxl")), }, BindInputPaths = new[] { new TaskItem(Path.Combine(folder, "data")), }, IntermediateDirectory = new TaskItem(intermediateFolder), OutputFile = new TaskItem(Path.Combine(baseFolder, @"bin\test.msi")), PdbType = "Full", PdbFile = new TaskItem(pdbPath), }; var result = task.Execute(); Assert.False(result, $"MSBuild task succeeded unexpectedly. Output:\r\n{engine.Output}"); Assert.Contains( "System.PlatformNotSupportedException: Could not find platform specific 'wixnative.exe' ---> System.IO.FileNotFoundException: Could not find internal piece of WiX Toolset from", engine.Output); } }
public static void ReplaceFile() { var dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(dir); string originalNupkgPath; File.WriteAllBytes(originalNupkgPath = Path.Combine(dir, TestResources.MiscPackages.NameSigned), TestResources.MiscPackages.Signed); string replacementFilePath; File.WriteAllText(replacementFilePath = Path.Combine(dir, "Replacement.txt"), "<replacement>"); var engine = new FakeBuildEngine(); var task = new ReplacePackageParts() { BuildEngine = engine, SourcePackage = originalNupkgPath, Parts = new[] { "tools/EmptyBinary.dll" }, ReplacementFiles = new[] { replacementFilePath }, NewVersionSuffix = "replaced", DestinationFolder = dir }; bool result = task.Execute(); AssertEx.Equal(Array.Empty <string>(), engine.LogErrorEvents.Select(w => w.Message)); AssertEx.Equal(Array.Empty <string>(), engine.LogWarningEvents.Select(w => $"{w.Code}: {w.Message}")); Assert.True(result); using (var archive = new ZipArchive(File.Open(task.NewPackage, FileMode.Open, FileAccess.Read), ZipArchiveMode.Read)) { AssertEx.Equal(new[] { "_rels/.rels", "Signed.nuspec", "tools/EmptyBinary.dll", "[Content_Types].xml", "package/services/metadata/core-properties/501236e2491945269f45c5507859c951.psmdcp" }, archive.Entries.Select(e => e.FullName)); using (var reader = new StreamReader(archive.GetEntry("tools/EmptyBinary.dll").Open())) { Assert.Equal("<replacement>", reader.ReadToEnd()); } using (var reader = new StreamReader(archive.GetEntry("Signed.nuspec").Open())) { AssertEx.AssertEqualToleratingWhitespaceDifferences(@" <?xml version=""1.0"" encoding=""utf-8""?> <package xmlns=""http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd""> <metadata> <id>Signed</id> <version>1.2.3-replaced</version> <authors>Microsoft</authors> <owners>Microsoft</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Signed</description> </metadata> </package>", reader.ReadToEnd()); } using (var reader = new StreamReader(archive.GetEntry("package/services/metadata/core-properties/501236e2491945269f45c5507859c951.psmdcp").Open())) { AssertEx.AssertEqualToleratingWhitespaceDifferences( @"<?xml version=""1.0"" encoding=""utf-8""?>" + @"<coreProperties xmlns:dc=""http://purl.org/dc/elements/1.1/"" xmlns:dcterms=""http://purl.org/dc/terms/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.openxmlformats.org/package/2006/metadata/core-properties"">" + @"<dc:creator>Microsoft</dc:creator>" + @"<dc:description>Signed</dc:description>" + @"<dc:identifier>Signed</dc:identifier>" + @"<version>1.2.3-replaced</version>" + @"<keywords></keywords>" + @"<lastModifiedBy>NuGet, Version=4.7.0.5, Culture=neutral, PublicKeyToken=31bf3856ad364e35;Microsoft Windows NT 6.2.9200.0;.NET Framework 4.6</lastModifiedBy>" + @"</coreProperties>", reader.ReadToEnd()); } } Directory.Delete(dir, recursive: true); }