@joebigelow / wix / commits / 2480d0ad

Add test for wixcop handling util:PermissionEx/@Inheritable.

Sean Hall committed May 23, 2020 at 22:02 UTC 2480d0ad4bf4f0dd841697d6d607bb35a0fd8161
4 files changed +103 -2
src/test/WixToolsetTest.WixCop/TestData/PermissionEx/v3.wxs new
+27
@@ -0,0 +1,27 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
3 + <Fragment>
4 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
5 + <Component>
6 + <File Source="example.txt">
7 + <util:PermissionEx User="Everyone" GenericAll="yes" />
8 + </File>
9 + <CreateFolder>
10 + <util:PermissionEx User="Everyone" GenericAll="yes" />
11 + </CreateFolder>
12 + <ServiceInstall Name="testsvc" Type="ownProcess" Start="disabled" ErrorControl="normal">
13 + <util:PermissionEx User="Everyone" GenericAll="yes" />
14 + </ServiceInstall>
15 + <Registry Action="createKey" Root="HKLM" Key="TestKey">
16 + <util:PermissionEx User="Everyone" GenericAll="yes" />
17 + </Registry>
18 + <RegistryKey Id="ExampleRegistryKey" ForceCreateOnInstall="yes" Root="HKLM" Key="TestRegistryKey">
19 + <util:PermissionEx User="Everyone" GenericAll="yes" />
20 + </RegistryKey>
21 + <RegistryValue Root="HKLM" Key="TestRegistryValueKey" Value="abc">
22 + <util:PermissionEx User="Everyone" GenericAll="yes" />
23 + </RegistryValue>
24 + </Component>
25 + </ComponentGroup>
26 + </Fragment>
27 +</Wix>
src/test/WixToolsetTest.WixCop/TestData/PermissionEx/v4_expected.wxs new
+27
@@ -0,0 +1,27 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
3 + <Fragment>
4 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
5 + <Component>
6 + <File Id="example.txt" Source="example.txt">
7 + <util:PermissionEx User="Everyone" GenericAll="yes" Inheritable="no" />
8 + </File>
9 + <CreateFolder>
10 + <util:PermissionEx User="Everyone" GenericAll="yes" />
11 + </CreateFolder>
12 + <ServiceInstall Name="testsvc" Type="ownProcess" Start="disabled" ErrorControl="normal">
13 + <util:PermissionEx User="Everyone" GenericAll="yes" Inheritable="no" />
14 + </ServiceInstall>
15 + <Registry Action="createKey" Root="HKLM" Key="TestKey">
16 + <util:PermissionEx User="Everyone" GenericAll="yes" Inheritable="no" />
17 + </Registry>
18 + <RegistryKey Id="ExampleRegistryKey" ForceCreateOnInstall="yes" Root="HKLM" Key="TestRegistryKey">
19 + <util:PermissionEx User="Everyone" GenericAll="yes" Inheritable="no" />
20 + </RegistryKey>
21 + <RegistryValue Root="HKLM" Key="TestRegistryValueKey" Value="abc">
22 + <util:PermissionEx User="Everyone" GenericAll="yes" Inheritable="no" />
23 + </RegistryValue>
24 + </Component>
25 + </ComponentGroup>
26 + </Fragment>
27 +</Wix>
src/test/WixToolsetTest.WixCop/WixCopFixture.cs
+45
@@ -9,6 +9,51 @@ namespace WixToolsetTest.WixCop
9
10 public class WixCopFixture
11 {
12 + [Fact]
13 + public void CanConvertPermissionExFile()
14 + {
15 + const string beforeFileName = "v3.wxs";
16 + const string afterFileName = "v4_expected.wxs";
17 + var folder = TestData.Get(@"TestData\PermissionEx");
18 +
19 + using (var fs = new DisposableFileSystem())
20 + {
21 + var baseFolder = fs.GetFolder(true);
22 + var targetFile = Path.Combine(baseFolder, beforeFileName);
23 + File.Copy(Path.Combine(folder, beforeFileName), Path.Combine(baseFolder, beforeFileName));
24 +
25 + var runner = new WixCopRunner
26 + {
27 + FixErrors = true,
28 + SearchPatterns =
29 + {
30 + targetFile,
31 + },
32 + };
33 +
34 + var result = runner.Execute();
35 +
36 + Assert.Equal(2, result.ExitCode);
37 +
38 + var expected = File.ReadAllText(Path.Combine(folder, afterFileName)).Replace("\r\n", "\n");
39 + var actual = File.ReadAllText(targetFile).Replace("\r\n", "\n");
40 + Assert.Equal(expected, actual);
41 +
42 + var runner2 = new WixCopRunner
43 + {
44 + FixErrors = true,
45 + SearchPatterns =
46 + {
47 + targetFile,
48 + },
49 + };
50 +
51 + var result2 = runner2.Execute();
52 +
53 + Assert.Equal(0, result2.ExitCode);
54 + }
55 + }
56 +
57 [Fact]
58 public void CanConvertSingleFile()
59 {
src/test/WixToolsetTest.WixCop/WixToolsetTest.WixCop.csproj
+4 -2
@@ -18,8 +18,8 @@
18 <None Remove="TestData\SingleFile\SingleFile.wxs" />
19 </ItemGroup>
20 <ItemGroup>
21 - <Content Include="TestData\SingleFile\ConvertedSingleFile.wxs" CopyToOutputDirectory="PreserveNewest" />
22 - <Content Include="TestData\SingleFile\SingleFile.wxs" CopyToOutputDirectory="PreserveNewest" />
21 + <Content Include="TestData\PermissionEx\v3.wxs" CopyToOutputDirectory="PreserveNewest" />
22 + <Content Include="TestData\PermissionEx\v4_expected.wxs" CopyToOutputDirectory="PreserveNewest" />
23 <Content Include="TestData\Preprocessor\ConvertedPreprocessor.wxs" CopyToOutputDirectory="PreserveNewest" />
24 <Content Include="TestData\Preprocessor\Preprocessor.wxs" CopyToOutputDirectory="PreserveNewest" />
25 <Content Include="TestData\Preprocessor\wixcop.settings.xml" CopyToOutputDirectory="PreserveNewest" />
@@ -27,6 +27,8 @@
27 <Content Include="TestData\QtExec\v4_expected.wxs" CopyToOutputDirectory="PreserveNewest" />
28 <Content Include="TestData\QtExec.bad\v3.wxs" CopyToOutputDirectory="PreserveNewest" />
29 <Content Include="TestData\QtExec.bad\v4_expected.wxs" CopyToOutputDirectory="PreserveNewest" />
30 + <Content Include="TestData\SingleFile\ConvertedSingleFile.wxs" CopyToOutputDirectory="PreserveNewest" />
31 + <Content Include="TestData\SingleFile\SingleFile.wxs" CopyToOutputDirectory="PreserveNewest" />
32 </ItemGroup>
33
34 <ItemGroup>