X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FMicrosoft.Build.Engine%2FTest%2FMicrosoft.Build.BuildEngine%2FTargetTest.cs;h=738cd2a25878de66ac2f3684e2702e655cb8ef88;hb=e2812813f9cd0a9342982f42f8b8b9818132a7fb;hp=03edf3db2b09f01b3164203c8a92626c59c7e731;hpb=3b6058791c08d56a9c9d9b3cdb2af9c390ed555b;p=mono.git diff --git a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs index 03edf3db2b0..738cd2a2587 100644 --- a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs +++ b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs @@ -366,7 +366,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine { var type = Type.GetType ("Microsoft.Build.Evaluation.ProjectCollection, Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); var prop = type.GetProperty ("GlobalProjectCollection"); - var coll = prop.GetValue (null); + var coll = prop.GetValue (null, null); var loadProject = coll.GetType ().GetMethod ( "LoadProject", new Type[] { typeof (XmlReader), typeof (string) }); @@ -402,6 +402,11 @@ namespace MonoTests.Microsoft.Build.BuildEngine { } void ItemGroupInsideTarget (string xml, params string[] messages) + { + ItemGroupInsideTarget (xml, 1, messages); + } + + void ItemGroupInsideTarget (string xml, int expectedTargetCount, params string[] messages) { var logger = CreateLogger (xml); @@ -411,9 +416,10 @@ namespace MonoTests.Microsoft.Build.BuildEngine { for (int i = 0; i < messages.Length; i++) logger.CheckLoggedMessageHead (messages [i], i.ToString ()); Assert.AreEqual(0, logger.NormalMessageCount, "Extra messages found"); + Assert.AreEqual(0, logger.WarningMessageCount, "Extra warningmessages found"); - Assert.AreEqual(1, logger.TargetStarted, "TargetStarted count"); - Assert.AreEqual(1, logger.TargetFinished, "TargetFinished count"); + Assert.AreEqual(expectedTargetCount, logger.TargetStarted, "TargetStarted count"); + Assert.AreEqual(expectedTargetCount, logger.TargetFinished, "TargetFinished count"); Assert.AreEqual(messages.Length, logger.TaskStarted, "TaskStarted count"); Assert.AreEqual(messages.Length, logger.TaskFinished, "TaskFinished count"); } @@ -692,7 +698,95 @@ namespace MonoTests.Microsoft.Build.BuildEngine { ", "D"); } -#endif + [Test] + public void ItemGroupInsideTarget_Batching () + { + ItemGroupInsideTarget ( + @" + + + + + + + + ", "A", "B"); + } + + [Test] + public void ItemGroupInsideTarget_Condition () + { + ItemGroupInsideTarget ( + @" + + true + + + + + + + + + + + + ", "Sun", "Rain"); + } + + [Test] + public void PropertyGroupInsideTarget_Condition () + { + ItemGroupInsideTarget ( + @" + + + + + + + true + + + + + + + + ", "Rain"); + } + + [Test] + // Bug #14661 + public void ItemGroupInsideTarget_Expression_in_Metadata () + { + ItemGroupInsideTarget ( + @" + + + input1a;input1b + + + input2a;input2b + + + + + + + + + + <_Foo Include='%(Foo.Inputs)'> + %(Foo.Identity) + + + + ", + 3, "COMPILE: input1a;input1b - output1", "COMPILE: input2a;input2b - output2"); + } + + #endif [Test] public void TestTargetOutputsIncludingMetadata () @@ -870,5 +964,26 @@ namespace MonoTests.Microsoft.Build.BuildEngine { } #endif + [Test] + 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"); + } + } }