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> all_messages;
12 int target_started, target_finished;
13 int task_started, task_finished;
15 public TestMessageLogger ()
17 messages = new List<BuildMessageEventArgs> ();
18 all_messages = new List<BuildEventArgs> ();
21 public int TargetFinished
23 get { return target_finished; }
24 set { target_finished = value; }
27 public int TargetStarted
29 get { return target_started; }
30 set { target_started = value; }
33 public int TaskStarted
35 get { return task_started; }
36 set { task_started = value; }
39 public int TaskFinished
41 get { return task_finished; }
42 set { task_finished = value; }
47 get { return messages.Count; }
50 public LoggerVerbosity Verbosity { get { return LoggerVerbosity.Normal; } set { } }
52 public string Parameters { get { return null; } set { } }
54 public void Initialize (IEventSource eventSource)
56 eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
57 eventSource.ErrorRaised += new BuildErrorEventHandler (AllMessagesHandler);
58 eventSource.WarningRaised += new BuildWarningEventHandler(AllMessagesHandler);
59 eventSource.TargetStarted += delegate { target_started++; };
60 eventSource.TargetFinished += delegate { target_finished++; };
61 eventSource.TaskStarted += delegate { task_started++; };
62 eventSource.TaskFinished += delegate { task_finished++; };
65 public void Shutdown ()
69 private void MessageHandler (object sender, BuildMessageEventArgs args)
71 if (args.Message.StartsWith ("Using") == false)
73 all_messages.Add (args);
76 private void AllMessagesHandler (object sender, BuildEventArgs args)
78 all_messages.Add (args);
81 public int NormalMessageCount {
85 while (i ++ < messages.Count)
86 if (messages [i - 1].Importance == MessageImportance.Normal)
92 public int CheckHead (string text, MessageImportance importance)
95 return CheckHead (text, importance, out actual_msg);
98 public int CheckHead (string text, MessageImportance importance, out string actual_msg)
100 BuildMessageEventArgs actual;
101 actual_msg = String.Empty;
103 if (messages.Count > 0) {
104 //find first @importance level message
106 while (messages [i].Importance != importance && i < messages.Count)
109 actual = messages [i];
110 messages.RemoveAt (i);
114 actual_msg = actual.Message;
115 if (text == actual.Message && importance == actual.Importance)
122 // 1 - msg not found,
123 public int CheckAny (string text, MessageImportance importance)
125 if (messages.Count <= 0)
129 for (int i = 0; i < messages.Count; i ++) {
130 BuildMessageEventArgs arg = messages [i];
131 if (text == arg.Message && importance == arg.Importance) {
141 messages.RemoveAt (foundAt);
145 public void DumpMessages ()
147 foreach (BuildEventArgs arg in all_messages)
148 Console.WriteLine ("Msg: {0}", arg.Message);