public void MustCompileBeforeLinking() { var intermediate1 = new Intermediate("TestIntermediate1", new[] { new IntermediateSection("test1", SectionType.Product, 65001) }, null); var intermediate2 = new Intermediate("TestIntermediate2", new[] { new IntermediateSection("test2", SectionType.Fragment, 65001) }, null); var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); var listener = new TestMessageListener(); var messaging = serviceProvider.GetService <IMessaging>(); messaging.SetListener(listener); var creator = serviceProvider.GetService <ISymbolDefinitionCreator>(); var context = serviceProvider.GetService <ILinkContext>(); context.Extensions = Enumerable.Empty <WixToolset.Extensibility.ILinkerExtension>(); context.ExtensionData = Enumerable.Empty <WixToolset.Extensibility.IExtensionData>(); context.Intermediates = new[] { intermediate1, intermediate2 }; context.SymbolDefinitionCreator = creator; var linker = serviceProvider.GetService <ILinker>(); linker.Link(context); Assert.Equal((int)ErrorMessages.Ids.IntermediatesMustBeCompiled, messaging.LastErrorNumber); Assert.Single(listener.Messages); Assert.EndsWith("TestIntermediate1, TestIntermediate2", listener.Messages[0].ToString()); }
/// <summary> /// Emulates calling wix.exe with standard backends. /// </summary> /// <param name="args"></param> /// <param name="coreProvider"></param> /// <param name="messages"></param> /// <param name="warningsAsErrors"></param> /// <returns></returns> public static Task <int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List <Message> messages, bool warningsAsErrors = true) { coreProvider.AddBundleBackend(); var listener = new TestMessageListener(); messages = listener.Messages; var messaging = coreProvider.GetService <IMessaging>(); messaging.SetListener(listener); if (warningsAsErrors) { messaging.WarningsAsError = true; } var arguments = coreProvider.GetService <ICommandLineArguments>(); arguments.Populate(args); var commandLine = HeatCommandLineFactory.CreateCommandLine(coreProvider); var command = commandLine.ParseStandardCommandLine(arguments); return(command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1)); }
public void Listeners() { TestObject testObject1 = (TestObject)ctx.GetObject("testObject1"); TestObject testObject2 = (TestObject)ctx.GetObject("testObject2"); TestMessageListener testObject3 = (TestMessageListener)ctx.GetObject("testObject3"); Assert.IsNull(testObject1.Name); Assert.IsNull(testObject2.Name); Assert.IsNull(testObject3.Message); ITextMessage message1 = (ITextMessage)mocks.CreateMock(typeof(ITextMessage)); Expect.Call(message1.Text).Return("Test1"); mocks.Replay(message1); IMessageListener listener1 = GetListener("listener1"); listener1.OnMessage(message1); Assert.AreEqual("Test1", testObject1.Name); mocks.Verify(message1); ITextMessage message2 = (ITextMessage)mocks.CreateMock(typeof(ITextMessage)); Expect.Call(message2.Text).Return("Test1"); mocks.Replay(message2); IMessageListener listener2 = GetListener("listener2"); listener2.OnMessage(message2); mocks.Verify(message2); ITextMessage message3 = (ITextMessage)mocks.CreateMock(typeof(ITextMessage)); mocks.Replay(message3); //Default naming strategy is to use full type name + # + number string className = typeof(SimpleMessageListenerContainer).FullName; string targetName = className + ObjectDefinitionReaderUtils.GENERATED_OBJECT_NAME_SEPARATOR + "0"; IMessageListener listener3 = GetListener(targetName); listener3.OnMessage(message3); Assert.AreSame(message3, testObject3.Message); mocks.Verify(message3); }
public static WixCopRunnerResult Execute(string[] args) { var listener = new TestMessageListener(); var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); serviceProvider.AddService <IMessageListener>((x, y) => listener); serviceProvider.AddService <IWixCopCommandLineParser>((x, y) => new WixCopCommandLineParser(x)); var exitCode = Execute(serviceProvider, args); return(new WixCopRunnerResult { ExitCode = exitCode, Messages = listener.Messages.ToArray() }); }
public void Listeners() { TestObject testObject1 = (TestObject)ctx.GetObject("testObject1"); TestObject testObject2 = (TestObject)ctx.GetObject("testObject2"); TestMessageListener testObject3 = (TestMessageListener)ctx.GetObject("testObject3"); Assert.IsNull(testObject1.Name); Assert.IsNull(testObject2.Name); Assert.IsNull(testObject3.Message); ITextMessage message1 = A.Fake <ITextMessage>(); A.CallTo(() => message1.Text).Returns("Test1"); IMessageListener listener1 = GetListener("listener1"); listener1.OnMessage(message1); Assert.AreEqual("Test1", testObject1.Name); ITextMessage message2 = A.Fake <ITextMessage>(); A.CallTo(() => message2.Text).Returns("Test1"); IMessageListener listener2 = GetListener("listener2"); listener2.OnMessage(message2); A.CallTo(() => message2.Text).MustHaveHappened(); ITextMessage message3 = A.Fake <ITextMessage>(); //Default naming strategy is to use full type name + # + number string className = typeof(SimpleMessageListenerContainer).FullName; string targetName = className + ObjectDefinitionReaderUtils.GENERATED_OBJECT_NAME_SEPARATOR + "0"; IMessageListener listener3 = GetListener(targetName); listener3.OnMessage(message3); Assert.AreSame(message3, testObject3.Message); }