main
cs 154 lines 5.77 KB
Raw
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
3 namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 using WixInternal.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
11
12 public class BundleCacheFixture : BaseConverterFixture
13 {
14 [Fact]
15 public void CanConvertExeAlwaysCache()
16 {
17 var parse = String.Join(Environment.NewLine,
18 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
19 " <Fragment>",
20 " <PackageGroup Id='exe'>",
21 " <ExePackage InstallCommand='-install' RepairCommand='-repair' UninstallCommand='-uninstall' Cache='always' SourceFile='test.exe' />",
22 " </PackageGroup>",
23 " </Fragment>",
24 "</Wix>");
25
26 var expected = new[]
27 {
28 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
29 " <Fragment>",
30 " <PackageGroup Id=\"exe\">",
31 " <ExePackage Cache=\"force\" SourceFile=\"test.exe\" InstallArguments=\"-install\" RepairArguments=\"-repair\" UninstallArguments=\"-uninstall\" />",
32 " </PackageGroup>",
33 " </Fragment>",
34 "</Wix>"
35 };
36
37 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
38
39 var messaging = new MockMessaging();
40 var converter = new WixConverter(messaging, 2, null, null);
41
42 var errors = converter.ConvertDocument(document);
43 Assert.Equal(4, errors);
44
45 var actualLines = UnformattedDocumentLines(document);
46 WixAssert.CompareLineByLine(expected, actualLines);
47 }
48
49 [Fact]
50 public void CanConvertMsiNoCache()
51 {
52 var parse = String.Join(Environment.NewLine,
53 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
54 " <Fragment>",
55 " <PackageGroup Id='msi'>",
56 " <MsiPackage Cache='no' SourceFile='test.msi' />",
57 " </PackageGroup>",
58 " </Fragment>",
59 "</Wix>");
60
61 var expected = new[]
62 {
63 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
64 " <Fragment>",
65 " <PackageGroup Id=\"msi\">",
66 " <MsiPackage Cache=\"remove\" SourceFile=\"test.msi\" />",
67 " </PackageGroup>",
68 " </Fragment>",
69 "</Wix>"
70 };
71
72 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
73
74 var messaging = new MockMessaging();
75 var converter = new WixConverter(messaging, 2, null, null);
76
77 var errors = converter.ConvertDocument(document);
78 Assert.Equal(1, errors);
79
80 var actualLines = UnformattedDocumentLines(document);
81 WixAssert.CompareLineByLine(expected, actualLines);
82 }
83
84 [Fact]
85 public void CanConvertMspYesCache()
86 {
87 var parse = String.Join(Environment.NewLine,
88 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
89 " <Fragment>",
90 " <PackageGroup Id='exe'>",
91 " <MspPackage Cache='yes' SourceFile='test.msp' />",
92 " </PackageGroup>",
93 " </Fragment>",
94 "</Wix>");
95
96 var expected = new[]
97 {
98 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
99 " <Fragment>",
100 " <PackageGroup Id=\"exe\">",
101 " <MspPackage Cache=\"keep\" SourceFile=\"test.msp\" />",
102 " </PackageGroup>",
103 " </Fragment>",
104 "</Wix>"
105 };
106
107 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
108
109 var messaging = new MockMessaging();
110 var converter = new WixConverter(messaging, 2, null, null);
111
112 var errors = converter.ConvertDocument(document);
113 Assert.Equal(1, errors);
114
115 var actualLines = UnformattedDocumentLines(document);
116 WixAssert.CompareLineByLine(expected, actualLines);
117 }
118
119 [Fact]
120 public void CanConvertMsuYesCache()
121 {
122 var parse = String.Join(Environment.NewLine,
123 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
124 " <Fragment>",
125 " <PackageGroup Id='exe'>",
126 " <MsuPackage Cache='yes' SourceFile='test.msp' />",
127 " </PackageGroup>",
128 " </Fragment>",
129 "</Wix>");
130
131 var expected = new[]
132 {
133 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
134 " <Fragment>",
135 " <PackageGroup Id=\"exe\">",
136 " <MsuPackage Cache=\"keep\" SourceFile=\"test.msp\" />",
137 " </PackageGroup>",
138 " </Fragment>",
139 "</Wix>"
140 };
141
142 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
143
144 var messaging = new MockMessaging();
145 var converter = new WixConverter(messaging, 2, null, null);
146
147 var errors = converter.ConvertDocument(document);
148 Assert.Equal(1, errors);
149
150 var actualLines = UnformattedDocumentLines(document);
151 WixAssert.CompareLineByLine(expected, actualLines);
152 }
153 }
154 }