aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs169
1 files changed, 0 insertions, 169 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs b/src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs
deleted file mode 100644
index 636b86a6..00000000
--- a/src/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs
+++ /dev/null
@@ -1,169 +0,0 @@
1// 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.
2
3namespace WixToolsetTest.CoreIntegration
4{
5 using System.IO;
6 using System.Linq;
7 using WixBuildTools.TestSupport;
8 using WixToolset.Core.TestPackage;
9 using Xunit;
10
11 public class CustomActionFixture
12 {
13 [Fact]
14 public void CanDetectCustomActionCycle()
15 {
16 var folder = TestData.Get(@"TestData");
17
18 using (var fs = new DisposableFileSystem())
19 {
20 var baseFolder = fs.GetFolder();
21 var intermediateFolder = Path.Combine(baseFolder, "obj");
22 var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
23
24 var result = WixRunner.Execute(new[]
25 {
26 "build",
27 Path.Combine(folder, "CustomAction", "CustomActionCycle.wxs"),
28 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
29 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
30 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
31 "-intermediateFolder", intermediateFolder,
32 "-o", msiPath
33 });
34
35 Assert.Equal(176, result.ExitCode);
36 Assert.Equal("The InstallExecuteSequence table contains an action 'Action1' that is scheduled to come before or after action 'Action3', which is also scheduled to come before or after action 'Action1'. Please remove this circular dependency by changing the Before or After attribute for one of the actions.", result.Messages[0].ToString());
37 }
38 }
39
40 [Fact]
41 public void CanDetectCustomActionCycleWithTail()
42 {
43 var folder = TestData.Get(@"TestData");
44
45 using (var fs = new DisposableFileSystem())
46 {
47 var baseFolder = fs.GetFolder();
48 var intermediateFolder = Path.Combine(baseFolder, "obj");
49 var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
50
51 var result = WixRunner.Execute(new[]
52 {
53 "build",
54 Path.Combine(folder, "CustomAction", "CustomActionCycleWithTail.wxs"),
55 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
56 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
57 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
58 "-intermediateFolder", intermediateFolder,
59 "-o", msiPath
60 });
61
62 Assert.Equal(176, result.ExitCode);
63 Assert.Equal("The InstallExecuteSequence table contains an action 'Action2' that is scheduled to come before or after action 'Action4', which is also scheduled to come before or after action 'Action2'. Please remove this circular dependency by changing the Before or After attribute for one of the actions.", result.Messages[0].ToString());
64 }
65 }
66
67 [Fact]
68 public void PopulatesCustomActionTable()
69 {
70 var folder = TestData.Get(@"TestData");
71
72 using (var fs = new DisposableFileSystem())
73 {
74 var baseFolder = fs.GetFolder();
75 var intermediateFolder = Path.Combine(baseFolder, "obj");
76 var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
77
78 var result = WixRunner.Execute(new[]
79 {
80 "build",
81 Path.Combine(folder, "CustomAction", "UnscheduledCustomAction.wxs"),
82 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
83 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
84 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
85 "-intermediateFolder", intermediateFolder,
86 "-o", msiPath
87 });
88
89 result.AssertSuccess();
90
91 Assert.True(File.Exists(msiPath));
92 var results = Query.QueryDatabase(msiPath, new[] {
93 "ActionText",
94 "AdminExecuteSequence",
95 "AdminUISequence",
96 "AdvtExecuteSequence",
97 "Binary",
98 "CustomAction",
99 "InstallExecuteSequence",
100 "InstallUISequence",
101 "Property",
102 }).Where(x => !x.StartsWith("Property:") || x.StartsWith("Property:MsiHiddenProperties\t")).ToArray();
103 Assert.Equal(new[]
104 {
105 "ActionText:CustomAction2\tProgess2Text\t",
106 "AdminExecuteSequence:CostFinalize\t\t1000",
107 "AdminExecuteSequence:CostInitialize\t\t800",
108 "AdminExecuteSequence:CustomAction2\t\t801",
109 "AdminExecuteSequence:FileCost\t\t900",
110 "AdminExecuteSequence:InstallAdminPackage\t\t3900",
111 "AdminExecuteSequence:InstallFiles\t\t4000",
112 "AdminExecuteSequence:InstallFinalize\t\t6600",
113 "AdminExecuteSequence:InstallInitialize\t\t1500",
114 "AdminExecuteSequence:InstallValidate\t\t1400",
115 "AdminUISequence:CostFinalize\t\t1000",
116 "AdminUISequence:CostInitialize\t\t800",
117 "AdminUISequence:CustomAction2\t\t801",
118 "AdminUISequence:ExecuteAction\t\t1300",
119 "AdminUISequence:FileCost\t\t900",
120 "AdvtExecuteSequence:CostFinalize\t\t1000",
121 "AdvtExecuteSequence:CostInitialize\t\t800",
122 "AdvtExecuteSequence:CustomAction2\t\t801",
123 "AdvtExecuteSequence:InstallFinalize\t\t6600",
124 "AdvtExecuteSequence:InstallInitialize\t\t1500",
125 "AdvtExecuteSequence:InstallValidate\t\t1400",
126 "AdvtExecuteSequence:PublishFeatures\t\t6300",
127 "AdvtExecuteSequence:PublishProduct\t\t6400",
128 "Binary:Binary1\t[Binary data]",
129 "CustomAction:CustomAction1\t1\tBinary1\tInvalidEntryPoint\t",
130 "CustomAction:CustomAction2\t51\tTestAdvtExecuteSequenceProperty\t1\t",
131 "CustomAction:CustomActionWithHiddenTarget\t9217\tBinary1\tInvalidEntryPoint\t",
132 "CustomAction:DiscardOptimismAllBeingsWhoProceed\t19\t\tAbandon hope all ye who enter here.\t",
133 "InstallExecuteSequence:CostFinalize\t\t1000",
134 "InstallExecuteSequence:CostInitialize\t\t800",
135 "InstallExecuteSequence:CreateFolders\t\t3700",
136 "InstallExecuteSequence:CustomAction2\t\t801",
137 "InstallExecuteSequence:FileCost\t\t900",
138 "InstallExecuteSequence:FindRelatedProducts\t\t25",
139 "InstallExecuteSequence:InstallFiles\t\t4000",
140 "InstallExecuteSequence:InstallFinalize\t\t6600",
141 "InstallExecuteSequence:InstallInitialize\t\t1500",
142 "InstallExecuteSequence:InstallValidate\t\t1400",
143 "InstallExecuteSequence:LaunchConditions\t\t100",
144 "InstallExecuteSequence:MigrateFeatureStates\t\t1200",
145 "InstallExecuteSequence:ProcessComponents\t\t1600",
146 "InstallExecuteSequence:PublishFeatures\t\t6300",
147 "InstallExecuteSequence:PublishProduct\t\t6400",
148 "InstallExecuteSequence:RegisterProduct\t\t6100",
149 "InstallExecuteSequence:RegisterUser\t\t6000",
150 "InstallExecuteSequence:RemoveExistingProducts\t\t1401",
151 "InstallExecuteSequence:RemoveFiles\t\t3500",
152 "InstallExecuteSequence:RemoveFolders\t\t3600",
153 "InstallExecuteSequence:UnpublishFeatures\t\t1800",
154 "InstallExecuteSequence:ValidateProductID\t\t700",
155 "InstallUISequence:CostFinalize\t\t1000",
156 "InstallUISequence:CostInitialize\t\t800",
157 "InstallUISequence:CustomAction2\t\t801",
158 "InstallUISequence:ExecuteAction\t\t1300",
159 "InstallUISequence:FileCost\t\t900",
160 "InstallUISequence:FindRelatedProducts\t\t25",
161 "InstallUISequence:LaunchConditions\t\t100",
162 "InstallUISequence:MigrateFeatureStates\t\t1200",
163 "InstallUISequence:ValidateProductID\t\t700",
164 "Property:MsiHiddenProperties\tCustomActionWithHiddenTarget",
165 }, results);
166 }
167 }
168 }
169}