From 32024b526d129534b017d4e932f08e6a6f015102 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sun, 15 Jan 2023 20:42:08 -0600 Subject: Add Name to Payloads created during directory harvesting. 7161 --- src/tools/heat/DirectoryHarvester.cs | 9 ++++-- .../DirectoryToPayloadGroupFixture.cs | 34 ++++++++++++++++++++++ .../TestData/NestedFiles/Nested/c.txt | 1 + .../WixToolsetTest.Heat/TestData/NestedFiles/b.txt | 1 + 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/Nested/c.txt create mode 100644 src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/b.txt diff --git a/src/tools/heat/DirectoryHarvester.cs b/src/tools/heat/DirectoryHarvester.cs index c153fef5..e69857ab 100644 --- a/src/tools/heat/DirectoryHarvester.cs +++ b/src/tools/heat/DirectoryHarvester.cs @@ -177,7 +177,7 @@ namespace WixToolset.Harvesters { try { - int fileCount = this.HarvestDirectory(path, "SourceDir\\", harvestParent, generateType); + int fileCount = this.HarvestDirectory(path, "", harvestParent, generateType); if (generateType != GenerateType.PayloadGroup) { @@ -256,7 +256,7 @@ namespace WixToolset.Harvesters foreach (string filePath in Directory.GetFiles(path)) { string fileName = Path.GetFileName(filePath); - string source = String.Concat(relativePath, fileName); + string source = String.Concat("SourceDir\\", relativePath, fileName); Wix.ISchemaElement newChild; if (generateType == GenerateType.PayloadGroup) @@ -265,6 +265,11 @@ namespace WixToolset.Harvesters newChild = payload; payload.SourceFile = source; + + if (!String.IsNullOrEmpty(relativePath)) + { + payload.Name = String.Concat(relativePath, fileName); + } } else { diff --git a/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs b/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs index c9b8ee30..9ca84936 100644 --- a/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs +++ b/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs @@ -76,5 +76,39 @@ namespace WixToolsetTest.Heat }, wxs); } } + + [Fact] + public void CanHarvestNestedFiles() + { + var folder = TestData.Get("TestData", "NestedFiles"); + + using (var fs = new DisposableFileSystem()) + { + var outputPath = Path.Combine(fs.GetFolder(), "out.wxs"); + + var args = new[] + { + "dir", folder, + "-generate", "payloadgroup", + "-o", outputPath + }; + + var result = HeatRunner.Execute(args); + result.AssertSuccess(); + + var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "", + " ", + " ", + " ", + " ", + " ", + " ", + "", + }, wxs); + } + } } } diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/Nested/c.txt b/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/Nested/c.txt new file mode 100644 index 00000000..17c43215 --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/Nested/c.txt @@ -0,0 +1 @@ +This be c.txt. \ No newline at end of file diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/b.txt b/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/b.txt new file mode 100644 index 00000000..704b3d88 --- /dev/null +++ b/src/tools/test/WixToolsetTest.Heat/TestData/NestedFiles/b.txt @@ -0,0 +1 @@ +This is b.txt -- cgit v1.2.3-55-g6feb