main
cs 178 lines 7.26 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 DependencyFixture : BaseConverterFixture
13 {
14 [Fact]
15 public void FixPackageDependencyProvides()
16 {
17 var parse = String.Join(Environment.NewLine,
18 "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
19 "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:dep='http://schemas.microsoft.com/wix/DependencyExtension'>",
20 " <Fragment>",
21 " <ComponentGroup Id='Group1' Directory='INSTALLFOLDER'>",
22 " <Component>",
23 " <dep:Provides Key='abc' />",
24 " </Component>",
25 " </ComponentGroup>",
26 " </Fragment>",
27 "</Wix>");
28
29 var expected = new[]
30 {
31 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:dep=\"http://wixtoolset.org/schemas/v4/wxs/dependency\">",
32 " <Fragment>",
33 " <ComponentGroup Id=\"Group1\" Directory=\"INSTALLFOLDER\">",
34 " <Component>",
35 " <Provides Key=\"abc\" dep:Check=\"yes\" />",
36 " </Component>",
37 " </ComponentGroup>",
38 " </Fragment>",
39 "</Wix>"
40 };
41
42 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
43
44 var messaging = new MockMessaging();
45 var converter = new WixConverter(messaging, 2, null, null);
46
47 var errors = converter.ConvertDocument(document);
48 Assert.Equal(5, errors);
49
50 var actualLines = UnformattedDocumentLines(document);
51 WixAssert.CompareLineByLine(expected, actualLines);
52 }
53
54 [Fact]
55 public void FixPackageDependencyRequires()
56 {
57 var parse = String.Join(Environment.NewLine,
58 "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
59 "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:dep='http://schemas.microsoft.com/wix/DependencyExtension'>",
60 " <Fragment>",
61 " <ComponentGroup Id='Group1' Directory='INSTALLFOLDER'>",
62 " <Component>",
63 " <dep:Provides Key='abc'>",
64 " <dep:Requires Key='xyz' />",
65 " </dep:Provides>",
66 " </Component>",
67 " </ComponentGroup>",
68 " </Fragment>",
69 "</Wix>");
70
71 var expected = new[]
72 {
73 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:dep=\"http://wixtoolset.org/schemas/v4/wxs/dependency\">",
74 " <Fragment>",
75 " <ComponentGroup Id=\"Group1\" Directory=\"INSTALLFOLDER\">",
76 " <Component>",
77 " <Provides Key=\"abc\" dep:Check=\"yes\">",
78 " <Requires Key=\"xyz\" dep:Enforce=\"yes\" />",
79 " </Provides>",
80 " </Component>",
81 " </ComponentGroup>",
82 " </Fragment>",
83 "</Wix>"
84 };
85
86 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
87
88 var messaging = new MockMessaging();
89 var converter = new WixConverter(messaging, 2, null, null);
90
91 var errors = converter.ConvertDocument(document);
92 Assert.Equal(7, errors);
93
94 var actualLines = UnformattedDocumentLines(document);
95 WixAssert.CompareLineByLine(expected, actualLines);
96 }
97
98 [Fact]
99 public void FixPackageDependencyRequiresRef()
100 {
101 var parse = String.Join(Environment.NewLine,
102 "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
103 "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:dep='http://schemas.microsoft.com/wix/DependencyExtension'>",
104 " <Fragment>",
105 " <ComponentGroup Id='Group1' Directory='INSTALLFOLDER'>",
106 " <Component>",
107 " <dep:Provides Key='abc'>",
108 " <dep:RequiresRef Id='OtherRequires' />",
109 " </dep:Provides>",
110 " </Component>",
111 " </ComponentGroup>",
112 " </Fragment>",
113 "</Wix>");
114
115 var expected = new[]
116 {
117 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:dep=\"http://wixtoolset.org/schemas/v4/wxs/dependency\">",
118 " <Fragment>",
119 " <ComponentGroup Id=\"Group1\" Directory=\"INSTALLFOLDER\">",
120 " <Component>",
121 " <Provides Key=\"abc\" dep:Check=\"yes\">",
122 " <RequiresRef Id=\"OtherRequires\" dep:Enforce=\"yes\" />",
123 " </Provides>",
124 " </Component>",
125 " </ComponentGroup>",
126 " </Fragment>",
127 "</Wix>"
128 };
129
130 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
131
132 var messaging = new MockMessaging();
133 var converter = new WixConverter(messaging, 2, null, null);
134
135 var errors = converter.ConvertDocument(document);
136 Assert.Equal(7, errors);
137
138 var actualLines = UnformattedDocumentLines(document);
139 WixAssert.CompareLineByLine(expected, actualLines);
140 }
141
142 [Fact]
143 public void FixBundleDependencyProvides()
144 {
145 var parse = String.Join(Environment.NewLine,
146 "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
147 "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:dep='http://schemas.microsoft.com/wix/DependencyExtension'>",
148 " <Fragment>",
149 " <MsiPackage Id='Package1'>",
150 " <dep:Provides Key='abc' />",
151 " </MsiPackage>",
152 " </Fragment>",
153 "</Wix>");
154
155 var expected = new[]
156 {
157 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
158 " <Fragment>",
159 " <MsiPackage Id=\"Package1\">",
160 " <Provides Key=\"abc\" />",
161 " </MsiPackage>",
162 " </Fragment>",
163 "</Wix>"
164 };
165
166 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
167
168 var messaging = new MockMessaging();
169 var converter = new WixConverter(messaging, 2, null, null);
170
171 var errors = converter.ConvertDocument(document);
172 Assert.Equal(5, errors);
173
174 var actualLines = UnformattedDocumentLines(document);
175 WixAssert.CompareLineByLine(expected, actualLines);
176 }
177 }
178 }