@joebigelow / wix-1 / commits / 041558eb

Fix harvesting project names with invalid chars

Project names with invalid characters, namely spaces, where not being harvested properly. The sanitized name is requires for the `Source="$(var.PROJECT_NAME` output. Updated harvest project unit test for project names with spaces.

Mike Wileczka committed Apr 19, 2023 at 10:12 UTC 041558eb93368365ca397e16045e01454a603976
6 files changed +32 -32
src/tools/heat/VSProjectHarvester.cs
+1 -1
@@ -367,7 +367,7 @@ namespace WixToolset.Harvesters
367 projectBaseDir = Path.GetDirectoryName(projectFile) + "\\";
368 }
369
370 - int harvestCount = this.HarvestProjectOutputGroupFiles(projectBaseDir, projectName, pog.Name, pog.FileSource, pogFiles, harvestParent);
370 + int harvestCount = this.HarvestProjectOutputGroupFiles(projectBaseDir, sanitizedProjectName, pog.Name, pog.FileSource, pogFiles, harvestParent);
371
372 if (this.GenerateType == GenerateType.Container)
373 {
src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
+24 -24
@@ -200,62 +200,62 @@ namespace WixToolsetTest.Sdk
200 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
201 WixAssert.StringCollectionEmpty(warnings);
202
203 - var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_ToolsVersion4Cs.wxs");
203 + var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_Tools Version 4Cs.wxs");
204 Assert.True(File.Exists(generatedFilePath));
205
206 var generatedContents = File.ReadAllText(generatedFilePath);
207 var testXml = generatedContents.GetTestXml();
208 WixAssert.StringEqual(@"<Wix>" +
209 "<Fragment>" +
210 - "<DirectoryRef Id='ToolsVersion4Cs.Binaries'>" +
211 - "<Component Id='ToolsVersion4Cs.Binaries.ToolsVersion4Cs.dll' Guid='*'>" +
212 - "<File Id='ToolsVersion4Cs.Binaries.ToolsVersion4Cs.dll' Source='$(var.ToolsVersion4Cs.TargetDir)\\ToolsVersion4Cs.dll' />" +
210 + "<DirectoryRef Id='Tools_Version_4Cs.Binaries'>" +
211 + "<Component Id='Tools_Version_4Cs.Binaries.Tools_Version_4Cs.dll' Guid='*'>" +
212 + "<File Id='Tools_Version_4Cs.Binaries.Tools_Version_4Cs.dll' Source='$(var.Tools_Version_4Cs.TargetDir)\\Tools Version 4Cs.dll' />" +
213 "</Component>" +
214 "</DirectoryRef>" +
215 "</Fragment>" +
216 "<Fragment>" +
217 - "<ComponentGroup Id='ToolsVersion4Cs.Binaries'>" +
218 - "<ComponentRef Id='ToolsVersion4Cs.Binaries.ToolsVersion4Cs.dll' />" +
217 + "<ComponentGroup Id='Tools_Version_4Cs.Binaries'>" +
218 + "<ComponentRef Id='Tools_Version_4Cs.Binaries.Tools_Version_4Cs.dll' />" +
219 "</ComponentGroup>" +
220 "</Fragment>" +
221 "<Fragment>" +
222 - "<DirectoryRef Id='ToolsVersion4Cs.Symbols'>" +
223 - "<Component Id='ToolsVersion4Cs.Symbols.ToolsVersion4Cs.pdb' Guid='*'>" +
224 - "<File Id='ToolsVersion4Cs.Symbols.ToolsVersion4Cs.pdb' Source='$(var.ToolsVersion4Cs.TargetDir)\\ToolsVersion4Cs.pdb' />" +
222 + "<DirectoryRef Id='Tools_Version_4Cs.Symbols'>" +
223 + "<Component Id='Tools_Version_4Cs.Symbols.Tools_Version_4Cs.pdb' Guid='*'>" +
224 + "<File Id='Tools_Version_4Cs.Symbols.Tools_Version_4Cs.pdb' Source='$(var.Tools_Version_4Cs.TargetDir)\\Tools Version 4Cs.pdb' />" +
225 "</Component>" +
226 "</DirectoryRef>" +
227 "</Fragment>" +
228 "<Fragment>" +
229 - "<ComponentGroup Id='ToolsVersion4Cs.Symbols'>" +
230 - "<ComponentRef Id='ToolsVersion4Cs.Symbols.ToolsVersion4Cs.pdb' />" +
229 + "<ComponentGroup Id='Tools_Version_4Cs.Symbols'>" +
230 + "<ComponentRef Id='Tools_Version_4Cs.Symbols.Tools_Version_4Cs.pdb' />" +
231 "</ComponentGroup>" +
232 "</Fragment>" +
233 "<Fragment>" +
234 - "<DirectoryRef Id='ToolsVersion4Cs.Sources'>" +
235 - "<Component Id='ToolsVersion4Cs.Sources.ToolsVersion4Cs.csproj' Guid='*'>" +
236 - "<File Id='ToolsVersion4Cs.Sources.ToolsVersion4Cs.csproj' Source='$(var.ToolsVersion4Cs.ProjectDir)\\ToolsVersion4Cs.csproj' />" +
234 + "<DirectoryRef Id='Tools_Version_4Cs.Sources'>" +
235 + "<Component Id='Tools_Version_4Cs.Sources.Tools_Version_4Cs.csproj' Guid='*'>" +
236 + "<File Id='Tools_Version_4Cs.Sources.Tools_Version_4Cs.csproj' Source='$(var.Tools_Version_4Cs.ProjectDir)\\Tools Version 4Cs.csproj' />" +
237 "</Component>" +
238 - "<Directory Id='ToolsVersion4Cs.Sources.Properties' Name='Properties'>" +
239 - "<Component Id='ToolsVersion4Cs.Sources.AssemblyInfo.cs' Guid='*'>" +
240 - "<File Id='ToolsVersion4Cs.Sources.AssemblyInfo.cs' Source='$(var.ToolsVersion4Cs.ProjectDir)\\Properties\\AssemblyInfo.cs' />" +
238 + "<Directory Id='Tools_Version_4Cs.Sources.Properties' Name='Properties'>" +
239 + "<Component Id='Tools_Version_4Cs.Sources.AssemblyInfo.cs' Guid='*'>" +
240 + "<File Id='Tools_Version_4Cs.Sources.AssemblyInfo.cs' Source='$(var.Tools_Version_4Cs.ProjectDir)\\Properties\\AssemblyInfo.cs' />" +
241 "</Component>" +
242 "</Directory>" +
243 "</DirectoryRef>" +
244 "</Fragment>" +
245 "<Fragment>" +
246 - "<ComponentGroup Id='ToolsVersion4Cs.Sources'>" +
247 - "<ComponentRef Id='ToolsVersion4Cs.Sources.ToolsVersion4Cs.csproj' />" +
248 - "<ComponentRef Id='ToolsVersion4Cs.Sources.AssemblyInfo.cs' />" +
246 + "<ComponentGroup Id='Tools_Version_4Cs.Sources'>" +
247 + "<ComponentRef Id='Tools_Version_4Cs.Sources.Tools_Version_4Cs.csproj' />" +
248 + "<ComponentRef Id='Tools_Version_4Cs.Sources.AssemblyInfo.cs' />" +
249 "</ComponentGroup>" +
250 "</Fragment>" +
251 "<Fragment>" +
252 - "<ComponentGroup Id='ToolsVersion4Cs.Content' />" +
252 + "<ComponentGroup Id='Tools_Version_4Cs.Content' />" +
253 "</Fragment>" +
254 "<Fragment>" +
255 - "<ComponentGroup Id='ToolsVersion4Cs.Satellites' />" +
255 + "<ComponentGroup Id='Tools_Version_4Cs.Satellites' />" +
256 "</Fragment>" +
257 "<Fragment>" +
258 - "<ComponentGroup Id='ToolsVersion4Cs.Documents' />" +
258 + "<ComponentGroup Id='Tools_Version_4Cs.Documents' />" +
259 "</Fragment>" +
260 "</Wix>", testXml);
261
@@ -266,7 +266,7 @@ namespace WixToolsetTest.Sdk
266 var section = intermediate.Sections.Single();
267
268 var fileSymbol = section.Symbols.OfType<FileSymbol>().Single();
269 - WixAssert.StringEqual(Path.Combine(fs.BaseFolder, "ToolsVersion4Cs", "bin", "Release\\\\ToolsVersion4Cs.dll"), fileSymbol[FileSymbolFields.Source].AsPath()?.Path);
269 + WixAssert.StringEqual(Path.Combine(fs.BaseFolder, "Tools Version 4Cs", "bin", "Release\\\\Tools Version 4Cs.dll"), fileSymbol[FileSymbolFields.Source].AsPath()?.Path);
270 }
271 }
272
src/tools/test/WixToolsetTest.HeatTasks/TestData/HeatProject/HeatProjectPreSdkStyle/HeatProjectPreSdkStyle.wixproj
+1 -1
@@ -11,7 +11,7 @@
11 </PropertyGroup>
12
13 <ItemGroup>
14 - <ProjectReference Include="..\ToolsVersion4Cs\ToolsVersion4Cs.csproj" />
14 + <ProjectReference Include="..\Tools Version 4Cs\Tools Version 4Cs.csproj" />
15 </ItemGroup>
16
17 <Import Project="$(HeatTargetsPath)" />
src/tools/test/WixToolsetTest.HeatTasks/TestData/HeatProject/HeatProjectPreSdkStyle/Package.wxs
+2 -2
@@ -5,13 +5,13 @@
5 <MediaTemplate />
6
7 <Feature Id="ProductFeature" Title="HeatProjectFeature">
8 - <ComponentGroupRef Id="ToolsVersion4Cs.Binaries" />
8 + <ComponentGroupRef Id="Tools_Version_4Cs.Binaries" />
9 </Feature>
10 </Package>
11
12 <Fragment>
13 <StandardDirectory Id="ProgramFilesFolder">
14 - <Directory Id="ToolsVersion4Cs.Binaries" Name="MsiPackage" />
14 + <Directory Id="Tools_Version_4Cs.Binaries" Name="MsiPackage" />
15 </StandardDirectory>
16 </Fragment>
17 </Wix>
src/tools/test/WixToolsetTest.HeatTasks/TestData/HeatProject/Tools Version 4Cs/Properties/AssemblyInfo.cs renamed
+2 -2
@@ -4,8 +4,8 @@ using System;
4 using System.Reflection;
5 using System.Runtime.InteropServices;
6
7 -[assembly: AssemblyTitle("ToolsVersion4Cs")]
8 -[assembly: AssemblyDescription("ToolsVersion4Cs")]
7 +[assembly: AssemblyTitle("Tools Version 4Cs")]
8 +[assembly: AssemblyDescription("Tools Version 4Cs")]
9 [assembly: AssemblyProduct("WiX Toolset")]
10 [assembly: AssemblyCompany("WiX Toolset Team")]
11 [assembly: AssemblyCopyright("Copyright (c) .NET Foundation and contributors. All rights reserved.")]
src/tools/test/WixToolsetTest.HeatTasks/TestData/HeatProject/Tools Version 4Cs/Tools Version 4Cs.csproj renamed
+2 -2
@@ -5,7 +5,7 @@
5 <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6 <PropertyGroup>
7 <ProjectGuid>{8B19578A-816A-48A1-A6C4-58067334EB79}</ProjectGuid>
8 - <AssemblyName>ToolsVersion4Cs</AssemblyName>
8 + <AssemblyName>Tools Version 4Cs</AssemblyName>
9 <OutputType>Library</OutputType>
10 <RootNamespace>ToolsVersion4Cs</RootNamespace>
11 <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
@@ -33,4 +33,4 @@
33 </ItemGroup>
34
35 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
36 -</Project>
\ No newline at end of file
36 +</Project>