diff options
author | Rob Mensching <rob@firegiant.com> | 2022-07-12 11:21:35 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-07-12 12:04:41 -0700 |
commit | 486459129eed61cb0f4d9ddef51632afd5d9e319 (patch) | |
tree | d960e4d3c31085b1222f59e3e6d54afef678fa16 | |
parent | d4a96d92b78f7c0085c400f30bd39e6218c057ef (diff) | |
download | wix-486459129eed61cb0f4d9ddef51632afd5d9e319.tar.gz wix-486459129eed61cb0f4d9ddef51632afd5d9e319.tar.bz2 wix-486459129eed61cb0f4d9ddef51632afd5d9e319.zip |
Add tests to validate Variable name validation
Closes #6819
-rw-r--r-- | src/ext/Util/test/WixToolsetTest.Util/TestData/BundleWithSearches/BundleUsingBuiltinVariableNames.wxs | 57 | ||||
-rw-r--r-- | src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs | 39 |
2 files changed, 96 insertions, 0 deletions
diff --git a/src/ext/Util/test/WixToolsetTest.Util/TestData/BundleWithSearches/BundleUsingBuiltinVariableNames.wxs b/src/ext/Util/test/WixToolsetTest.Util/TestData/BundleWithSearches/BundleUsingBuiltinVariableNames.wxs new file mode 100644 index 00000000..e0dfc1b8 --- /dev/null +++ b/src/ext/Util/test/WixToolsetTest.Util/TestData/BundleWithSearches/BundleUsingBuiltinVariableNames.wxs | |||
@@ -0,0 +1,57 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
2 | <Bundle Name="!(loc.BundleName)" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> | ||
3 | <BootstrapperApplication> | ||
4 | <BootstrapperApplicationDll SourceFile="fakeba.dll" /> | ||
5 | </BootstrapperApplication> | ||
6 | |||
7 | <util:RegistrySearchRef Id="RegistrySearchId" /> | ||
8 | <util:RegistrySearchRef Id="RegistrySearchId64" /> | ||
9 | <util:ProductSearchRef Id="ProductSearchId" /> | ||
10 | <util:DirectorySearchRef Id="DirectorySearchId" /> | ||
11 | <util:FileSearchRef Id="FileSearchId" /> | ||
12 | <util:WindowsFeatureSearchRef Id="DetectSHA2SupportId" /> | ||
13 | |||
14 | <Chain> | ||
15 | <MsiPackage SourceFile="test.msi"> | ||
16 | <MsiProperty Name="TEST" Value="1" /> | ||
17 | </MsiPackage> | ||
18 | </Chain> | ||
19 | </Bundle> | ||
20 | |||
21 | <Fragment> | ||
22 | <util:RegistrySearch | ||
23 | Id="RegistrySearchId" | ||
24 | Variable="VersionNT64" | ||
25 | Root="HKLM" | ||
26 | Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | ||
27 | Value="Release" | ||
28 | Result="value" /> | ||
29 | </Fragment> | ||
30 | |||
31 | <Fragment> | ||
32 | <util:RegistrySearch | ||
33 | Id="RegistrySearchId64" | ||
34 | Variable="WixBundleAction" | ||
35 | Root="HKLM" | ||
36 | Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | ||
37 | Value="Release" | ||
38 | Result="value" | ||
39 | Bitness="always64" /> | ||
40 | </Fragment> | ||
41 | |||
42 | <Fragment> | ||
43 | <util:ProductSearch Id="ProductSearchId" Variable="Date" UpgradeCode="738D02BF-E231-4370-8209-E9FD4E1BE2A1" Condition="1 & 2 < 3" Result="version" /> | ||
44 | </Fragment> | ||
45 | |||
46 | <Fragment> | ||
47 | <util:DirectorySearch Id="DirectorySearchId" Variable="InstallerName" Path="%windir%\System32" Result="exists" DisableFileRedirection="yes" /> | ||
48 | </Fragment> | ||
49 | |||
50 | <Fragment> | ||
51 | <util:FileSearch Id="FileSearchId" Variable="NativeMachine" Path="%windir%\System32\mscoree.dll" Result="exists" /> | ||
52 | </Fragment> | ||
53 | |||
54 | <Fragment> | ||
55 | <util:WindowsFeatureSearch Id="DetectSHA2SupportId" Variable="NTProductType" Feature="sha2CodeSigning" /> | ||
56 | </Fragment> | ||
57 | </Wix> | ||
diff --git a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs index c7b7efb1..9cb94b61 100644 --- a/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs +++ b/src/ext/Util/test/WixToolsetTest.Util/UtilExtensionFixture.cs | |||
@@ -296,6 +296,45 @@ namespace WixToolsetTest.Util | |||
296 | } | 296 | } |
297 | } | 297 | } |
298 | 298 | ||
299 | [Fact] | ||
300 | public void CannotBuildBundleWithSearchesUsingBuiltinVariableNames() | ||
301 | { | ||
302 | var folder = TestData.Get("TestData", "BundleWithSearches"); | ||
303 | var rootFolder = TestData.Get(); | ||
304 | var wixext = Path.Combine(rootFolder, "WixToolset.Util.wixext.dll"); | ||
305 | |||
306 | using (var fs = new DisposableFileSystem()) | ||
307 | { | ||
308 | var baseFolder = fs.GetFolder(); | ||
309 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
310 | var bundlePath = Path.Combine(baseFolder, "bin", "test.exe"); | ||
311 | |||
312 | var result = WixRunner.Execute(new[] | ||
313 | { | ||
314 | "build", | ||
315 | Path.Combine(folder, "BundleUsingBuiltinVariableNames.wxs"), | ||
316 | "-ext", wixext, | ||
317 | "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), | ||
318 | "-bindpath", Path.Combine(folder, "data"), | ||
319 | "-intermediateFolder", intermediateFolder, | ||
320 | "-o", bundlePath | ||
321 | }); | ||
322 | |||
323 | var messages = result.Messages.Select(m => m.ToString()).ToList(); | ||
324 | messages.Sort(); | ||
325 | |||
326 | WixAssert.CompareLineByLine(new[] | ||
327 | { | ||
328 | "The DirectorySearch/@Variable attribute's value, 'InstallerName', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
329 | "The FileSearch/@Variable attribute's value, 'NativeMachine', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
330 | "The ProductSearch/@Variable attribute's value, 'Date', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
331 | "The RegistrySearch/@Variable attribute's value, 'VersionNT64', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
332 | "The RegistrySearch/@Variable attribute's value, 'WixBundleAction', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
333 | "The WindowsFeatureSearch/@Variable attribute's value, 'NTProductType', is one of the illegal options: 'AdminToolsFolder', 'AppDataFolder', 'CommonAppDataFolder', 'CommonFiles64Folder', 'CommonFilesFolder', 'CompatibilityMode', 'Date', 'DesktopFolder', 'FavoritesFolder', 'FontsFolder', 'InstallerName', 'InstallerVersion', 'LocalAppDataFolder', 'LogonUser', 'MyPicturesFolder', 'NativeMachine', 'NTProductType', 'NTSuiteBackOffice', 'NTSuiteDataCenter', 'NTSuiteEnterprise', 'NTSuitePersonal', 'NTSuiteSmallBusiness', 'NTSuiteSmallBusinessRestricted', 'NTSuiteWebServer', 'PersonalFolder', 'Privileged', 'ProgramFiles64Folder', 'ProgramFiles6432Folder', 'ProgramFilesFolder', 'ProgramMenuFolder', 'RebootPending', 'SendToFolder', 'ServicePackLevel', 'StartMenuFolder', 'StartupFolder', 'System64Folder', 'SystemFolder', 'TempFolder', 'TemplateFolder', 'TerminalServer', 'UserLanguageID', 'UserUILanguageID', 'VersionMsi', 'VersionNT', 'VersionNT64', 'WindowsFolder', 'WindowsVolume', 'WixBundleAction', 'WixBundleCommandLineAction', 'WixBundleForcedRestartPackage', 'WixBundleElevated', 'WixBundleInstalled', 'WixBundleProviderKey', 'WixBundleTag', or 'WixBundleVersion'.", | ||
334 | }, messages.ToArray()); | ||
335 | } | ||
336 | } | ||
337 | |||
299 | private static void Build(string[] args) | 338 | private static void Build(string[] args) |
300 | { | 339 | { |
301 | var result = WixRunner.Execute(args); | 340 | var result = WixRunner.Execute(args); |