Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / class / Microsoft.Build / Test / Microsoft.Build.Execution / BuildSubmissionTest.cs
index 4794798e82e196f4034b50c456a9ea28ee6a67b9..9723191bf164f6643724dcc990d59e609bf35003 100644 (file)
@@ -60,8 +60,8 @@ namespace MonoTests.Microsoft.Build.Execution
                [Test]
                public void TaskOutputsToLoggers ()
                {
-            string project_xml = @"<Project DefaultTargets='Foo;Bar' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
-  <Import Project='$(MSBuildToolsPath)\Microsoft.Common.targets' />
+            string project_xml = @"<Project DefaultTargets='Foo' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+  <Import Project='$(MSBuildToolsPath)\Microsoft.CSharp.targets' />
   <Target Name='Foo'>
     <ItemGroup>
       <Foo Condition='$(X)' Include='foo.txt' />
@@ -70,9 +70,11 @@ namespace MonoTests.Microsoft.Build.Execution
 </Project>";
             var xml = XmlReader.Create (new StringReader (project_xml));
             var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "BuildSubmissionTest.TaskOutputsToLoggers.proj";
             var proj = new ProjectInstance (root);
+                       Assert.AreEqual ("$(X)", root.Targets.First ().ItemGroups.First ().Items.First ().Condition, "#0");
                        var sw = new StringWriter ();
-                       Assert.IsFalse (proj.Build (new ILogger [] {new ConsoleLogger (default (LoggerVerbosity), msg => sw.Write (msg), null, null)}), "#1");
+                       Assert.IsFalse (proj.Build (new ILogger [] {new ConsoleLogger (LoggerVerbosity.Diagnostic, sw.WriteLine, null, null)}), "#1");
                        Assert.IsTrue (sw.ToString ().Contains ("$(X)"), "#2");
                }
                
@@ -94,6 +96,7 @@ namespace MonoTests.Microsoft.Build.Execution
 </Project>", is_windows ? "powershell -command \"Start-Sleep -s 1\"" : "/bin/sleep 1");
                        var xml = XmlReader.Create (new StringReader (project_xml));
                        var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "BuildSubmissionTest.EndBuildWaitsForSubmissionCompletion.proj";
                        var proj = new ProjectInstance (root);
                        var bm = new BuildManager ();
                        bm.BeginBuild (new BuildParameters ());
@@ -107,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.CSharp.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.BuildParameterLoggersExplicitlyRequired.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, new string [] {"Foo"});
+                       Assert.AreEqual (BuildResultCode.Failure, bm.Build (bp, br).OverallResult, "#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.CSharp.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");
+               }
        }
 }