add test for BuildManager.PendBuildRequest(). Looks like it's mostly for internal...
authorAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Mon, 18 Nov 2013 11:15:49 +0000 (20:15 +0900)
committerAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Tue, 3 Dec 2013 07:51:38 +0000 (16:51 +0900)
mcs/class/Microsoft.Build/Microsoft.Build.Execution/BuildManager.cs
mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/BuildManagerTest.cs

index bb402de0c05a4b82457aa1b90d0e5727270045c3..3f9bfdd9477d8dd8d9bc33c24f30876f5e911183 100644 (file)
@@ -58,6 +58,10 @@ namespace Microsoft.Build.Execution
                
                BuildParameters ongoing_build_parameters;
                BuildSubmission ongoing_build_submission;
+               
+               internal BuildParameters OngoingBuildParameters {
+                       get { return ongoing_build_parameters; }
+               }
 
                public void BeginBuild (BuildParameters parameters)
                {
@@ -129,6 +133,8 @@ namespace Microsoft.Build.Execution
 
                public BuildSubmission PendBuildRequest (BuildRequestData requestData)
                {
+                       if (ongoing_build_parameters == null)
+                               throw new InvalidOperationException ("This method cannot be called before calling BeginBuild method.");
                        var sub = new BuildSubmission (this, requestData);
                        submissions.Add (sub);
                        return sub;
index e53b3d6c24a647bbbe3cb84fdc45fd4af980847c..de44cb9810d9d97c12b964e114ec0d26ee2ba16a 100644 (file)
@@ -38,28 +38,28 @@ namespace MonoTests.Microsoft.Build.Execution
        [TestFixture]
        public class BuildManagerTest
        {
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void GetProjectInstanceForBuildNullFullPath ()
+               Project GetDummyProject ()
                {
                        string empty_project_xml = "<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' />";
                        var path = "file://localhost/foo.xml";
                        var xml = XmlReader.Create (new StringReader (empty_project_xml), null, path);
                        var root = ProjectRootElement.Create (xml);
-                       var proj = new Project (root);
+                       return new Project (root);
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void GetProjectInstanceForBuildNullFullPath ()
+               {
                        var manager = new BuildManager ();
-                       manager.GetProjectInstanceForBuild (proj);
+                       manager.GetProjectInstanceForBuild (GetDummyProject ());
                }
                
                [Test]
                [ExpectedException (typeof (ArgumentException))]
                public void GetProjectInstanceForBuildEmptyFullPath ()
                {
-                       string empty_project_xml = "<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' />";
-                       var path = "file://localhost/foo.xml";
-                       var xml = XmlReader.Create (new StringReader (empty_project_xml), null, path);
-                       var root = ProjectRootElement.Create (xml);
-                       var proj = new Project (root);
+                       var proj = GetDummyProject ();
                        proj.FullPath = "";
                        var manager = new BuildManager ();
                        manager.GetProjectInstanceForBuild (proj);
@@ -78,6 +78,18 @@ namespace MonoTests.Microsoft.Build.Execution
             var inst = manager.GetProjectInstanceForBuild (proj);
             Assert.AreEqual (inst, manager.GetProjectInstanceForBuild (proj), "#1");
                }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void PendBuildRequestBeforeBeginBuild ()
+               {
+                       string empty_project_xml = "<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' />";
+                       var path = "file://localhost/foo.xml";
+                       var xml = XmlReader.Create (new StringReader (empty_project_xml), null, path);
+                       var root = ProjectRootElement.Create (xml);
+                       var proj = new ProjectInstance (root);
+            new BuildManager ().PendBuildRequest (new BuildRequestData (proj, new string [0]));
+               }
        }
 }