Merge branch 'master' into msbuilddll2
[mono.git] / mcs / class / Microsoft.Build.Tasks / Test / Microsoft.Build.Tasks / TestMessageLogger.cs
index 29390e278b3bced165ec0828521d46bdc886a00d..c6ca1a23901239cb1404143e2dc931d009ef10c0 100644 (file)
@@ -3,6 +3,7 @@ using System.Collections;
 using System;
 using System.Collections.Generic;
 using NUnit.Framework;
+using System.Text;
 
 namespace MonoTests.Microsoft.Build.Tasks
 {
@@ -69,6 +70,9 @@ namespace MonoTests.Microsoft.Build.Tasks
                        set { task_finished = value; }
                }
 
+               public int WarningsCount { get; set; }
+               public int ErrorsCount { get; set; }
+
                public int Count
                {
                        get { return messages.Count; }
@@ -81,14 +85,19 @@ namespace MonoTests.Microsoft.Build.Tasks
                public void Initialize (IEventSource eventSource)
                {
                        eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
+
                        eventSource.ErrorRaised += new BuildErrorEventHandler (AllMessagesHandler);
+                       eventSource.ErrorRaised += (e,o) => ErrorsCount ++;
+
                        eventSource.WarningRaised += new BuildWarningEventHandler(AllMessagesHandler);
+                       eventSource.WarningRaised += (e,o) => WarningsCount ++;
+
                        eventSource.TargetStarted += delegate { target_started++; };
                        eventSource.TargetFinished += delegate { target_finished++; };
                        eventSource.TaskStarted += delegate { task_started++; };
                        eventSource.TaskFinished += delegate { task_finished++; };
-                       eventSource.ProjectStarted += delegate(object sender, ProjectStartedEventArgs args) { project_started++; Console.WriteLine ("Project started: {0}", args.ProjectFile); };
-                       eventSource.ProjectFinished += delegate (object sender, ProjectFinishedEventArgs args) { project_finished++; Console.WriteLine ("Project finished: {0}", args.ProjectFile); };
+                       eventSource.ProjectStarted += delegate(object sender, ProjectStartedEventArgs args) { project_started++; };
+                       eventSource.ProjectFinished += delegate (object sender, ProjectFinishedEventArgs args) { project_finished++; };
                        eventSource.BuildStarted += delegate { build_started ++; };
                        eventSource.BuildFinished += delegate { build_finished++; };
                }
@@ -120,6 +129,18 @@ namespace MonoTests.Microsoft.Build.Tasks
                        }
                }
 
+               public int WarningMessageCount {
+                       get {
+                               int count = 0, i = 0;
+                               while (i++ < messages.Count) {
+                                       var importance = messages [i - 1].Importance;
+                                       if (importance == MessageImportance.High)
+                                               count++;
+                               }
+                               return count;
+                       }
+               }
+
                public int CheckHead (string text, MessageImportance importance)
                {
                        string actual_msg;
@@ -182,6 +203,12 @@ namespace MonoTests.Microsoft.Build.Tasks
                                Console.WriteLine ("Msg: {0}", arg.Message);
                }
 
+               public void DumpMessages (StringBuilder sb)
+               {
+                       foreach (BuildEventArgs arg in all_messages)
+                               sb.AppendLine (string.Format ("Msg: {0}", arg.Message));
+               }
+
                public void CheckLoggedMessageHead (string expected, string id)
                {
                        string actual;
@@ -192,6 +219,13 @@ namespace MonoTests.Microsoft.Build.Tasks
                                Assert.AreEqual (expected, actual, id);
                }
 
+               public void CheckLoggedAny (string expected, MessageImportance importance, string id)
+               {
+                       int res = CheckAny (expected, importance);
+                       if (res != 0)
+                               Assert.Fail ("{0}: Expected message '{1}' was not emitted.", id, expected);
+               }
+
 
        }