示例#1
0
        TestMessageLogger CreateLogger(string projectXml)
        {
            var logger = new TestMessageLogger ();
            var result = Build (projectXml, logger);

            if (!result) {
                logger.DumpMessages ();
                Assert.Fail ("Build failed");
            }

            return logger;
        }
示例#2
0
        public void TestRunTargetTwice()
        {
            string documentString = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
			<Target Name=""Foo"">
				<Message Text=""Foo ran""/>
			</Target>
			<Target Name=""Main"">
				<MSBuild Projects=""$(MSBuildProjectFile)"" Targets=""Foo;Foo"" />
			</Target>

		</Project>"        ;

            var filepath = Path.GetTempFileName();

            try {
                File.WriteAllText(filepath, documentString);

                var engine  = new Engine(Consts.BinPath);
                var project = engine.CreateNewProject();
                project.Load(filepath);

                var logger = new TestMessageLogger();
                engine.RegisterLogger(logger);

                var result = project.Build("Main");
                if (!result)
                {
                    logger.DumpMessages();
                    Assert.Fail("Build failed, see the logs");
                }

                Assert.AreEqual(1, logger.NormalMessageCount, "Expected number of messages");
                logger.CheckLoggedMessageHead("Foo ran", "A1");

                Assert.AreEqual(0, logger.NormalMessageCount, "Extra messages found");
                Assert.AreEqual(0, logger.WarningMessageCount, "Extra warning messages found");

                Assert.AreEqual(2, logger.TargetStarted, "TargetStarted count");
                Assert.AreEqual(2, logger.TargetFinished, "TargetFinished count");

                Assert.IsTrue(result);
            } finally {
                File.Delete(filepath);
            }
        }
示例#3
0
        public void TestTargetReturns()
        {
            engine = new Engine (Consts.BinPath);
            project = engine.CreateNewProject ();
            project.Load (Path.Combine ("Test", Path.Combine ("resources", "TestReturns.csproj")));

            var logger = new TestMessageLogger ();
            engine.RegisterLogger (logger);

            bool result = project.Build ("Main");
            if (!result) {
                logger.DumpMessages ();
                Assert.Fail ("Build failed");
            }

            logger.CheckLoggedMessageHead ("Result: Bar", "A1");

            Assert.AreEqual (0, logger.NormalMessageCount, "Unexpected extra messages found");
        }
        void RunAndCheckTaskLoggingHelper(Action <TaskLoggingHelper> taskAction, Action <TestMessageLogger> loggerAction, Action <Project, TestMessageLogger> projectBuildAction = null)
        {
            string asmLocation = typeof(TaskLoggingHelperTest).Assembly.Location;
            string project_xml = @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
			<UsingTask TaskName='MonoTests.Microsoft.Build.Utilities.TestTask' AssemblyFile='"             + asmLocation + @"' />
			<Target Name=""1"">
				<TestTask />
			</Target>
			</Project>"            ;

            Engine  engine = new Engine(Consts.BinPath);
            Project proj   = engine.CreateNewProject();

            proj.LoadXml(project_xml);
            TestMessageLogger logger = new TestMessageLogger();

            engine.RegisterLogger(logger);

            TestTask.action = taskAction;

            if (projectBuildAction == null)
            {
                if (!proj.Build("1"))
                {
                    logger.DumpMessages();
                    Assert.Fail("Build failed");
                }
            }
            else
            {
                projectBuildAction(proj, logger);
            }

            if (loggerAction != null)
            {
                loggerAction(logger);
            }
        }