Add logger related tests (to sort out those Loggers properties relationship)
authorAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Wed, 4 Dec 2013 08:44:53 +0000 (17:44 +0900)
committerAtsushi Eno <atsushieno@gmail.com>
Tue, 7 Jan 2014 15:09:33 +0000 (00:09 +0900)
mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/BuildSubmissionTest.cs

index df2febcbf75b022557252ede8e20b5280d6c4681..a26cbd41e770caf26411736987f6da051a1a7021 100644 (file)
@@ -110,6 +110,55 @@ namespace MonoTests.Microsoft.Build.Execution
                        Assert.IsTrue (endBuildDone - beforeExec >= TimeSpan.FromSeconds (1), "#2");
                        Assert.IsTrue (endBuildDone > waitDone, "#3");
                }
+               
+               [Test]
+               public void BuildParameterLoggersExplicitlyRequired ()
+               {
+            string project_xml = @"<Project DefaultTargets='Foo' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+  <Import Project='$(MSBuildToolsPath)\Microsoft.Common.targets' />
+  <Target Name='Foo'>
+    <ItemGroup>
+      <Foo Condition='$(X)' Include='foo.txt' />
+    </ItemGroup>
+  </Target>
+</Project>";
+            var xml = XmlReader.Create (new StringReader (project_xml));
+            var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "BuildSubmissionTest.TaskOutputsToLoggers.proj";
+                       var pc = new ProjectCollection ();
+                       var sw = new StringWriter ();
+                       pc.RegisterLogger (new ConsoleLogger (LoggerVerbosity.Diagnostic, sw.WriteLine, null, null));
+                       var proj = new ProjectInstance (root);
+                       var bm = new BuildManager ();
+                       var bp = new BuildParameters (pc);
+                       var br = new BuildRequestData (proj, null);
+                       Assert.IsFalse (bm.Build (bp, br).OverallResult == BuildResultCode.Failure, "#1");
+                       // the logger is *ignored*
+                       Assert.IsFalse (sw.ToString ().Contains ("$(X)"), "#2");
+               }
+               
+               [Test]
+               public void ProjectInstanceBuildLoggersExplicitlyRequired ()
+               {
+            string project_xml = @"<Project DefaultTargets='Foo' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+  <Import Project='$(MSBuildToolsPath)\Microsoft.Common.targets' />
+  <Target Name='Foo'>
+    <ItemGroup>
+      <Foo Condition='$(X)' Include='foo.txt' />
+    </ItemGroup>
+  </Target>
+</Project>";
+            var xml = XmlReader.Create (new StringReader (project_xml));
+            var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "BuildSubmissionTest.TaskOutputsToLoggers.proj";
+                       var pc = new ProjectCollection ();
+                       var sw = new StringWriter ();
+                       pc.RegisterLogger (new ConsoleLogger (LoggerVerbosity.Diagnostic, sw.WriteLine, null, null));
+                       var proj = new ProjectInstance (root);
+                       Assert.IsFalse (proj.Build (), "#1");
+                       // the logger is *ignored* again
+                       Assert.IsFalse (sw.ToString ().Contains ("$(X)"), "#2");
+               }
        }
 }