From 2724cfee4c163f3297ee25edfd2372767cfd4945 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 19 Jul 2018 00:58:00 -0700 Subject: Move tool projects to Tools repo --- src/test/Example.Extension/Data/example.txt | 1 + src/test/Example.Extension/Data/example.wir | Bin 0 -> 534 bytes src/test/Example.Extension/Data/example.wxs | 8 + .../Example.Extension/Example.Extension.csproj | 20 + .../Example.Extension/ExampleCompilerExtension.cs | 81 ++++ src/test/Example.Extension/ExampleExtensionData.cs | 33 ++ .../Example.Extension/ExampleExtensionFactory.cs | 43 ++ .../ExamplePreprocessorExtensionAndCommandLine.cs | 50 +++ .../Example.Extension/ExampleTableDefinitions.cs | 20 + src/test/Example.Extension/ExampleTuple.cs | 31 ++ .../Example.Extension/ExampleTupleDefinitions.cs | 20 + .../ExampleWindowsInstallerBackendExtension.cs | 32 ++ .../TestData/Example.Extension/Data/example.txt | 1 - .../TestData/Example.Extension/Data/example.wir | Bin 534 -> 0 bytes .../TestData/Example.Extension/Data/example.wxs | 8 - .../Example.Extension/Example.Extension.csproj | 20 - .../Example.Extension/ExampleCompilerExtension.cs | 81 ---- .../Example.Extension/ExampleExtensionData.cs | 33 -- .../Example.Extension/ExampleExtensionFactory.cs | 43 -- .../ExamplePreprocessorExtensionAndCommandLine.cs | 50 --- .../Example.Extension/ExampleTableDefinitions.cs | 20 - .../TestData/Example.Extension/ExampleTuple.cs | 31 -- .../Example.Extension/ExampleTupleDefinitions.cs | 20 - .../ExampleWindowsInstallerBackendExtension.cs | 32 -- .../WixToolsetTest.BuildTasks/FakeBuildEngine.cs | 33 -- .../WixToolsetTest.BuildTasks/MsbuildFixture.cs | 64 --- .../MsiPackage/MsiPackage.wixproj | 57 --- .../MsiPackage/Package.de-de.wxl | 11 - .../MsiPackage/Package.en-us.wxl | 11 - .../MultiCulturalMsiPackage/MsiPackage/Package.wxs | 21 - .../MsiPackage/PackageComponents.wxs | 10 - .../MsiPackage/data/test.txt | 1 - .../MultiCulturalMsiPackage.sln | 31 -- .../SimpleMsiPackage/MsiPackage/MsiPackage.wixproj | 55 --- .../SimpleMsiPackage/MsiPackage/Package.en-us.wxl | 11 - .../SimpleMsiPackage/MsiPackage/Package.wxs | 21 - .../MsiPackage/PackageComponents.wxs | 10 - .../SimpleMsiPackage/MsiPackage/data/test.txt | 1 - .../TestData/SimpleMsiPackage/SimpleMsiPackage.sln | 31 -- .../WixToolsetTest.BuildTasks.csproj | 32 -- .../ExtensionFixture.cs | 14 +- .../WixToolsetTest.CoreIntegration/MsiFixture.cs | 442 ++++++++++++++++++++ .../ProgramFixture.cs | 456 --------------------- .../WixToolsetTest.CoreIntegration.csproj | 7 +- .../LightFixture.cs | 48 --- .../TestData/Wixout/Package.en-us.wxl | 11 - .../TestData/Wixout/data/test.txt | 1 - .../TestData/Wixout/test.wixout | Bin 10354 -> 0 bytes .../Utility/DisposableFileSystem.cs | 86 ---- .../Utility/TestData.cs | 17 - .../WixToolsetTest.LightIntegration.csproj | 30 -- 51 files changed, 792 insertions(+), 1398 deletions(-) create mode 100644 src/test/Example.Extension/Data/example.txt create mode 100644 src/test/Example.Extension/Data/example.wir create mode 100644 src/test/Example.Extension/Data/example.wxs create mode 100644 src/test/Example.Extension/Example.Extension.csproj create mode 100644 src/test/Example.Extension/ExampleCompilerExtension.cs create mode 100644 src/test/Example.Extension/ExampleExtensionData.cs create mode 100644 src/test/Example.Extension/ExampleExtensionFactory.cs create mode 100644 src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs create mode 100644 src/test/Example.Extension/ExampleTableDefinitions.cs create mode 100644 src/test/Example.Extension/ExampleTuple.cs create mode 100644 src/test/Example.Extension/ExampleTupleDefinitions.cs create mode 100644 src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs delete mode 100644 src/test/TestData/Example.Extension/Data/example.txt delete mode 100644 src/test/TestData/Example.Extension/Data/example.wir delete mode 100644 src/test/TestData/Example.Extension/Data/example.wxs delete mode 100644 src/test/TestData/Example.Extension/Example.Extension.csproj delete mode 100644 src/test/TestData/Example.Extension/ExampleCompilerExtension.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleExtensionData.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleExtensionFactory.cs delete mode 100644 src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleTableDefinitions.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleTuple.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs delete mode 100644 src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs delete mode 100644 src/test/WixToolsetTest.BuildTasks/FakeBuildEngine.cs delete mode 100644 src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/PackageComponents.wxs delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/data/test.txt delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MultiCulturalMsiPackage.sln delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.en-us.wxl delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.wxs delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/PackageComponents.wxs delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/data/test.txt delete mode 100644 src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/SimpleMsiPackage.sln delete mode 100644 src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.csproj create mode 100644 src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs delete mode 100644 src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs delete mode 100644 src/test/WixToolsetTest.LightIntegration/LightFixture.cs delete mode 100644 src/test/WixToolsetTest.LightIntegration/TestData/Wixout/Package.en-us.wxl delete mode 100644 src/test/WixToolsetTest.LightIntegration/TestData/Wixout/data/test.txt delete mode 100644 src/test/WixToolsetTest.LightIntegration/TestData/Wixout/test.wixout delete mode 100644 src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs delete mode 100644 src/test/WixToolsetTest.LightIntegration/Utility/TestData.cs delete mode 100644 src/test/WixToolsetTest.LightIntegration/WixToolsetTest.LightIntegration.csproj (limited to 'src/test') diff --git a/src/test/Example.Extension/Data/example.txt b/src/test/Example.Extension/Data/example.txt new file mode 100644 index 00000000..1b4ffe8a --- /dev/null +++ b/src/test/Example.Extension/Data/example.txt @@ -0,0 +1 @@ +This is example.txt. \ No newline at end of file diff --git a/src/test/Example.Extension/Data/example.wir b/src/test/Example.Extension/Data/example.wir new file mode 100644 index 00000000..674f63fc Binary files /dev/null and b/src/test/Example.Extension/Data/example.wir differ diff --git a/src/test/Example.Extension/Data/example.wxs b/src/test/Example.Extension/Data/example.wxs new file mode 100644 index 00000000..53531e99 --- /dev/null +++ b/src/test/Example.Extension/Data/example.wxs @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/test/Example.Extension/Example.Extension.csproj b/src/test/Example.Extension/Example.Extension.csproj new file mode 100644 index 00000000..1dde5044 --- /dev/null +++ b/src/test/Example.Extension/Example.Extension.csproj @@ -0,0 +1,20 @@ + + + + + + netstandard2.0 + false + embedded + + + + + + + + + + + + diff --git a/src/test/Example.Extension/ExampleCompilerExtension.cs b/src/test/Example.Extension/ExampleCompilerExtension.cs new file mode 100644 index 00000000..cd9e1fb9 --- /dev/null +++ b/src/test/Example.Extension/ExampleCompilerExtension.cs @@ -0,0 +1,81 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using System; + using System.Collections.Generic; + using System.Xml.Linq; + using WixToolset.Data; + using WixToolset.Extensibility; + + internal class ExampleCompilerExtension : BaseCompilerExtension + { + public override XNamespace Namespace => "http://www.example.com/scheams/v1/wxs"; + + public override void ParseElement(Intermediate intermediate, IntermediateSection section, XElement parentElement, XElement element, IDictionary context) + { + var processed = false; + + switch (parentElement.Name.LocalName) + { + case "Component": + switch (element.Name.LocalName) + { + case "Example": + this.ParseExampleElement(intermediate, section, element); + processed = true; + break; + } + break; + } + + if (!processed) + { + base.ParseElement(intermediate, section, parentElement, element, context); + } + } + + private void ParseExampleElement(Intermediate intermediate, IntermediateSection section, XElement element) + { + var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); + Identifier id = null; + string value = null; + + foreach (var attrib in element.Attributes()) + { + if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) + { + switch (attrib.Name.LocalName) + { + case "Id": + id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib); + break; + + case "Value": + value = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); + break; + + default: + this.ParseHelper.UnexpectedAttribute(element, attrib); + break; + } + } + else + { + this.ParseAttribute(intermediate, section, element, attrib, null); + } + } + + if (null == id) + { + //this.Messaging(WixErrors.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id")); + } + + if (!this.Messaging.EncounteredError) + { + var tuple = this.ParseHelper.CreateRow(section, sourceLineNumbers, "Example", id); + tuple.Set(1, value); + } + } + } +} diff --git a/src/test/Example.Extension/ExampleExtensionData.cs b/src/test/Example.Extension/ExampleExtensionData.cs new file mode 100644 index 00000000..724f9eea --- /dev/null +++ b/src/test/Example.Extension/ExampleExtensionData.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using WixToolset.Data; + using WixToolset.Extensibility; + + internal class ExampleExtensionData : IExtensionData + { + public string DefaultCulture => null; + + public Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions) + { + return Intermediate.Load(typeof(ExampleExtensionData).Assembly, "Example.Extension.Data.Example.wir", tupleDefinitions); + } + + public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) + { + switch (name) + { + case "Example": + tupleDefinition = ExampleTupleDefinitions.Example; + break; + + default: + tupleDefinition = null; + break; + } + + return tupleDefinition != null; + } + } +} \ No newline at end of file diff --git a/src/test/Example.Extension/ExampleExtensionFactory.cs b/src/test/Example.Extension/ExampleExtensionFactory.cs new file mode 100644 index 00000000..a081b758 --- /dev/null +++ b/src/test/Example.Extension/ExampleExtensionFactory.cs @@ -0,0 +1,43 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using System; + using WixToolset.Extensibility; + + public class ExampleExtensionFactory : IExtensionFactory + { + private ExamplePreprocessorExtensionAndCommandLine preprocessorExtension; + + public bool TryCreateExtension(Type extensionType, out object extension) + { + if (extensionType == typeof(IExtensionCommandLine) || extensionType == typeof(IPreprocessorExtension)) + { + if (preprocessorExtension == null) + { + preprocessorExtension = new ExamplePreprocessorExtensionAndCommandLine(); + } + + extension = preprocessorExtension; + } + else if (extensionType == typeof(ICompilerExtension)) + { + extension = new ExampleCompilerExtension(); + } + else if (extensionType == typeof(IExtensionData)) + { + extension = new ExampleExtensionData(); + } + else if (extensionType == typeof(IWindowsInstallerBackendExtension)) + { + extension = new ExampleWindowsInstallerBackendExtension(); + } + else + { + extension = null; + } + + return extension != null; + } + } +} diff --git a/src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs b/src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs new file mode 100644 index 00000000..6f86e20d --- /dev/null +++ b/src/test/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs @@ -0,0 +1,50 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using System; + using System.Collections.Generic; + using WixToolset.Extensibility; + using WixToolset.Extensibility.Services; + + internal class ExamplePreprocessorExtensionAndCommandLine : BasePreprocessorExtension, IExtensionCommandLine + { + private string exampleValueFromCommandLine; + + public IEnumerable CommandLineSwitches => throw new NotImplementedException(); + + public ExamplePreprocessorExtensionAndCommandLine() + { + this.Prefixes = new[] { "ex" }; + } + + public void PreParse(ICommandLineContext context) + { + } + + public bool TryParseArgument(IParseCommandLine parseCommandLine, string arg) + { + if (parseCommandLine.IsSwitch(arg) && arg.Substring(1).Equals("example", StringComparison.OrdinalIgnoreCase)) + { + this.exampleValueFromCommandLine = parseCommandLine.GetNextArgumentOrError(arg); + return true; + } + + return false; + } + + public void PostParse() + { + } + + public override string GetVariableValue(string prefix, string name) + { + if (prefix == "ex" && "test".Equals(name, StringComparison.OrdinalIgnoreCase)) + { + return String.IsNullOrWhiteSpace(this.exampleValueFromCommandLine) ? "(null)" : this.exampleValueFromCommandLine; + } + + return null; + } + } +} \ No newline at end of file diff --git a/src/test/Example.Extension/ExampleTableDefinitions.cs b/src/test/Example.Extension/ExampleTableDefinitions.cs new file mode 100644 index 00000000..dbd6491b --- /dev/null +++ b/src/test/Example.Extension/ExampleTableDefinitions.cs @@ -0,0 +1,20 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using WixToolset.Data.WindowsInstaller; + + public static class ExampleTableDefinitions + { + public static readonly TableDefinition ExampleTable = new TableDefinition( + "Example", + new[] + { + new ColumnDefinition("Example", ColumnType.String, 72, true, false, ColumnCategory.Identifier), + new ColumnDefinition("Value", ColumnType.String, 0, false, false, ColumnCategory.Formatted), + } + ); + + public static readonly TableDefinition[] All = new[] { ExampleTable }; + } +} diff --git a/src/test/Example.Extension/ExampleTuple.cs b/src/test/Example.Extension/ExampleTuple.cs new file mode 100644 index 00000000..0fc0d82c --- /dev/null +++ b/src/test/Example.Extension/ExampleTuple.cs @@ -0,0 +1,31 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using WixToolset.Data; + + public enum ExampleTupleFields + { + Example, + Value, + } + + public class ExampleTuple : IntermediateTuple + { + public ExampleTuple() : base(ExampleTupleDefinitions.Example, null, null) + { + } + + public ExampleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ExampleTupleDefinitions.Example, sourceLineNumber, id) + { + } + + public IntermediateField this[ExampleTupleFields index] => this.Fields[(int)index]; + + public string Value + { + get => this.Fields[(int)ExampleTupleFields.Value]?.AsString(); + set => this.Set((int)ExampleTupleFields.Value, value); + } + } +} diff --git a/src/test/Example.Extension/ExampleTupleDefinitions.cs b/src/test/Example.Extension/ExampleTupleDefinitions.cs new file mode 100644 index 00000000..4775b827 --- /dev/null +++ b/src/test/Example.Extension/ExampleTupleDefinitions.cs @@ -0,0 +1,20 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using WixToolset.Data; + + public static class ExampleTupleDefinitions + { + public const string ExampleName = "Example"; + + public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( + ExampleName, + new[] + { + new IntermediateFieldDefinition(nameof(ExampleTupleFields.Example), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), + }, + typeof(ExampleTuple)); + } +} diff --git a/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs b/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs new file mode 100644 index 00000000..f00a5102 --- /dev/null +++ b/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs @@ -0,0 +1,32 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace Example.Extension +{ + using WixToolset.Data; + using WixToolset.Data.WindowsInstaller; + using WixToolset.Extensibility; + + internal class ExampleWindowsInstallerBackendExtension : BaseWindowsInstallerBackendExtension + { + public override bool TryAddTupleToOutput(IntermediateTuple tuple, Output output) + { +#if ALTERNATIVE_TO_USING_HELPER + switch (tuple.Definition.Name) + { + case TupleDefinitions.ExampleName: + { + var table = output.EnsureTable(ExampleTableDefinitions.ExampleTable); + var row = table.CreateRow(tuple.SourceLineNumbers); + row[0] = tuple[0].AsString(); + row[1] = tuple[1].AsString(); + } + return true; + } + + return false; +#else + return this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, ExampleTableDefinitions.All); +#endif + } + } +} diff --git a/src/test/TestData/Example.Extension/Data/example.txt b/src/test/TestData/Example.Extension/Data/example.txt deleted file mode 100644 index 1b4ffe8a..00000000 --- a/src/test/TestData/Example.Extension/Data/example.txt +++ /dev/null @@ -1 +0,0 @@ -This is example.txt. \ No newline at end of file diff --git a/src/test/TestData/Example.Extension/Data/example.wir b/src/test/TestData/Example.Extension/Data/example.wir deleted file mode 100644 index 674f63fc..00000000 Binary files a/src/test/TestData/Example.Extension/Data/example.wir and /dev/null differ diff --git a/src/test/TestData/Example.Extension/Data/example.wxs b/src/test/TestData/Example.Extension/Data/example.wxs deleted file mode 100644 index 53531e99..00000000 --- a/src/test/TestData/Example.Extension/Data/example.wxs +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/test/TestData/Example.Extension/Example.Extension.csproj b/src/test/TestData/Example.Extension/Example.Extension.csproj deleted file mode 100644 index 1dde5044..00000000 --- a/src/test/TestData/Example.Extension/Example.Extension.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - netstandard2.0 - false - embedded - - - - - - - - - - - - diff --git a/src/test/TestData/Example.Extension/ExampleCompilerExtension.cs b/src/test/TestData/Example.Extension/ExampleCompilerExtension.cs deleted file mode 100644 index cd9e1fb9..00000000 --- a/src/test/TestData/Example.Extension/ExampleCompilerExtension.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using System; - using System.Collections.Generic; - using System.Xml.Linq; - using WixToolset.Data; - using WixToolset.Extensibility; - - internal class ExampleCompilerExtension : BaseCompilerExtension - { - public override XNamespace Namespace => "http://www.example.com/scheams/v1/wxs"; - - public override void ParseElement(Intermediate intermediate, IntermediateSection section, XElement parentElement, XElement element, IDictionary context) - { - var processed = false; - - switch (parentElement.Name.LocalName) - { - case "Component": - switch (element.Name.LocalName) - { - case "Example": - this.ParseExampleElement(intermediate, section, element); - processed = true; - break; - } - break; - } - - if (!processed) - { - base.ParseElement(intermediate, section, parentElement, element, context); - } - } - - private void ParseExampleElement(Intermediate intermediate, IntermediateSection section, XElement element) - { - var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); - Identifier id = null; - string value = null; - - foreach (var attrib in element.Attributes()) - { - if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) - { - switch (attrib.Name.LocalName) - { - case "Id": - id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib); - break; - - case "Value": - value = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); - break; - - default: - this.ParseHelper.UnexpectedAttribute(element, attrib); - break; - } - } - else - { - this.ParseAttribute(intermediate, section, element, attrib, null); - } - } - - if (null == id) - { - //this.Messaging(WixErrors.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id")); - } - - if (!this.Messaging.EncounteredError) - { - var tuple = this.ParseHelper.CreateRow(section, sourceLineNumbers, "Example", id); - tuple.Set(1, value); - } - } - } -} diff --git a/src/test/TestData/Example.Extension/ExampleExtensionData.cs b/src/test/TestData/Example.Extension/ExampleExtensionData.cs deleted file mode 100644 index 724f9eea..00000000 --- a/src/test/TestData/Example.Extension/ExampleExtensionData.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using WixToolset.Data; - using WixToolset.Extensibility; - - internal class ExampleExtensionData : IExtensionData - { - public string DefaultCulture => null; - - public Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions) - { - return Intermediate.Load(typeof(ExampleExtensionData).Assembly, "Example.Extension.Data.Example.wir", tupleDefinitions); - } - - public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) - { - switch (name) - { - case "Example": - tupleDefinition = ExampleTupleDefinitions.Example; - break; - - default: - tupleDefinition = null; - break; - } - - return tupleDefinition != null; - } - } -} \ No newline at end of file diff --git a/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs b/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs deleted file mode 100644 index a081b758..00000000 --- a/src/test/TestData/Example.Extension/ExampleExtensionFactory.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using System; - using WixToolset.Extensibility; - - public class ExampleExtensionFactory : IExtensionFactory - { - private ExamplePreprocessorExtensionAndCommandLine preprocessorExtension; - - public bool TryCreateExtension(Type extensionType, out object extension) - { - if (extensionType == typeof(IExtensionCommandLine) || extensionType == typeof(IPreprocessorExtension)) - { - if (preprocessorExtension == null) - { - preprocessorExtension = new ExamplePreprocessorExtensionAndCommandLine(); - } - - extension = preprocessorExtension; - } - else if (extensionType == typeof(ICompilerExtension)) - { - extension = new ExampleCompilerExtension(); - } - else if (extensionType == typeof(IExtensionData)) - { - extension = new ExampleExtensionData(); - } - else if (extensionType == typeof(IWindowsInstallerBackendExtension)) - { - extension = new ExampleWindowsInstallerBackendExtension(); - } - else - { - extension = null; - } - - return extension != null; - } - } -} diff --git a/src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs b/src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs deleted file mode 100644 index 6f86e20d..00000000 --- a/src/test/TestData/Example.Extension/ExamplePreprocessorExtensionAndCommandLine.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using System; - using System.Collections.Generic; - using WixToolset.Extensibility; - using WixToolset.Extensibility.Services; - - internal class ExamplePreprocessorExtensionAndCommandLine : BasePreprocessorExtension, IExtensionCommandLine - { - private string exampleValueFromCommandLine; - - public IEnumerable CommandLineSwitches => throw new NotImplementedException(); - - public ExamplePreprocessorExtensionAndCommandLine() - { - this.Prefixes = new[] { "ex" }; - } - - public void PreParse(ICommandLineContext context) - { - } - - public bool TryParseArgument(IParseCommandLine parseCommandLine, string arg) - { - if (parseCommandLine.IsSwitch(arg) && arg.Substring(1).Equals("example", StringComparison.OrdinalIgnoreCase)) - { - this.exampleValueFromCommandLine = parseCommandLine.GetNextArgumentOrError(arg); - return true; - } - - return false; - } - - public void PostParse() - { - } - - public override string GetVariableValue(string prefix, string name) - { - if (prefix == "ex" && "test".Equals(name, StringComparison.OrdinalIgnoreCase)) - { - return String.IsNullOrWhiteSpace(this.exampleValueFromCommandLine) ? "(null)" : this.exampleValueFromCommandLine; - } - - return null; - } - } -} \ No newline at end of file diff --git a/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs b/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs deleted file mode 100644 index dbd6491b..00000000 --- a/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using WixToolset.Data.WindowsInstaller; - - public static class ExampleTableDefinitions - { - public static readonly TableDefinition ExampleTable = new TableDefinition( - "Example", - new[] - { - new ColumnDefinition("Example", ColumnType.String, 72, true, false, ColumnCategory.Identifier), - new ColumnDefinition("Value", ColumnType.String, 0, false, false, ColumnCategory.Formatted), - } - ); - - public static readonly TableDefinition[] All = new[] { ExampleTable }; - } -} diff --git a/src/test/TestData/Example.Extension/ExampleTuple.cs b/src/test/TestData/Example.Extension/ExampleTuple.cs deleted file mode 100644 index 0fc0d82c..00000000 --- a/src/test/TestData/Example.Extension/ExampleTuple.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using WixToolset.Data; - - public enum ExampleTupleFields - { - Example, - Value, - } - - public class ExampleTuple : IntermediateTuple - { - public ExampleTuple() : base(ExampleTupleDefinitions.Example, null, null) - { - } - - public ExampleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ExampleTupleDefinitions.Example, sourceLineNumber, id) - { - } - - public IntermediateField this[ExampleTupleFields index] => this.Fields[(int)index]; - - public string Value - { - get => this.Fields[(int)ExampleTupleFields.Value]?.AsString(); - set => this.Set((int)ExampleTupleFields.Value, value); - } - } -} diff --git a/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs b/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs deleted file mode 100644 index 4775b827..00000000 --- a/src/test/TestData/Example.Extension/ExampleTupleDefinitions.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using WixToolset.Data; - - public static class ExampleTupleDefinitions - { - public const string ExampleName = "Example"; - - public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( - ExampleName, - new[] - { - new IntermediateFieldDefinition(nameof(ExampleTupleFields.Example), IntermediateFieldType.String), - new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), - }, - typeof(ExampleTuple)); - } -} diff --git a/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs b/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs deleted file mode 100644 index f00a5102..00000000 --- a/src/test/TestData/Example.Extension/ExampleWindowsInstallerBackendExtension.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace Example.Extension -{ - using WixToolset.Data; - using WixToolset.Data.WindowsInstaller; - using WixToolset.Extensibility; - - internal class ExampleWindowsInstallerBackendExtension : BaseWindowsInstallerBackendExtension - { - public override bool TryAddTupleToOutput(IntermediateTuple tuple, Output output) - { -#if ALTERNATIVE_TO_USING_HELPER - switch (tuple.Definition.Name) - { - case TupleDefinitions.ExampleName: - { - var table = output.EnsureTable(ExampleTableDefinitions.ExampleTable); - var row = table.CreateRow(tuple.SourceLineNumbers); - row[0] = tuple[0].AsString(); - row[1] = tuple[1].AsString(); - } - return true; - } - - return false; -#else - return this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, ExampleTableDefinitions.All); -#endif - } - } -} diff --git a/src/test/WixToolsetTest.BuildTasks/FakeBuildEngine.cs b/src/test/WixToolsetTest.BuildTasks/FakeBuildEngine.cs deleted file mode 100644 index 8fd69414..00000000 --- a/src/test/WixToolsetTest.BuildTasks/FakeBuildEngine.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.BuildTasks -{ - using System.Collections; - using System.Text; - using Microsoft.Build.Framework; - - internal class FakeBuildEngine : IBuildEngine - { - private StringBuilder output = new StringBuilder(); - - public int ColumnNumberOfTaskNode => 0; - - public bool ContinueOnError => false; - - public int LineNumberOfTaskNode => 0; - - public string ProjectFileOfTaskNode => "fake_wix.targets"; - - public string Output => this.output.ToString(); - - public bool BuildProjectFile(string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs) => throw new System.NotImplementedException(); - - public void LogCustomEvent(CustomBuildEventArgs e) => this.output.AppendLine(e.Message); - - public void LogErrorEvent(BuildErrorEventArgs e) => this.output.AppendLine(e.Message); - - public void LogMessageEvent(BuildMessageEventArgs e) => this.output.AppendLine(e.Message); - - public void LogWarningEvent(BuildWarningEventArgs e) => this.output.AppendLine(e.Message); - } -} diff --git a/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs b/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs deleted file mode 100644 index a27928d5..00000000 --- a/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.BuildTasks -{ - using System.IO; - using System.Linq; - using Microsoft.Build.Utilities; - using WixBuildTools.TestSupport; - using WixToolset.BuildTasks; - using WixToolset.Data; - using WixToolset.Data.Tuples; - using Xunit; - - public partial class MsbuildFixture - { - [Fact] - 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 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")), - }; - - 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(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\cab1.cab"))); - - var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - } -} diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj deleted file mode 100644 index e04ea43d..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj +++ /dev/null @@ -1,57 +0,0 @@ - - - - Debug - x86 - 0.9 - 7fb77005-c6e0-454f-8c2d-0a4a79c918ba - MsiPackage - Package - MsiPackage - MsiPackage - en-US,en;de-DE - - - - ..\..\..\..\..\..\build\Release\publish\net461\wix.targets - - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl deleted file mode 100644 index 23493ace..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - German DowngradeError - German FeatureTitle - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl deleted file mode 100644 index 38c12ac1..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - A newer version of [ProductName] is already installed. - MsiPackage - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs deleted file mode 100644 index d5a5a40d..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/PackageComponents.wxs b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/PackageComponents.wxs deleted file mode 100644 index e26c4509..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/PackageComponents.wxs +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/data/test.txt b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/data/test.txt deleted file mode 100644 index cd0db0e1..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MsiPackage/data/test.txt +++ /dev/null @@ -1 +0,0 @@ -This is test.txt. \ No newline at end of file diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MultiCulturalMsiPackage.sln b/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MultiCulturalMsiPackage.sln deleted file mode 100644 index 2c88704e..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/MultiCulturalMsiPackage/MultiCulturalMsiPackage.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.8 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MsiPackage", "MsiPackage\MsiPackage.wixproj", "{7FB77005-C6E0-454F-8C2D-0A4A79C918BA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x64.ActiveCfg = Debug|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x64.Build.0 = Debug|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x86.ActiveCfg = Debug|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x86.Build.0 = Debug|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x64.ActiveCfg = Release|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x64.Build.0 = Release|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x86.ActiveCfg = Release|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {585B0599-4EB5-4AB6-BC66-819CC78B63D5} - EndGlobalSection -EndGlobal diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj deleted file mode 100644 index 31c3ec9c..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj +++ /dev/null @@ -1,55 +0,0 @@ - - - - Debug - x86 - 0.9 - 7fb77005-c6e0-454f-8c2d-0a4a79c918ba - MsiPackage - Package - MsiPackage - MsiPackage - - - - ..\..\..\..\..\..\build\Release\publish\wix.targets - - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.en-us.wxl b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.en-us.wxl deleted file mode 100644 index 38c12ac1..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.en-us.wxl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - A newer version of [ProductName] is already installed. - MsiPackage - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.wxs b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.wxs deleted file mode 100644 index d5a5a40d..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/Package.wxs +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/PackageComponents.wxs b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/PackageComponents.wxs deleted file mode 100644 index e26c4509..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/PackageComponents.wxs +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/data/test.txt b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/data/test.txt deleted file mode 100644 index cd0db0e1..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/MsiPackage/data/test.txt +++ /dev/null @@ -1 +0,0 @@ -This is test.txt. \ No newline at end of file diff --git a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/SimpleMsiPackage.sln b/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/SimpleMsiPackage.sln deleted file mode 100644 index 2c88704e..00000000 --- a/src/test/WixToolsetTest.BuildTasks/TestData/SimpleMsiPackage/SimpleMsiPackage.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.8 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MsiPackage", "MsiPackage\MsiPackage.wixproj", "{7FB77005-C6E0-454F-8C2D-0A4A79C918BA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x64.ActiveCfg = Debug|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x64.Build.0 = Debug|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x86.ActiveCfg = Debug|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Debug|x86.Build.0 = Debug|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x64.ActiveCfg = Release|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x64.Build.0 = Release|x64 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x86.ActiveCfg = Release|x86 - {7FB77005-C6E0-454F-8C2D-0A4A79C918BA}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {585B0599-4EB5-4AB6-BC66-819CC78B63D5} - EndGlobalSection -EndGlobal diff --git a/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.csproj b/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.csproj deleted file mode 100644 index 5ec5b7fd..00000000 --- a/src/test/WixToolsetTest.BuildTasks/WixToolsetTest.BuildTasks.csproj +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - net461 - false - embedded - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs index 5de61368..cc631c22 100644 --- a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs @@ -8,6 +8,7 @@ namespace WixToolsetTest.CoreIntegration using Example.Extension; using WixBuildTools.TestSupport; using WixToolset.Core; + using WixToolset.Core.TestPackage; using WixToolset.Data; using WixToolset.Data.Tuples; using Xunit; @@ -37,8 +38,7 @@ namespace WixToolsetTest.CoreIntegration { var intermediateFolder = fs.GetFolder(); - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] + var result = WixRunner.Execute(new[] { "build", Path.Combine(folder, "Package.wxs"), @@ -48,7 +48,7 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"bin\extest.msi") - }); + }, out var messages); Assert.Equal(0, result); @@ -80,8 +80,7 @@ namespace WixToolsetTest.CoreIntegration { var intermediateFolder = fs.GetFolder(); - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] + var result = WixRunner.Execute(new[] { "build", Path.Combine(folder, "Package.wxs"), @@ -92,7 +91,7 @@ namespace WixToolsetTest.CoreIntegration "-intermediateFolder", intermediateFolder, "-example", "test", "-o", Path.Combine(intermediateFolder, @"bin\extest.msi") - }); + }, out var messages); Assert.Equal(0, result); @@ -107,8 +106,7 @@ namespace WixToolsetTest.CoreIntegration private static void Build(string[] args) { - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, args); + var result = WixRunner.Execute(args, out var messages); Assert.Equal(0, result); } } diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs new file mode 100644 index 00000000..7a10f71e --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs @@ -0,0 +1,442 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolsetTest.CoreIntegration +{ + using System.IO; + using System.Linq; + using WixBuildTools.TestSupport; + using WixToolset.Core.TestPackage; + using WixToolset.Data; + using WixToolset.Data.Tuples; + using WixToolset.Data.WindowsInstaller; + using Xunit; + + public class MsiFixture + { + [Fact] + public void CanBuildSingleFile() + { + var folder = TestData.Get(@"TestData\SingleFile"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }, out var messages); + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + } + } + + [Fact] + public void CanBuildSingleFileCompressed() + { + var folder = TestData.Get(@"TestData\SingleFileCompressed"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + } + } + + [Fact] + public void CanBuildSingleFileCompressedWithMediaTemplate() + { + var folder = TestData.Get(@"TestData\SingleFileCompressed"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-d", "MediaTemplateCompressionLevel", + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + } + } + + [Fact] + public void CanBuildSingleFileCompressedWithMediaTemplateWithLowCompression() + { + var folder = TestData.Get(@"TestData\SingleFileCompressed"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-d", "MediaTemplateCompressionLevel=low", + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\lowcab1.cab"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + } + } + + [Fact] + public void CanBuildMultipleFilesCompressed() + { + var folder = TestData.Get(@"TestData\MultiFileCompressed"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-d", "MediaTemplateCompressionLevel", + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + } + } + + [Fact] + public void CanLoadPdbGeneratedByBuild() + { + var folder = TestData.Get(@"TestData\MultiFileCompressed"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-d", "MediaTemplateCompressionLevel", + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); + + var pdbPath = Path.Combine(intermediateFolder, @"bin\test.wixpdb"); + Assert.True(File.Exists(pdbPath)); + + var pdb = Pdb.Load(pdbPath, suppressVersionCheck: true); + Assert.NotNull(pdb); + Assert.NotNull(pdb.Output); + } + } + + [Fact] + public void CanBuildSimpleModule() + { + var folder = TestData.Get(@"TestData\SimpleModule"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Module.wxs"), + "-loc", Path.Combine(folder, "Module.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msm") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msm"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + } + } + + [Fact] + public void CanBuildManualUpgrade() + { + var folder = TestData.Get(@"TestData\ManualUpgrade"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt"))); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + } + } + + [Fact] + public void CanBuildWixipl() + { + var folder = TestData.Get(@"TestData\SingleFile"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(baseFolder, @"bin\test.wixipl") + }, out var messages); + + Assert.Equal(0, result); + + var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); + + Assert.Equal(new[]{ + "test.wixipl" + }, builtFiles.Select(Path.GetFileName).ToArray()); + } + } + + [Fact] + public void CanBuildWixlib() + { + var folder = TestData.Get(@"TestData\SingleFile"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(baseFolder, @"bin\test.wixlib") + }, out var messages); + + Assert.Equal(0, result); + + var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); + + Assert.Equal(new[]{ + "test.wixlib" + }, builtFiles.Select(Path.GetFileName).ToArray()); + } + } + + [Fact] + public void CanBuildWithIncludePath() + { + var folder = TestData.Get(@"TestData\IncludePath"); + var bindpath = Path.Combine(folder, "data"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", bindpath, + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(baseFolder, @"bin\test.msi"), + "-i", bindpath, + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + } + } + + [Fact(Skip = "Assembly information not getting gathered yet.")] + public void CanBuildWithAssembly() + { + var folder = TestData.Get(@"TestData\Assembly"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\AssemblyMsiPackage\candle.exe"))); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); + var section = intermediate.Sections.Single(); + + var wixFile = section.Tuples.OfType().Single(); + Assert.Equal(Path.Combine(folder, @"data\candle.exe"), wixFile[WixFileTupleFields.Source].AsPath().Path); + Assert.Equal(@"candle.exe", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); + + var msiAssemblyNameTuples = section.Tuples.OfType(); + Assert.NotEmpty(msiAssemblyNameTuples); + } + } + + [Fact(Skip = "Not implemented yet.")] + public void CanBuildInstanceTransform() + { + var folder = TestData.Get(@"TestData\InstanceTransform"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + Path.Combine(folder, "PackageComponents.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msi") + }, out var messages); + + Assert.Equal(0, result); + + var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false); + Assert.NotEmpty(pdb.Output.SubStorages); + } + } + } +} diff --git a/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs deleted file mode 100644 index 5a3071c7..00000000 --- a/src/test/WixToolsetTest.CoreIntegration/ProgramFixture.cs +++ /dev/null @@ -1,456 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.CoreIntegration -{ - using System.IO; - using System.Linq; - using WixBuildTools.TestSupport; - using WixToolset.Core; - using WixToolset.Data; - using WixToolset.Data.Tuples; - using WixToolset.Data.WindowsInstaller; - using Xunit; - - public class ProgramFixture - { - [Fact] - public void CanBuildSingleFile() - { - var folder = TestData.Get(@"TestData\SingleFile"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); - - var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - - [Fact] - public void CanBuildSingleFileCompressed() - { - var folder = TestData.Get(@"TestData\SingleFileCompressed"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - - [Fact] - public void CanBuildSingleFileCompressedWithMediaTemplate() - { - var folder = TestData.Get(@"TestData\SingleFileCompressed"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-d", "MediaTemplateCompressionLevel", - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - } - } - - [Fact] - public void CanBuildSingleFileCompressedWithMediaTemplateWithLowCompression() - { - var folder = TestData.Get(@"TestData\SingleFileCompressed"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-d", "MediaTemplateCompressionLevel=low", - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\lowcab1.cab"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - } - } - - [Fact] - public void CanBuildMultipleFilesCompressed() - { - var folder = TestData.Get(@"TestData\MultiFileCompressed"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-d", "MediaTemplateCompressionLevel", - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - } - } - - [Fact] - public void CanLoadPdbGeneratedByBuild() - { - var folder = TestData.Get(@"TestData\MultiFileCompressed"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-d", "MediaTemplateCompressionLevel", - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); - - var pdbPath = Path.Combine(intermediateFolder, @"bin\test.wixpdb"); - Assert.True(File.Exists(pdbPath)); - - var pdb = Pdb.Load(pdbPath, suppressVersionCheck: true); - Assert.NotNull(pdb); - Assert.NotNull(pdb.Output); - } - } - - [Fact] - public void CanBuildSimpleModule() - { - var folder = TestData.Get(@"TestData\SimpleModule"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Module.wxs"), - "-loc", Path.Combine(folder, "Module.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msm") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msm"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - - [Fact] - public void CanBuildManualUpgrade() - { - var folder = TestData.Get(@"TestData\ManualUpgrade"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt"))); - - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - - [Fact] - public void CanBuildWixipl() - { - var folder = TestData.Get(@"TestData\SingleFile"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.wixipl") - }); - - Assert.Equal(0, result); - - var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); - - Assert.Equal(new[]{ - "test.wixipl" - }, builtFiles.Select(Path.GetFileName).ToArray()); - } - } - - [Fact] - public void CanBuildWixlib() - { - var folder = TestData.Get(@"TestData\SingleFile"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.wixlib") - }); - - Assert.Equal(0, result); - - var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); - - Assert.Equal(new[]{ - "test.wixlib" - }, builtFiles.Select(Path.GetFileName).ToArray()); - } - } - - [Fact] - public void CanBuildWithIncludePath() - { - var folder = TestData.Get(@"TestData\IncludePath"); - var bindpath = Path.Combine(folder, "data"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", bindpath, - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.msi"), - "-i", bindpath, - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); - - var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - } - } - - [Fact(Skip = "Assembly information not getting gathered yet.")] - public void CanBuildWithAssembly() - { - var folder = TestData.Get(@"TestData\Assembly"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\AssemblyMsiPackage\candle.exe"))); - - var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); - var section = intermediate.Sections.Single(); - - var wixFile = section.Tuples.OfType().Single(); - Assert.Equal(Path.Combine(folder, @"data\candle.exe"), wixFile[WixFileTupleFields.Source].AsPath().Path); - Assert.Equal(@"candle.exe", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); - - var msiAssemblyNameTuples = section.Tuples.OfType(); - Assert.NotEmpty(msiAssemblyNameTuples); - } - } - - [Fact(Skip = "Not implemented yet.")] - public void CanBuildInstanceTransform() - { - var folder = TestData.Get(@"TestData\InstanceTransform"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var program = new Program(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - Path.Combine(folder, "PackageComponents.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false); - Assert.NotEmpty(pdb.Output.SubStorages); - } - } - } -} diff --git a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj index 5f1fb3d3..71e7dd68 100644 --- a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj +++ b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj @@ -52,8 +52,11 @@ - - + + + + + diff --git a/src/test/WixToolsetTest.LightIntegration/LightFixture.cs b/src/test/WixToolsetTest.LightIntegration/LightFixture.cs deleted file mode 100644 index 21c10be9..00000000 --- a/src/test/WixToolsetTest.LightIntegration/LightFixture.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.LightIntegration -{ - using System.IO; - using System.Linq; - using WixToolset.Core; - using WixToolset.Tools; - using WixToolsetTest.LightIntegration.Utility; - using Xunit; - - public class LightFixture - { - [Fact] - public void CanBuildFromWixout() - { - var folder = TestData.Get(@"TestData\Wixout"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var program = new Light(); - var result = program.Run(new WixToolsetServiceProvider(), null, new[] - { - Path.Combine(folder, "test.wixout"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-b", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.msi") - }); - - Assert.Equal(0, result); - - var binFolder = Path.Combine(baseFolder, @"bin\"); - var builtFiles = Directory.GetFiles(binFolder, "*", SearchOption.AllDirectories); - - Assert.Equal(new[]{ - "MsiPackage\\test.txt", - "test.msi", - "test.wir", - "test.wixpdb", - }, builtFiles.Select(f => f.Substring(binFolder.Length)).OrderBy(s => s).ToArray()); - } - } - } -} diff --git a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/Package.en-us.wxl b/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/Package.en-us.wxl deleted file mode 100644 index 38c12ac1..00000000 --- a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/Package.en-us.wxl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - A newer version of [ProductName] is already installed. - MsiPackage - - diff --git a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/data/test.txt b/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/data/test.txt deleted file mode 100644 index cd0db0e1..00000000 --- a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/data/test.txt +++ /dev/null @@ -1 +0,0 @@ -This is test.txt. \ No newline at end of file diff --git a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/test.wixout b/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/test.wixout deleted file mode 100644 index 009b625f..00000000 Binary files a/src/test/WixToolsetTest.LightIntegration/TestData/Wixout/test.wixout and /dev/null differ diff --git a/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs b/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs deleted file mode 100644 index 3b8c0e19..00000000 --- a/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.LightIntegration.Utility -{ - using System; - using System.Collections.Generic; - using System.IO; - - public class DisposableFileSystem : IDisposable - { - protected bool Disposed { get; private set; } - - private List CleanupPaths { get; } = new List(); - - protected string GetFile(bool create = false) - { - var path = Path.GetTempFileName(); - - if (!create) - { - File.Delete(path); - } - - this.CleanupPaths.Add(path); - - return path; - } - - public string GetFolder(bool create = false) - { - var path = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); - - if (create) - { - Directory.CreateDirectory(path); - } - - this.CleanupPaths.Add(path); - - return path; - } - - - #region // IDisposable - - public void Dispose() - { - this.Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (this.Disposed) - { - return; - } - - if (disposing) - { - foreach (var path in this.CleanupPaths) - { - try - { - if (File.Exists(path)) - { - File.Delete(path); - } - else if (Directory.Exists(path)) - { - Directory.Delete(path, true); - } - } - catch - { - // Best effort delete, so ignore any failures. - } - } - } - - this.Disposed = true; - } - - #endregion - } -} diff --git a/src/test/WixToolsetTest.LightIntegration/Utility/TestData.cs b/src/test/WixToolsetTest.LightIntegration/Utility/TestData.cs deleted file mode 100644 index c13e9d6d..00000000 --- a/src/test/WixToolsetTest.LightIntegration/Utility/TestData.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -namespace WixToolsetTest.LightIntegration.Utility -{ - using System; - using System.IO; - - public class TestData - { - public static string LocalPath => Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath); - - public static string Get(params string[] paths) - { - return Path.Combine(LocalPath, Path.Combine(paths)); - } - } -} diff --git a/src/test/WixToolsetTest.LightIntegration/WixToolsetTest.LightIntegration.csproj b/src/test/WixToolsetTest.LightIntegration/WixToolsetTest.LightIntegration.csproj deleted file mode 100644 index 59068682..00000000 --- a/src/test/WixToolsetTest.LightIntegration/WixToolsetTest.LightIntegration.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - net461 - false - embedded - - - - - - PreserveNewest - - - PreserveNewest - - - - - - - - - - - - - -- cgit v1.2.3-55-g6feb