1 using Microsoft.Build.Framework;
2 using System.Collections;
4 using System.Collections.Generic;
6 namespace MonoTests.Microsoft.Build.Tasks
8 internal class TestMessageLogger : ILogger
10 List<BuildMessageEventArgs> messages;
11 List<BuildEventArgs> errorsAndWarnings;
13 public TestMessageLogger ()
15 messages = new List<BuildMessageEventArgs> ();
16 errorsAndWarnings = new List<BuildEventArgs> ();
21 get { return messages.Count; }
24 public LoggerVerbosity Verbosity { get { return LoggerVerbosity.Normal; } set { } }
26 public string Parameters { get { return null; } set { } }
28 public void Initialize (IEventSource eventSource)
30 eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
31 eventSource.ErrorRaised += new BuildErrorEventHandler (ErrorHandler);
32 eventSource.WarningRaised += new BuildWarningEventHandler (WarningHandler);
35 public void Shutdown ()
39 private void MessageHandler (object sender, BuildMessageEventArgs args)
41 if (args.Message.StartsWith ("Using") == false)
45 private void ErrorHandler (object sender, BuildEventArgs args)
47 errorsAndWarnings.Add (args);
50 private void WarningHandler (object sender, BuildEventArgs args)
52 errorsAndWarnings.Add (args);
55 public int CheckHead (string text, MessageImportance importance)
58 return CheckHead (text, importance, out actual_msg);
61 public int CheckHead (string text, MessageImportance importance, out string actual_msg)
63 BuildMessageEventArgs actual;
64 actual_msg = String.Empty;
66 if (messages.Count > 0) {
67 actual = messages [0];
68 messages.RemoveAt (0);
72 actual_msg = actual.Message;
73 if (text == actual.Message && importance == actual.Importance)
81 public int CheckAny (string text, MessageImportance importance)
83 if (messages.Count <= 0)
87 for (int i = 0; i < messages.Count; i ++) {
88 BuildMessageEventArgs arg = messages [i];
89 if (text == arg.Message && importance == arg.Importance) {
99 messages.RemoveAt (foundAt);
103 public void DumpMessages ()
105 foreach (BuildEventArgs arg in errorsAndWarnings)
106 Console.WriteLine ("{0} {1}", (arg is BuildErrorEventArgs) ? "Err:" : "Warn:", arg.Message);
108 foreach (BuildMessageEventArgs arg in messages)
109 Console.WriteLine ("Msg: {0}", arg.Message);