[Microsoft.Build.Engine] Add a testcase for bxc#1862
authorAndres G. Aragoneses <knocte@gmail.com>
Mon, 17 Sep 2012 11:27:35 +0000 (12:27 +0100)
committerAndres G. Aragoneses <knocte@gmail.com>
Mon, 17 Sep 2012 11:27:35 +0000 (12:27 +0100)
Marking the test as [Category("NotWorking")]

mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs

index 64da760c9a9cf5a50fd50eee19604b8e71c46507..378348c1f4afbc96463a2a582fa1125a4820578a 100644 (file)
@@ -77,7 +77,8 @@ namespace Microsoft.Build.BuildEngine {
                                                        "The element <OnError> must be last under element <Target>. Found element <Error> instead.");
 #if NET_3_5
                                        else if (xe.Name == "ItemGroup") {
-                                               //allow ItemGroups inside Targets in >= 3.5
+                                               //don't blow up for ItemGroups inside Targets in >= 3.5
+                                               // TODO: evaluate them (see https://bugzilla.xamarin.com/show_bug.cgi?id=1862 and test in TargetTest.cs )
                                                continue;
                                        }
 #endif
index dc5a56b024b97796dba5a8fe4c8a74272b11fe37..9a40fd342a8f714d53625c640953318592a6b12e 100644 (file)
@@ -352,6 +352,10 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                [Test]
                public void BuildProjectWithItemGroupInsideTarget()
                {
+                       ItemGroupInsideATarget ();
+               }
+
+               private MonoTests.Microsoft.Build.Tasks.TestMessageLogger ItemGroupInsideATarget() {
                        var engine = new Engine(Consts.BinPath);
                        var project = engine.CreateNewProject();
                        var projectXml = GetProjectXmlWithItemGroupInsideATarget ();
@@ -367,6 +371,8 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                logger.DumpMessages ();
                                Assert.Fail("Build failed");
                        }
+
+                       return logger;
                }
 
                private string GetProjectXmlWithItemGroupInsideATarget ()
@@ -386,6 +392,33 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </Target>
                                </Project>";
                }
+
+               [Test]
+               [Category ("NotWorking")] //https://bugzilla.xamarin.com/show_bug.cgi?id=1862
+               public void BuildProjectOutputWithItemGroupInsideTarget()
+               {
+                       var logger = ItemGroupInsideATarget ();
+
+                       try
+                       {
+                               Assert.AreEqual(3, logger.NormalMessageCount, "Expected number of messages");
+                               logger.CheckLoggedMessageHead("apple", "A1");
+                               logger.CheckLoggedMessageHead("apricot", "A2");
+                               logger.CheckLoggedMessageHead("raspberry", "A3");
+                               Assert.AreEqual(0, logger.NormalMessageCount, "Extra messages found");
+
+                               Assert.AreEqual(1, logger.TargetStarted, "TargetStarted count");
+                               Assert.AreEqual(1, logger.TargetFinished, "TargetFinished count");
+                               Assert.AreEqual(3, logger.TaskStarted, "TaskStarted count");
+                               Assert.AreEqual(3, logger.TaskFinished, "TaskFinished count");
+
+                       }
+                       catch (AssertionException)
+                       {
+                               logger.DumpMessages();
+                               throw;
+                       }
+               }
 #endif
 
                [Test]