aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-03-26 13:51:14 -0400
committerBob Arnson <bob@firegiant.com>2020-03-26 15:14:33 -0400
commit1adfdda935b814541693cd550bb34fdbf2942b1f (patch)
tree72b815664870bd37b9c049faa102348cc872fdd9 /src/test
parent22c97adba70fa838b8f285d404750d0f8fe685d8 (diff)
downloadwix-1adfdda935b814541693cd550bb34fdbf2942b1f.tar.gz
wix-1adfdda935b814541693cd550bb34fdbf2942b1f.tar.bz2
wix-1adfdda935b814541693cd550bb34fdbf2942b1f.zip
Add intermediate levels to track how IR has been lowered.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs29
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs50
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs16
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs16
4 files changed, 108 insertions, 3 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs b/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
index da1a374f..254b78f8 100644
--- a/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
@@ -6,14 +6,43 @@ namespace WixToolsetTest.CoreIntegration
6 using System.IO; 6 using System.IO;
7 using System.Linq; 7 using System.Linq;
8 using WixBuildTools.TestSupport; 8 using WixBuildTools.TestSupport;
9 using WixToolset.Core;
9 using WixToolset.Core.TestPackage; 10 using WixToolset.Core.TestPackage;
10 using WixToolset.Data; 11 using WixToolset.Data;
11 using WixToolset.Data.Tuples; 12 using WixToolset.Data.Tuples;
13 using WixToolset.Extensibility.Data;
14 using WixToolset.Extensibility.Services;
12 using Xunit; 15 using Xunit;
13 16
14 public class LinkerFixture 17 public class LinkerFixture
15 { 18 {
16 [Fact] 19 [Fact]
20 public void MustCompileBeforeLinking()
21 {
22 var intermediate1 = new Intermediate("TestIntermediate1", new[] { new IntermediateSection("test1", SectionType.Product, 65001) }, null);
23 var intermediate2 = new Intermediate("TestIntermediate2", new[] { new IntermediateSection("test2", SectionType.Fragment, 65001) }, null);
24 var serviceProvider = new WixToolsetServiceProvider();
25
26 var listener = new TestMessageListener();
27 var messaging = serviceProvider.GetService<IMessaging>();
28 messaging.SetListener(listener);
29
30 var creator = serviceProvider.GetService<ITupleDefinitionCreator>();
31 var context = serviceProvider.GetService<ILinkContext>();
32 context.Extensions = Enumerable.Empty<WixToolset.Extensibility.ILinkerExtension>();
33 context.ExtensionData = Enumerable.Empty<WixToolset.Extensibility.IExtensionData>();
34 context.Intermediates = new[] { intermediate1, intermediate2 };
35 context.TupleDefinitionCreator = creator;
36
37 var linker = serviceProvider.GetService<ILinker>();
38 linker.Link(context);
39
40 Assert.Equal((int)ErrorMessages.Ids.IntermediatesMustBeCompiled, messaging.LastErrorNumber);
41 Assert.Single(listener.Messages);
42 Assert.EndsWith("TestIntermediate1, TestIntermediate2", listener.Messages[0].ToString());
43 }
44
45 [Fact]
17 public void CanBuildWithOverridableActions() 46 public void CanBuildWithOverridableActions()
18 { 47 {
19 var folder = TestData.Get(@"TestData\OverridableActions"); 48 var folder = TestData.Get(@"TestData\OverridableActions");
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
index 9d057dd8..2141e68c 100644
--- a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
@@ -41,6 +41,12 @@ namespace WixToolsetTest.CoreIntegration
41 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); 41 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt")));
42 42
43 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); 43 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb"));
44
45 Assert.False(intermediate.HasLevel(WixToolset.Data.IntermediateLevels.Compiled));
46 Assert.True(intermediate.HasLevel(WixToolset.Data.IntermediateLevels.Linked));
47 Assert.True(intermediate.HasLevel(WixToolset.Data.IntermediateLevels.Resolved));
48 Assert.True(intermediate.HasLevel(WixToolset.Data.WindowsInstaller.IntermediateLevels.FullyBound));
49
44 var section = intermediate.Sections.Single(); 50 var section = intermediate.Sections.Single();
45 51
46 var fileTuple = section.Tuples.OfType<FileTuple>().First(); 52 var fileTuple = section.Tuples.OfType<FileTuple>().First();
@@ -469,6 +475,50 @@ namespace WixToolsetTest.CoreIntegration
469 } 475 }
470 476
471 [Fact] 477 [Fact]
478 public void CanBuildWithPartialWixpdbInput()
479 {
480 var folder = TestData.Get(@"TestData\SingleFile");
481
482 using (var fs = new DisposableFileSystem())
483 {
484 var baseFolder = fs.GetFolder();
485 var intermediateFolder = Path.Combine(baseFolder, "obj");
486 var wixpdbPath = Path.Combine(baseFolder, @"partial\test.wixpdb");
487
488 var result = WixRunner.Execute(new[]
489 {
490 "build",
491 Path.Combine(folder, "Package.wxs"),
492 Path.Combine(folder, "PackageComponents.wxs"),
493 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
494 "-bindpath", Path.Combine(folder, "data"),
495 "-intermediateFolder", intermediateFolder,
496 //"-o", Path.Combine(baseFolder, @"partial\test.msi"),
497 "-pdb", wixpdbPath,
498 "-pdbtype", "Partial",
499 }, out var messages);
500 Assert.Equal(0, result);
501
502 result = WixRunner.Execute(new[]
503 {
504 "build",
505 wixpdbPath,
506 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
507 "-bindpath", Path.Combine(folder, "data"),
508 "-intermediateFolder", intermediateFolder,
509 "-o", Path.Combine(baseFolder, @"bin\test.msi"),
510 }, out messages);
511 Assert.Equal(0, result);
512
513 var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin"));
514 Assert.Equal(new[]{
515 "test.msi",
516 "test.wixpdb",
517 }, builtFiles.Select(Path.GetFileName).ToArray());
518 }
519 }
520
521 [Fact]
472 public void CanBuildWixlib() 522 public void CanBuildWixlib()
473 { 523 {
474 var folder = TestData.Get(@"TestData\SingleFile"); 524 var folder = TestData.Get(@"TestData\SingleFile");
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs
index 5927987b..b3d7da26 100644
--- a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs
@@ -23,6 +23,7 @@ namespace WixToolsetTest.CoreIntegration
23 { 23 {
24 var baseFolder = fs.GetFolder(); 24 var baseFolder = fs.GetFolder();
25 var intermediateFolder = Path.Combine(baseFolder, "obj"); 25 var intermediateFolder = Path.Combine(baseFolder, "obj");
26 var wixiplPath = Path.Combine(intermediateFolder, @"test.wixipl");
26 27
27 var result = WixRunner.Execute(new[] 28 var result = WixRunner.Execute(new[]
28 { 29 {
@@ -30,11 +31,17 @@ namespace WixToolsetTest.CoreIntegration
30 Path.Combine(folder, "Package.wxs"), 31 Path.Combine(folder, "Package.wxs"),
31 Path.Combine(folder, "PackageComponents.wxs"), 32 Path.Combine(folder, "PackageComponents.wxs"),
32 "-intermediateFolder", intermediateFolder, 33 "-intermediateFolder", intermediateFolder,
33 "-o", Path.Combine(intermediateFolder, @"test.wixipl") 34 "-o", wixiplPath,
34 }); 35 });
35 36
36 result.AssertSuccess(); 37 result.AssertSuccess();
37 38
39 var intermediate = Intermediate.Load(wixiplPath);
40
41 Assert.False(intermediate.HasLevel(IntermediateLevels.Compiled));
42 Assert.True(intermediate.HasLevel(IntermediateLevels.Linked));
43 Assert.False(intermediate.HasLevel(IntermediateLevels.Resolved));
44
38 result = WixRunner.Execute(new[] 45 result = WixRunner.Execute(new[]
39 { 46 {
40 "build", 47 "build",
@@ -47,7 +54,12 @@ namespace WixToolsetTest.CoreIntegration
47 54
48 result.AssertSuccess(); 55 result.AssertSuccess();
49 56
50 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); 57 intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb"));
58
59 Assert.False(intermediate.HasLevel(IntermediateLevels.Compiled));
60 Assert.True(intermediate.HasLevel(IntermediateLevels.Linked));
61 Assert.True(intermediate.HasLevel(IntermediateLevels.Resolved));
62
51 var section = intermediate.Sections.Single(); 63 var section = intermediate.Sections.Single();
52 64
53 var fileTuple = section.Tuples.OfType<FileTuple>().First(); 65 var fileTuple = section.Tuples.OfType<FileTuple>().First();
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs b/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs
index a48a8370..5f8a278e 100644
--- a/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs
@@ -77,17 +77,25 @@ namespace WixToolsetTest.CoreIntegration
77 { 77 {
78 var baseFolder = fs.GetFolder(); 78 var baseFolder = fs.GetFolder();
79 var intermediateFolder = Path.Combine(baseFolder, "obj"); 79 var intermediateFolder = Path.Combine(baseFolder, "obj");
80 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
80 81
81 var result = WixRunner.Execute(new[] 82 var result = WixRunner.Execute(new[]
82 { 83 {
83 "build", 84 "build",
84 Path.Combine(folder, "PackageComponents.wxs"), 85 Path.Combine(folder, "PackageComponents.wxs"),
85 "-intermediateFolder", intermediateFolder, 86 "-intermediateFolder", intermediateFolder,
86 "-o", Path.Combine(intermediateFolder, @"test.wixlib") 87 "-o", wixlibPath,
87 }); 88 });
88 89
89 result.AssertSuccess(); 90 result.AssertSuccess();
90 91
92 var wixlib = Intermediate.Load(wixlibPath);
93
94 Assert.True(wixlib.HasLevel(IntermediateLevels.Compiled));
95 Assert.True(wixlib.HasLevel(IntermediateLevels.Combined));
96 Assert.False(wixlib.HasLevel(IntermediateLevels.Linked));
97 Assert.False(wixlib.HasLevel(IntermediateLevels.Resolved));
98
91 result = WixRunner.Execute(new[] 99 result = WixRunner.Execute(new[]
92 { 100 {
93 "build", 101 "build",
@@ -102,6 +110,12 @@ namespace WixToolsetTest.CoreIntegration
102 result.AssertSuccess(); 110 result.AssertSuccess();
103 111
104 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); 112 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb"));
113
114 Assert.False(intermediate.HasLevel(IntermediateLevels.Compiled));
115 Assert.False(intermediate.HasLevel(IntermediateLevels.Combined));
116 Assert.True(intermediate.HasLevel(IntermediateLevels.Linked));
117 Assert.True(intermediate.HasLevel(IntermediateLevels.Resolved));
118
105 var section = intermediate.Sections.Single(); 119 var section = intermediate.Sections.Single();
106 120
107 var wixFile = section.Tuples.OfType<FileTuple>().First(); 121 var wixFile = section.Tuples.OfType<FileTuple>().First();