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>