Example #1
0
        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());
        }
Example #2
0
        /// <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));
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }