You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(142) |
Jun
(27) |
Jul
(122) |
Aug
(36) |
Sep
(59) |
Oct
(86) |
Nov
(140) |
Dec
(80) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(52) |
Feb
(153) |
Mar
(118) |
Apr
(143) |
May
(123) |
Jun
(64) |
Jul
(282) |
Aug
(469) |
Sep
(56) |
Oct
(201) |
Nov
(182) |
Dec
(31) |
| 2005 |
Jan
(229) |
Feb
(316) |
Mar
(187) |
Apr
(130) |
May
(190) |
Jun
(154) |
Jul
(148) |
Aug
(133) |
Sep
(209) |
Oct
(234) |
Nov
(100) |
Dec
(40) |
| 2006 |
Jan
(1) |
Feb
(87) |
Mar
(73) |
Apr
(126) |
May
(58) |
Jun
(8) |
Jul
(12) |
Aug
(14) |
Sep
(22) |
Oct
(33) |
Nov
(4) |
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
|
2
(8) |
3
|
4
|
5
|
6
(1) |
|
7
|
8
(24) |
9
(18) |
10
(24) |
11
(11) |
12
(4) |
13
|
|
14
|
15
(14) |
16
|
17
(4) |
18
(1) |
19
|
20
|
|
21
(11) |
22
(1) |
23
(4) |
24
(2) |
25
(6) |
26
|
27
|
|
28
|
29
|
30
|
31
|
|
|
|
|
From: Owen R. <exo...@us...> - 2005-08-25 05:31:13
|
Update of /cvsroot/ccnet/ccnet/project/core/sourcecontrol In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11952/project/core/sourcecontrol Modified Files: QuietPeriod.cs Log Message: backing out some changed to quietperiod in order to figure out problem on server Index: QuietPeriod.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/sourcecontrol/QuietPeriod.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** QuietPeriod.cs 25 Aug 2005 04:12:41 -0000 1.8 --- QuietPeriod.cs 25 Aug 2005 05:31:04 -0000 1.9 *************** *** 60,64 **** private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! return SecondsUntilNextBuild(modifications, to) > 0; } --- 60,65 ---- private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! // return SecondsUntilNextBuild(modifications, to) > 0; ! return false; } |
|
From: Owen R. <exo...@us...> - 2005-08-25 05:31:13
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11952/project/UnitTests/Core/SourceControl Modified Files: QuietPeriodTest.cs Log Message: backing out some changed to quietperiod in order to figure out problem on server Index: QuietPeriodTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl/QuietPeriodTest.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** QuietPeriodTest.cs 25 Aug 2005 04:12:41 -0000 1.5 --- QuietPeriodTest.cs 25 Aug 2005 05:31:04 -0000 1.6 *************** *** 54,58 **** } ! [Test] public void ShouldCheckModificationsUntilThereAreNoModsInModificationDelay() { --- 54,58 ---- } ! [Test, Ignore("too support problem on hanging tests on server")] public void ShouldCheckModificationsUntilThereAreNoModsInModificationDelay() { |
|
From: Owen R. <exo...@us...> - 2005-08-25 04:12:49
|
Update of /cvsroot/ccnet/ccnet/project/core/sourcecontrol In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv538/project/core/sourcecontrol Modified Files: QuietPeriod.cs Log Message: quiet period test seems to hang on the build server Index: QuietPeriod.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/sourcecontrol/QuietPeriod.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** QuietPeriod.cs 25 Aug 2005 03:40:42 -0000 1.7 --- QuietPeriod.cs 25 Aug 2005 04:12:41 -0000 1.8 *************** *** 26,34 **** while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! double secondsUntilNextBuild = SecondsUntilNextBuild(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); Log.Info(string.Format("Modifications have been detected in the quiet period. Sleeping for {0} seconds until {1}.", secondsUntilNextBuild, nextBuildTime)); ! dtProvider.Sleep((int) (secondsUntilNextBuild*1000)); to.StartTime = nextBuildTime; modifications = GetMods(sourceControl, from, to); --- 26,34 ---- while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! int secondsUntilNextBuild = SecondsUntilNextBuild(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); Log.Info(string.Format("Modifications have been detected in the quiet period. Sleeping for {0} seconds until {1}.", secondsUntilNextBuild, nextBuildTime)); ! dtProvider.Sleep(secondsUntilNextBuild*1000); to.StartTime = nextBuildTime; modifications = GetMods(sourceControl, from, to); |
|
From: Owen R. <exo...@us...> - 2005-08-25 04:12:49
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv538/project/UnitTests/Core/SourceControl Modified Files: QuietPeriodTest.cs Log Message: quiet period test seems to hang on the build server Index: QuietPeriodTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl/QuietPeriodTest.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** QuietPeriodTest.cs 25 Aug 2005 03:40:42 -0000 1.4 --- QuietPeriodTest.cs 25 Aug 2005 04:12:41 -0000 1.5 *************** *** 87,91 **** } ! [Test] public void ShouldHandleTimeDifferencesThatAreLessThanOneMillisecondFromModificationDelay() { --- 87,91 ---- } ! [Test, Ignore("seems to hang on the build server")] public void ShouldHandleTimeDifferencesThatAreLessThanOneMillisecondFromModificationDelay() { |
|
From: Owen R. <exo...@us...> - 2005-08-25 03:40:50
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27730/project/UnitTests/Core/SourceControl Modified Files: QuietPeriodTest.cs Log Message: /CCNET-523 : fixed problem with quiet period -- when their is less than 1 second until the next build, the algorithm was getting stuck in an infinite loop Index: QuietPeriodTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/SourceControl/QuietPeriodTest.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** QuietPeriodTest.cs 10 Jul 2005 02:00:13 -0000 1.3 --- QuietPeriodTest.cs 25 Aug 2005 03:40:42 -0000 1.4 *************** *** 26,36 **** mods = new Modification[1]; mods[0] = new Modification(); ! mods[0].ModifiedTime = new DateTime(2004, 12, 1, 12, 1, 30); ! mockSourceControl = new DynamicMock(typeof(ISourceControl)); mockSourceControl.Strict = true; ! mockDateTimeProvider = new DynamicMock(typeof(DateTimeProvider)); mockDateTimeProvider.Strict = true; ! quietPeriod = new QuietPeriod((DateTimeProvider)mockDateTimeProvider.MockInstance); } --- 26,36 ---- mods = new Modification[1]; mods[0] = new Modification(); ! mods[0].ModifiedTime = new DateTime(2004, 12, 1, 12, 1, 30); ! mockSourceControl = new DynamicMock(typeof (ISourceControl)); mockSourceControl.Strict = true; ! mockDateTimeProvider = new DynamicMock(typeof (DateTimeProvider)); mockDateTimeProvider.Strict = true; ! quietPeriod = new QuietPeriod((DateTimeProvider) mockDateTimeProvider.MockInstance); } *************** *** 38,42 **** protected void VerifyMock() { ! mockSourceControl.Verify(); mockDateTimeProvider.Verify(); } --- 38,42 ---- protected void VerifyMock() { ! mockSourceControl.Verify(); mockDateTimeProvider.Verify(); } *************** *** 46,50 **** { mockSourceControl.ExpectAndReturn("GetModifications", mods, from, to); ! mockDateTimeProvider.ExpectNoCall("Sleep", typeof(int)); quietPeriod.ModificationDelaySeconds = 0; --- 46,50 ---- { mockSourceControl.ExpectAndReturn("GetModifications", mods, from, to); ! mockDateTimeProvider.ExpectNoCall("Sleep", typeof (int)); quietPeriod.ModificationDelaySeconds = 0; *************** *** 79,83 **** { mockSourceControl.ExpectAndReturn("GetModifications", null, from, to); ! mockDateTimeProvider.ExpectNoCall("Sleep", typeof(int)); quietPeriod.ModificationDelaySeconds = 60; --- 79,83 ---- { mockSourceControl.ExpectAndReturn("GetModifications", null, from, to); ! mockDateTimeProvider.ExpectNoCall("Sleep", typeof (int)); quietPeriod.ModificationDelaySeconds = 60; *************** *** 86,89 **** --- 86,103 ---- Assert.AreEqual(new Modification[0], actualMods); } + + [Test] + public void ShouldHandleTimeDifferencesThatAreLessThanOneMillisecondFromModificationDelay() + { + to = IntegrationResultMother.CreateSuccessful(mods[0].ModifiedTime.AddSeconds(60).AddTicks(-1)); + + mockSourceControl.ExpectAndReturn("GetModifications", mods, from, to); + mockDateTimeProvider.ExpectNoCall("Sleep", typeof (int)); + + quietPeriod.ModificationDelaySeconds = 60; + Modification[] actualMods = quietPeriod.GetModifications((ISourceControl) mockSourceControl.MockInstance, from, to); + + Assert.AreEqual(mods, actualMods); + } } } \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-25 03:40:50
|
Update of /cvsroot/ccnet/ccnet/project/core/sourcecontrol In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27730/project/core/sourcecontrol Modified Files: QuietPeriod.cs Log Message: /CCNET-523 : fixed problem with quiet period -- when their is less than 1 second until the next build, the algorithm was getting stuck in an infinite loop Index: QuietPeriod.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/sourcecontrol/QuietPeriod.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** QuietPeriod.cs 24 Aug 2005 12:30:16 -0000 1.6 --- QuietPeriod.cs 25 Aug 2005 03:40:42 -0000 1.7 *************** *** 26,33 **** while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! double secondsUntilNextBuild = ModificationDelaySeconds - SecondsSinceLastModification(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); ! Log.Info(string.Format("Modifications have been detected in the quiet period. Sleep for {0} seconds until {1}.", secondsUntilNextBuild, nextBuildTime)); dtProvider.Sleep((int) (secondsUntilNextBuild*1000)); to.StartTime = nextBuildTime; --- 26,33 ---- while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! double secondsUntilNextBuild = SecondsUntilNextBuild(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); ! Log.Info(string.Format("Modifications have been detected in the quiet period. Sleeping for {0} seconds until {1}.", secondsUntilNextBuild, nextBuildTime)); dtProvider.Sleep((int) (secondsUntilNextBuild*1000)); to.StartTime = nextBuildTime; *************** *** 60,69 **** private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! return SecondsSinceLastModification(modifications, to) < ModificationDelaySeconds; ! // return ModificationDelaySeconds != TurnOffQuietPeriod && SecondsSinceLastBuild(modifications, to) < ModificationDelaySeconds; } - // -60 < 180 private double SecondsSinceLastModification(Modification[] modifications, DateTime to) { --- 60,71 ---- private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! return SecondsUntilNextBuild(modifications, to) > 0; } + private int SecondsUntilNextBuild(Modification[] modifications, DateTime to) + { + return (int) (ModificationDelaySeconds - SecondsSinceLastModification(modifications, to)); + } private double SecondsSinceLastModification(Modification[] modifications, DateTime to) { |
|
From: Owen R. <exo...@us...> - 2005-08-24 12:30:25
|
Update of /cvsroot/ccnet/ccnet/project/core/sourcecontrol In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20212/project/core/sourcecontrol Modified Files: QuietPeriod.cs Log Message: improving instrumentation in quiet period slightly Index: QuietPeriod.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/sourcecontrol/QuietPeriod.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** QuietPeriod.cs 25 Jul 2005 01:30:18 -0000 1.5 --- QuietPeriod.cs 24 Aug 2005 12:30:16 -0000 1.6 *************** *** 26,33 **** while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! double secondsUntilNextBuild = ModificationDelaySeconds - SecondsSinceLastBuild(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); ! Log.Info("Modifications have been detected in the quiet delay; waiting until " + nextBuildTime); dtProvider.Sleep((int) (secondsUntilNextBuild*1000)); to.StartTime = nextBuildTime; --- 26,33 ---- while (ModificationsAreDetectedInQuietPeriod(modifications, nextBuildTime)) { ! double secondsUntilNextBuild = ModificationDelaySeconds - SecondsSinceLastModification(modifications, nextBuildTime); nextBuildTime = nextBuildTime.AddSeconds(secondsUntilNextBuild); ! Log.Info(string.Format("Modifications have been detected in the quiet period. Sleep for {0} seconds until {1}.", secondsUntilNextBuild, nextBuildTime)); dtProvider.Sleep((int) (secondsUntilNextBuild*1000)); to.StartTime = nextBuildTime; *************** *** 60,68 **** private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! return SecondsSinceLastBuild(modifications, to) < ModificationDelaySeconds; // return ModificationDelaySeconds != TurnOffQuietPeriod && SecondsSinceLastBuild(modifications, to) < ModificationDelaySeconds; } ! private double SecondsSinceLastBuild(Modification[] modifications, DateTime to) { return (to - GetMostRecentModificationDate(modifications)).TotalSeconds; --- 60,70 ---- private bool ModificationsAreDetectedInQuietPeriod(Modification[] modifications, DateTime to) { ! return SecondsSinceLastModification(modifications, to) < ModificationDelaySeconds; // return ModificationDelaySeconds != TurnOffQuietPeriod && SecondsSinceLastBuild(modifications, to) < ModificationDelaySeconds; } ! ! // -60 < 180 ! private double SecondsSinceLastModification(Modification[] modifications, DateTime to) { return (to - GetMostRecentModificationDate(modifications)).TotalSeconds; |
|
From: Owen R. <exo...@us...> - 2005-08-24 01:50:02
|
Update of /cvsroot/ccnet/ccnet/project/core/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27139/project/core/util Modified Files: XmlFragmentWriter.cs Log Message: CCNET-486 : handle case where xml with unclosed tags ends in carriage return Index: XmlFragmentWriter.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/util/XmlFragmentWriter.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** XmlFragmentWriter.cs 25 Jul 2005 01:30:18 -0000 1.3 --- XmlFragmentWriter.cs 24 Aug 2005 01:49:38 -0000 1.4 *************** *** 45,48 **** --- 45,49 ---- XmlFragmentWriter writer = CreateXmlWriter(buffer); writer.WriteNodeBase(reader, defattr); + writer.Close(); WriteRaw(buffer.ToString()); } |
|
From: Owen R. <exo...@us...> - 2005-08-23 11:26:05
|
Update of /cvsroot/ccnet/ccnet/project/core/tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3060/project/core/tasks Modified Files: MergeFilesTask.cs Log Message: CCNET-486 : handle case where xml with unclosed tags ends in carriage return Index: MergeFilesTask.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/tasks/MergeFilesTask.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** MergeFilesTask.cs 24 Feb 2005 17:36:57 -0000 1.13 --- MergeFilesTask.cs 23 Aug 2005 11:25:56 -0000 1.14 *************** *** 1,6 **** - using System; - using System.Collections; using System.IO; - using System.Text; using Exortech.NetReflector; using ThoughtWorks.CruiseControl.Core.Util; --- 1,3 ---- *************** *** 39,86 **** } } - - public string MergeFilesForPresentation - { - get - { - StringBuilder combined = new StringBuilder(); - bool isFirst = true; - foreach (string file in MergeFiles) - { - if (! isFirst) - { - combined.Append(Environment.NewLine); - } - combined.Append(file); - isFirst = false; - } - return combined.ToString(); - } - set - { - if (value == null || value == string.Empty) - { - MergeFiles = new string[0]; - return; - } - ArrayList files = new ArrayList(); - using (StringReader reader = new StringReader(value)) - { - while (true) - { - string line = reader.ReadLine(); - if (line != null) - { - files.Add(line); - } - else - { - break; - } - } - } - MergeFiles = (string[]) files.ToArray(typeof (string)); - } - } } } \ No newline at end of file --- 36,39 ---- |
|
From: Owen R. <exo...@us...> - 2005-08-23 11:26:04
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/Publishers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3060/project/UnitTests/Core/Publishers Modified Files: XmlIntegrationResultWriterTest.cs Log Message: CCNET-486 : handle case where xml with unclosed tags ends in carriage return Index: XmlIntegrationResultWriterTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Publishers/XmlIntegrationResultWriterTest.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** XmlIntegrationResultWriterTest.cs 15 Jun 2005 02:20:15 -0000 1.7 --- XmlIntegrationResultWriterTest.cs 23 Aug 2005 11:25:56 -0000 1.8 *************** *** 10,26 **** namespace ThoughtWorks.CruiseControl.UnitTests.Core.Publishers { ! [TestFixture] ! public class XmlIntegrationResultWriterTest : XmlLogFixture ! { ! public const string TEMP_SUBDIR = "XmlIntegrationResultWriterTest"; ! private StringWriter buffer; ! private XmlIntegrationResultWriter writer; ! [SetUp] ! protected void SetUp() ! { ! buffer = new StringWriter(); ! writer = new XmlIntegrationResultWriter(buffer); ! } [Test] --- 10,26 ---- namespace ThoughtWorks.CruiseControl.UnitTests.Core.Publishers { ! [TestFixture] ! public class XmlIntegrationResultWriterTest : XmlLogFixture ! { ! public const string TEMP_SUBDIR = "XmlIntegrationResultWriterTest"; ! private StringWriter buffer; ! private XmlIntegrationResultWriter writer; ! [SetUp] ! protected void SetUp() ! { ! buffer = new StringWriter(); ! writer = new XmlIntegrationResultWriter(buffer); ! } [Test] *************** *** 35,93 **** } ! [Test] ! public void WriteModifications() ! { ! Modification[] mods = CreateModifications(); ! string expected = string.Format("<modifications>{0}</modifications>", mods[0].ToXml()); ! writer.WriteModifications(mods); ! Assert.AreEqual(expected, buffer.ToString()); ! } ! [Test] ! public void WriteExceptionWithEmbeddedCDATA() ! { ! ExceptionTest(new CruiseControlException("message with <xml><![CDATA[<foo/>]]></xml>"), "message with <xml><![CDATA[<foo/>] ]></xml>"); ! } ! [Test] ! public void WriteException() ! { ! ExceptionTest(new CruiseControlException("test exception")); ! } ! private void ExceptionTest(Exception exception) ! { ! ExceptionTest(exception, exception.Message); ! } ! private void ExceptionTest(Exception exception, string exceptionMessage) ! { ! IntegrationResult result = IntegrationResultMother.Create(false); ! result.ExceptionResult = exception; ! writer.Write(result); ! string actual = buffer.ToString(); ! Assert.IsTrue(actual.IndexOf(exceptionMessage) > 0); ! Assert.IsTrue(actual.IndexOf(exception.GetType().Name) > 0); ! XmlUtil.VerifyXmlIsWellFormed(actual); ! } ! [Test] ! public void WriteExceptionWithEmbeddedXml() ! { ! ExceptionTest(new CruiseControlException("message with <xml><foo/></xml>")); ! } ! [Test] ! public void WriteIntegrationResult() ! { ! IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] --- 35,93 ---- } ! [Test] ! public void WriteModifications() ! { ! Modification[] mods = CreateModifications(); ! string expected = string.Format("<modifications>{0}</modifications>", mods[0].ToXml()); ! writer.WriteModifications(mods); ! Assert.AreEqual(expected, buffer.ToString()); ! } ! [Test] ! public void WriteExceptionWithEmbeddedCDATA() ! { ! ExceptionTest(new CruiseControlException("message with <xml><![CDATA[<foo/>]]></xml>"), "message with <xml><![CDATA[<foo/>] ]></xml>"); ! } ! [Test] ! public void WriteException() ! { ! ExceptionTest(new CruiseControlException("test exception")); ! } ! private void ExceptionTest(Exception exception) ! { ! ExceptionTest(exception, exception.Message); ! } ! private void ExceptionTest(Exception exception, string exceptionMessage) ! { ! IntegrationResult result = IntegrationResultMother.Create(false); ! result.ExceptionResult = exception; ! writer.Write(result); ! string actual = buffer.ToString(); ! Assert.IsTrue(actual.IndexOf(exceptionMessage) > 0); ! Assert.IsTrue(actual.IndexOf(exception.GetType().Name) > 0); ! XmlUtil.VerifyXmlIsWellFormed(actual); ! } ! [Test] ! public void WriteExceptionWithEmbeddedXml() ! { ! ExceptionTest(new CruiseControlException("message with <xml><foo/></xml>")); ! } ! [Test] ! public void WriteIntegrationResult() ! { ! IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] *************** *** 96,122 **** IntegrationResult result = IntegrationResultMother.CreateSuccessful(); result.AddTaskResult("<foo>"); ! writer.Write(result); AssertContains("<![CDATA[<foo>]]>", buffer.ToString()); } ! [Test] ! public void WriteIntegrationResultOutput() ! { ! IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! result.AddTaskResult("<tag></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, "<tag></tag>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } ! [Test] ! public void WriteIntegrationResultOutputWithEmbeddedCDATA() ! { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); result.AddTaskResult("<tag><![CDATA[a b <c>]]></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, "<tag><![CDATA[a b <c>]]></tag>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] --- 96,122 ---- IntegrationResult result = IntegrationResultMother.CreateSuccessful(); result.AddTaskResult("<foo>"); ! writer.Write(result); AssertContains("<![CDATA[<foo>]]>", buffer.ToString()); } ! [Test] ! public void WriteIntegrationResultOutput() ! { ! IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! result.AddTaskResult("<tag></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, "<tag></tag>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } ! [Test] ! public void WriteIntegrationResultOutputWithEmbeddedCDATA() ! { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); result.AddTaskResult("<tag><![CDATA[a b <c>]]></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, "<tag><![CDATA[a b <c>]]></tag>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] *************** *** 124,128 **** { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! StringWriter swWithoutNull = new StringWriter(); swWithoutNull.WriteLine("<tag><![CDATA["); --- 124,128 ---- { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); ! StringWriter swWithoutNull = new StringWriter(); swWithoutNull.WriteLine("<tag><![CDATA["); *************** *** 135,161 **** } ! [Test] ! public void WriteIntegrationResultOutputWithNullCharacterInCDATA() ! { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); StringWriter swWithNull = new StringWriter(); ! swWithNull.WriteLine("<tag><![CDATA["); ! swWithNull.WriteLine("This is a line with a null in it\0"); ! swWithNull.WriteLine("]]></tag>"); result.AddTaskResult(swWithNull.ToString()); string expectedResult = CreateExpectedBuildXml(result, swWithNull.ToString()); Assert.AreEqual(expectedResult.Replace("\0", string.Empty), GenerateBuildOutput(result)); ! } ! [Test] ! public void WriteOutputWithInvalidXml() ! { ! IntegrationResult result = new IntegrationResult(); ! result.AddTaskResult("<tag><c></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, @"<![CDATA[<tag><c></tag>]]>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] --- 135,161 ---- } ! [Test] ! public void WriteIntegrationResultOutputWithNullCharacterInCDATA() ! { IntegrationResult result = IntegrationResultMother.CreateSuccessful(); StringWriter swWithNull = new StringWriter(); ! swWithNull.WriteLine("<tag><![CDATA["); ! swWithNull.WriteLine("This is a line with a null in it\0"); ! swWithNull.WriteLine("]]></tag>"); result.AddTaskResult(swWithNull.ToString()); string expectedResult = CreateExpectedBuildXml(result, swWithNull.ToString()); Assert.AreEqual(expectedResult.Replace("\0", string.Empty), GenerateBuildOutput(result)); ! } ! [Test] ! public void WriteOutputWithInvalidXml() ! { ! IntegrationResult result = new IntegrationResult(); ! result.AddTaskResult("<tag><c></tag>"); ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result, @"<![CDATA[<tag><c></tag>]]>"), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] *************** *** 170,182 **** } ! [Test] ! public void WriteFailedIntegrationResult() ! { ! IntegrationResult result = new IntegrationResult(); ! result.Status = IntegrationStatus.Failure; ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] --- 170,182 ---- } ! [Test] ! public void WriteFailedIntegrationResult() ! { ! IntegrationResult result = new IntegrationResult(); ! result.Status = IntegrationStatus.Failure; ! string output = GenerateBuildOutput(result); ! Assert.AreEqual(CreateExpectedBuildXml(result), output); XmlUtil.VerifyXmlIsWellFormed(output); ! } [Test] *************** *** 222,261 **** } ! private IntegrationResult CreateIntegrationResult(IntegrationStatus status, bool addModifications) ! { ! IntegrationResult result = IntegrationResultMother.Create(status); result.ProjectName = "proj"; ! result.Label = "1"; ! result.Status = status; ! if (addModifications) ! { ! result.Modifications = new Modification[1]; ! result.Modifications[0] = new Modification(); ! result.Modifications[0].ModifiedTime = new DateTime(2002, 2, 3); ! } ! return result; ! } ! private string GenerateBuildOutput(IntegrationResult input) ! { ! writer.WriteBuildElement(input); ! return buffer.ToString(); ! } ! private Modification[] CreateModifications() ! { ! Modification result = new Modification(); ! result.Type = "added"; ! result.FileName = "ntserver_protocol.dll"; ! result.FolderName = "tools"; ! result.ModifiedTime = new DateTime(2002, 9, 5, 11, 38, 30); ! result.UserName = "owen"; ! result.EmailAddress = ""; ! result.Comment = "ccnet self-admin config folder files"; ! Modification[] mods = new Modification[1]; ! mods[0] = result; ! return mods; ! } ! } } \ No newline at end of file --- 222,261 ---- } ! private IntegrationResult CreateIntegrationResult(IntegrationStatus status, bool addModifications) ! { ! IntegrationResult result = IntegrationResultMother.Create(status); result.ProjectName = "proj"; ! result.Label = "1"; ! result.Status = status; ! if (addModifications) ! { ! result.Modifications = new Modification[1]; ! result.Modifications[0] = new Modification(); ! result.Modifications[0].ModifiedTime = new DateTime(2002, 2, 3); ! } ! return result; ! } ! private string GenerateBuildOutput(IntegrationResult input) ! { ! writer.WriteBuildElement(input); ! return buffer.ToString(); ! } ! private Modification[] CreateModifications() ! { ! Modification result = new Modification(); ! result.Type = "added"; ! result.FileName = "ntserver_protocol.dll"; ! result.FolderName = "tools"; ! result.ModifiedTime = new DateTime(2002, 9, 5, 11, 38, 30); ! result.UserName = "owen"; ! result.EmailAddress = ""; ! result.Comment = "ccnet self-admin config folder files"; ! Modification[] mods = new Modification[1]; ! mods[0] = result; ! return mods; ! } ! } } \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-23 11:26:04
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/Util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3060/project/UnitTests/Core/Util Modified Files: XmlFragmentWriterTest.cs Log Message: CCNET-486 : handle case where xml with unclosed tags ends in carriage return Index: XmlFragmentWriterTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Util/XmlFragmentWriterTest.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** XmlFragmentWriterTest.cs 25 Jul 2005 01:30:15 -0000 1.3 --- XmlFragmentWriterTest.cs 23 Aug 2005 11:25:56 -0000 1.4 *************** *** 1,5 **** --- 1,7 ---- + using System; using System.IO; using System.Xml; using NUnit.Framework; + using ThoughtWorks.CruiseControl.Core.Tasks; using ThoughtWorks.CruiseControl.Core.Util; *************** *** 91,94 **** --- 93,114 ---- Assert.AreEqual(string.Format("<![CDATA[{0}]]>", text), baseWriter.ToString()); } + + [Test] + public void XmlWithoutClosingElementShouldEncloseInCDATA() + { + string text = "<a><b><c/></b>"; + writer.WriteNode(text); + Assert.AreEqual(string.Format("<![CDATA[{0}]]>", text), baseWriter.ToString()); + } + + [Test] + public void UnclosedXmlFragmentEndingInCarriageReturnShouldCloseOpenElement() + { + string xml = @"<a> + "; + writer.WriteNode(xml); + Assert.AreEqual(@"<a> + </a>", baseWriter.ToString()); + } } } |
|
From: Owen R. <exo...@us...> - 2005-08-23 11:26:04
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/Tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3060/project/UnitTests/Core/Tasks Modified Files: MergeFileTaskTest.cs Log Message: CCNET-486 : handle case where xml with unclosed tags ends in carriage return Index: MergeFileTaskTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Tasks/MergeFileTaskTest.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MergeFileTaskTest.cs 7 Apr 2005 15:44:52 -0000 1.4 --- MergeFileTaskTest.cs 23 Aug 2005 11:25:56 -0000 1.5 *************** *** 13,26 **** { private const string TEMP_DIR = "MergeFileTaskTest"; ! private IntegrationResult _result; ! private MergeFilesTask _task; ! private string _fullPathToTempDir; [SetUp] public void CreateTempDir() { ! _fullPathToTempDir = TempFileUtil.CreateTempDir(TEMP_DIR); ! _task = new MergeFilesTask(); ! _result = new IntegrationResult(); } --- 13,26 ---- { private const string TEMP_DIR = "MergeFileTaskTest"; ! private IntegrationResult result; ! private MergeFilesTask task; ! private string fullPathToTempDir; [SetUp] public void CreateTempDir() { ! fullPathToTempDir = TempFileUtil.CreateTempDir(TEMP_DIR); ! task = new MergeFilesTask(); ! result = new IntegrationResult(); } *************** *** 31,38 **** string tempFile = TempFileUtil.CreateTempFile(TEMP_DIR, "MergeFileTask", fileData); ! _task.MergeFiles = new string[] {tempFile}; ! _task.Run(_result); ! Assert.AreEqual(fileData, _result.TaskOutput); } --- 31,38 ---- string tempFile = TempFileUtil.CreateTempFile(TEMP_DIR, "MergeFileTask", fileData); ! task.MergeFiles = new string[] {tempFile}; ! task.Run(result); ! Assert.AreEqual(fileData, result.TaskOutput); } *************** *** 46,52 **** TempFileUtil.CreateTempXmlFile(TEMP_DIR + "\\sub", "foo.xml", "<foo bar=\"9\">bat</foo>"); ! _task.MergeFiles = new string[] {_fullPathToTempDir + @"\*.xml"}; ! _task.Run(_result); ! Assert.AreEqual(fileData, _result.TaskOutput); } --- 46,52 ---- TempFileUtil.CreateTempXmlFile(TEMP_DIR + "\\sub", "foo.xml", "<foo bar=\"9\">bat</foo>"); ! task.MergeFiles = new string[] {fullPathToTempDir + @"\*.xml"}; ! task.Run(result); ! Assert.AreEqual(fileData, result.TaskOutput); } *************** *** 60,67 **** TempFileUtil.CreateTempXmlFile(TEMP_DIR + "\\sub", "foo.xml", "<foo bar=\"9\">bat</foo>"); ! _result.WorkingDirectory = _fullPathToTempDir; ! _task.MergeFiles = new string[] {@"*.xml"}; ! _task.Run(_result); ! Assert.AreEqual(fileData, _result.TaskOutput); } --- 60,67 ---- TempFileUtil.CreateTempXmlFile(TEMP_DIR + "\\sub", "foo.xml", "<foo bar=\"9\">bat</foo>"); ! result.WorkingDirectory = fullPathToTempDir; ! task.MergeFiles = new string[] {@"*.xml"}; ! task.Run(result); ! Assert.AreEqual(fileData, result.TaskOutput); } *************** *** 78,89 **** TempFileUtil.CreateTempXmlFile(TEMP_DIR + @"\sub", "foo.xml", subFooXmlFileData); ! _task.MergeFiles = new string[] { ! _fullPathToTempDir + @"\sub" + @"\*.xml", ! _fullPathToTempDir + @"\foo.*" }; ! _task.Run(_result); ! IList list = _result.TaskResults; Assert.AreEqual(3, list.Count); AssertDataContainedInList(list, fooXmlFileData); --- 78,89 ---- TempFileUtil.CreateTempXmlFile(TEMP_DIR + @"\sub", "foo.xml", subFooXmlFileData); ! task.MergeFiles = new string[] { ! fullPathToTempDir + @"\sub" + @"\*.xml", ! fullPathToTempDir + @"\foo.*" }; ! task.Run(result); ! IList list = result.TaskResults; Assert.AreEqual(3, list.Count); AssertDataContainedInList(list, fooXmlFileData); *************** *** 95,101 **** public void IgnoresFilesNotFound() { ! _task.MergeFiles = new string[] {@"c:\nonExistantFile.txt"}; ! _task.Run(_result); ! Assert.AreEqual(string.Empty, _result.TaskOutput); } --- 95,101 ---- public void IgnoresFilesNotFound() { ! task.MergeFiles = new string[] {@"c:\nonExistantFile.txt"}; ! task.Run(result); ! Assert.AreEqual(string.Empty, result.TaskOutput); } *************** *** 110,138 **** } - [Test] - public void ShouldGiveAPresentationValueThatIsANewLineSeparatedEquivalentOfAllTheFiles() - { - _task.MergeFiles = new string[] {"file1", "file2"}; - Assert.AreEqual("file1" + Environment.NewLine + "file2", _task.MergeFilesForPresentation); - } - - [Test] - public void SettingThroughPresentationValueSplitsAtNewLine() - { - _task.MergeFilesForPresentation = "file1" + Environment.NewLine + "file2"; - Assert.AreEqual("file1", _task.MergeFiles[0]); - Assert.AreEqual("file2", _task.MergeFiles[1]); - Assert.AreEqual(2, _task.MergeFiles.Length); - } - - [Test] - public void SettingThroughPresentationValueWorksForEmptyAndNullStrings() - { - _task.MergeFilesForPresentation = ""; - Assert.AreEqual(0, _task.MergeFiles.Length); - _task.MergeFilesForPresentation = null; - Assert.AreEqual(0, _task.MergeFiles.Length); - } - private void AssertDataContainedInList(IList list, string data) { --- 110,113 ---- |
|
From: Graham T. <ta...@us...> - 2005-08-22 08:41:52
|
Update of /cvsroot/ccnet/ccnet/project/CCTrayLib/Presentation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21905/project/CCTrayLib/Presentation Modified Files: AddEditProject.cs AddEditProject.resx Log Message: Sort project list drop down in CCTray add/edit project. Index: AddEditProject.resx =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/CCTrayLib/Presentation/AddEditProject.resx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AddEditProject.resx 10 Jul 2005 15:39:20 -0000 1.1 --- AddEditProject.resx 22 Aug 2005 08:41:41 -0000 1.2 *************** *** 197,200 **** --- 197,203 ---- <value>False</value> </data> + <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> <data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> *************** *** 209,220 **** <value>80</value> </data> - <data name="$this.Name"> - <value>AddEditProject</value> - </data> <data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </data> ! <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> ! <value>Private</value> </data> </root> \ No newline at end of file --- 212,220 ---- <value>80</value> </data> <data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </data> ! <data name="$this.Name"> ! <value>AddEditProject</value> </data> </root> \ No newline at end of file Index: AddEditProject.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/CCTrayLib/Presentation/AddEditProject.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AddEditProject.cs 18 Aug 2005 12:32:16 -0000 1.3 --- AddEditProject.cs 22 Aug 2005 08:41:41 -0000 1.4 *************** *** 104,107 **** --- 104,108 ---- this.txtProject.Name = "txtProject"; this.txtProject.Size = new System.Drawing.Size(335, 21); + this.txtProject.Sorted = true; this.txtProject.TabIndex = 4; // |
|
From: Owen R. <exo...@us...> - 2005-08-21 13:18:37
|
Update of /cvsroot/ccnet/ccnet/project/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24762/project/core Modified Files: IntegrationResult.cs Project.cs Log Message: CCNET-471 : successful tasks in publisher section should no longer overwrite exception status set modificationsecondsdelay in quiet period class Index: IntegrationResult.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/IntegrationResult.cs,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** IntegrationResult.cs 17 Aug 2005 11:46:21 -0000 1.36 --- IntegrationResult.cs 21 Aug 2005 13:17:56 -0000 1.37 *************** *** 236,240 **** { taskResults.Add(result); ! if (! Failed) Status = result.Succeeded() ? IntegrationStatus.Success : IntegrationStatus.Failure; } --- 236,240 ---- { taskResults.Add(result); ! if (! (Failed || Status == IntegrationStatus.Exception)) Status = result.Succeeded() ? IntegrationStatus.Success : IntegrationStatus.Failure; } *************** *** 303,327 **** /// <summary> - /// Checks whether modifications occurred within the modification delay. If the - /// modification delay is not set (has a value of zero or less), this method - /// will always return false. - /// </summary> - private bool DoModificationsExistWithinModificationDelay(int modificationDelaySeconds) - { - if (modificationDelaySeconds <= 0) - return false; - - //TODO: can the last mod date (which is the time on the SCM) be compared with now (which is the time on the build machine)? - TimeSpan diff = DateTime.Now - LastModificationDate; - if (diff.TotalSeconds < modificationDelaySeconds) - { - Log.Info("Changes found within the modification delay"); - return true; - } - - return false; - } - - /// <summary> /// Contains the output from the build process. In the case of NAntBuilder, this is the /// redirected StdOut of the nant.exe process. --- 303,306 ---- *************** *** 352,356 **** } } - private string Convert(object obj) --- 331,334 ---- Index: Project.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/Project.cs,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** Project.cs 8 Aug 2005 15:58:13 -0000 1.58 --- Project.cs 21 Aug 2005 13:17:56 -0000 1.59 *************** *** 43,51 **** private ITask[] publishers = new ITask[] { new XmlLogPublisher() }; private ProjectActivity currentActivity = ProjectActivity.Sleeping; - private int modificationDelaySeconds = 0; private IStateManager state; private IIntegrationResultManager integrationResultManager; private bool publishExceptions = true; private IIntegratable integratable; public Project() --- 43,51 ---- private ITask[] publishers = new ITask[] { new XmlLogPublisher() }; private ProjectActivity currentActivity = ProjectActivity.Sleeping; private IStateManager state; private IIntegrationResultManager integrationResultManager; private bool publishExceptions = true; private IIntegratable integratable; + private QuietPeriod quietPeriod; public Project() *************** *** 53,61 **** state = new FileStateManager(); integrationResultManager = new IntegrationResultManager(this); ! integratable = new IntegrationRunner(integrationResultManager, this, new QuietPeriod(new DateTimeProvider())); } - // This is nasty - test constructors and real constructors should be linked, but we have circular references here that need - // to be sorted out public Project(IIntegratable integratable) : this() { --- 53,60 ---- state = new FileStateManager(); integrationResultManager = new IntegrationResultManager(this); ! quietPeriod = new QuietPeriod(new DateTimeProvider()); ! integratable = new IntegrationRunner(integrationResultManager, this, quietPeriod); } public Project(IIntegratable integratable) : this() { *************** *** 112,119 **** /// </summary> [ReflectorProperty("modificationDelaySeconds", Required=false)] ! public int ModificationDelaySeconds { ! get { return modificationDelaySeconds; } ! set { modificationDelaySeconds = value; } } --- 111,118 ---- /// </summary> [ReflectorProperty("modificationDelaySeconds", Required=false)] ! public double ModificationDelaySeconds { ! get { return quietPeriod.ModificationDelaySeconds; } ! set { quietPeriod.ModificationDelaySeconds = value; } } |
|
From: Owen R. <exo...@us...> - 2005-08-21 13:18:04
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24762/project/UnitTests/Core Modified Files: IntegrationResultTest.cs Log Message: CCNET-471 : successful tasks in publisher section should no longer overwrite exception status set modificationsecondsdelay in quiet period class Index: IntegrationResultTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/IntegrationResultTest.cs,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** IntegrationResultTest.cs 17 Aug 2005 11:46:21 -0000 1.15 --- IntegrationResultTest.cs 21 Aug 2005 13:17:55 -0000 1.16 *************** *** 153,156 **** --- 153,164 ---- [Test] + public void ShouldHaveExceptionStatusIfExceptionHasBeenThrown() + { + result.ExceptionResult = new Exception("build blew up"); + result.AddTaskResult(new ProcessTaskResult(ProcessResultFixture.CreateSuccessfulResult())); + Assert.AreEqual(IntegrationStatus.Exception, result.Status); + } + + [Test] public void InitiallyLastSuccessfulIntegrationLabelShouldBeCurrentLabel() { |
|
From: Owen R. <exo...@us...> - 2005-08-21 02:48:16
|
Update of /cvsroot/ccnet/ccnet/project/core/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25558/project/core/util Modified Files: TempFileUtil.cs Log Message: CCNET-518 : automatically merging in the output from the msbuild xml log file Index: TempFileUtil.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/util/TempFileUtil.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TempFileUtil.cs 15 Dec 2004 06:24:59 -0000 1.8 --- TempFileUtil.cs 21 Aug 2005 02:48:08 -0000 1.9 *************** *** 70,78 **** { string path = Path.Combine(GetTempPath(dirname),filename); ! XmlTextWriter writer = new XmlTextWriter(path, Encoding.Unicode); writer.WriteRaw(contents); writer.Close(); - - return path; } --- 70,82 ---- { string path = Path.Combine(GetTempPath(dirname),filename); ! CreateTempXmlFile(path, contents); ! return path; ! } ! ! public static void CreateTempXmlFile(string path, string contents) ! { ! XmlTextWriter writer = new XmlTextWriter(path, Encoding.Unicode); writer.WriteRaw(contents); writer.Close(); } |
|
From: Owen R. <exo...@us...> - 2005-08-21 02:48:16
|
Update of /cvsroot/ccnet/ccnet/project/core/tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25558/project/core/tasks Modified Files: MsBuildTask.cs Log Message: CCNET-518 : automatically merging in the output from the msbuild xml log file Index: MsBuildTask.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/tasks/MsBuildTask.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** MsBuildTask.cs 21 Aug 2005 01:45:02 -0000 1.8 --- MsBuildTask.cs 21 Aug 2005 02:48:08 -0000 1.9 *************** *** 10,13 **** --- 10,14 ---- public const string DefaultExecutable = @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\MSBuild.exe"; public const string DefaultLogger = "ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll"; + public const string LogFilename = "msbuild-results.xml"; public const int DefaultTimeout = 600; *************** *** 46,50 **** { ProcessResult processResult = executor.Execute(NewProcessInfo(result)); ! result.AddTaskResult(new ProcessTaskResult(processResult)); } --- 47,59 ---- { ProcessResult processResult = executor.Execute(NewProcessInfo(result)); ! string buildOutputFile = MsBuildOutputFile(result); ! if (File.Exists(buildOutputFile)) ! { ! result.AddTaskResult(new FileTaskResult(buildOutputFile)); ! } ! else ! { ! result.AddTaskResult(new ProcessTaskResult(processResult)); ! } } *************** *** 92,98 **** builder.Append(Logger); builder.Append(";"); ! builder.Append(Path.Combine(result.ArtifactDirectory, "msbuild-results.xml")); return builder.ToString(); } } } \ No newline at end of file --- 101,112 ---- builder.Append(Logger); builder.Append(";"); ! builder.Append(MsBuildOutputFile(result)); return builder.ToString(); } + + private string MsBuildOutputFile(IIntegrationResult result) + { + return Path.Combine(result.ArtifactDirectory, LogFilename); + } } } \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-21 02:48:16
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/Tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25558/project/UnitTests/Core/Tasks Modified Files: MsBuildTaskTest.cs Log Message: CCNET-518 : automatically merging in the output from the msbuild xml log file Index: MsBuildTaskTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Tasks/MsBuildTaskTest.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** MsBuildTaskTest.cs 15 Aug 2005 11:13:12 -0000 1.8 --- MsBuildTaskTest.cs 21 Aug 2005 02:48:08 -0000 1.9 *************** *** 12,15 **** --- 12,16 ---- public class MsBuildTaskTest : ProcessExecutorTestFixtureBase { + private string logfile; private IIntegrationResult result; private MsBuildTask task; *************** *** 21,25 **** result = IntegrationResult(); result.Label = "1.0"; ! result.ArtifactDirectory = @"c:\artifacts"; task = new MsBuildTask((ProcessExecutor) mockProcessExecutor.MockInstance); } --- 22,28 ---- result = IntegrationResult(); result.Label = "1.0"; ! result.ArtifactDirectory = Path.GetTempPath(); ! logfile = Path.Combine(result.ArtifactDirectory, MsBuildTask.LogFilename); ! TempFileUtil.DeleteTempFile(logfile); task = new MsBuildTask((ProcessExecutor) mockProcessExecutor.MockInstance); } *************** *** 48,61 **** } - private string DefaultLogger() - { - return string.Format(@" /l:{0};c:\artifacts\msbuild-results.xml", MsBuildTask.DefaultLogger); - } - - private string IntegrationProperties() - { - return string.Format(@"/p:CCNetIntegrationStatus=Success;CCNetBuildDate={1};CCNetArtifactDirectory=c:\artifacts;CCNetBuildTime={2};CCNetProject=test;CCNetLabel=1.0;CCNetWorkingDirectory={0};CCNetLastIntegrationStatus=Unknown;CCNetBuildCondition=NoBuild", DefaultWorkingDirectory, testDateString, testTimeString); - } - [Test] public void AddQuotesAroundProjectsWithSpacesAndHandleNoSpecifiedTargets() --- 51,54 ---- *************** *** 77,81 **** public void AddQuotesAroundPropertiesWithSpaces() { ! string expectedProperties = string.Format(@"/p:CCNetIntegrationStatus=Success;CCNetBuildDate={0};CCNetArtifactDirectory=c:\artifacts;CCNetBuildTime={1};CCNetProject=test;CCNetLabel=My Label;CCNetWorkingDirectory=c:\source\;CCNetLastIntegrationStatus=Unknown;CCNetBuildCondition=NoBuild",testDateString, testTimeString); ExpectToExecuteArguments(@"/nologo " + @"""" + expectedProperties + @"""" + DefaultLogger()); result.Label = @"My Label"; --- 70,74 ---- public void AddQuotesAroundPropertiesWithSpaces() { ! string expectedProperties = string.Format(@"/p:CCNetIntegrationStatus=Success;CCNetBuildDate={0};CCNetArtifactDirectory={2};CCNetBuildTime={1};CCNetProject=test;CCNetLabel=My Label;CCNetWorkingDirectory=c:\source\;CCNetLastIntegrationStatus=Unknown;CCNetBuildCondition=NoBuild",testDateString, testTimeString, result.ArtifactDirectory); ExpectToExecuteArguments(@"/nologo " + @"""" + expectedProperties + @"""" + DefaultLogger()); result.Label = @"My Label"; *************** *** 83,87 **** } - [Test] public void RebaseFromWorkingDirectory() --- 76,79 ---- *************** *** 103,106 **** --- 95,108 ---- [Test] + public void ShouldAutomaticallyMergeTheBuildOutputFile() + { + TempFileUtil.CreateTempXmlFile(logfile, "<output/>"); + ExpectToExecuteAndReturn(SuccessfulProcessResult()); + task.Run(result); + Assert.AreEqual(1, result.TaskResults.Count); + Assert.AreEqual("<output/>", result.TaskOutput); + } + + [Test] public void PopulateFromConfiguration() { *************** *** 132,135 **** --- 134,147 ---- Assert.AreEqual(MsBuildTask.DefaultLogger, task.Logger); } + + private string DefaultLogger() + { + return string.Format(@" /l:{0};{1}", MsBuildTask.DefaultLogger, logfile); + } + + private string IntegrationProperties() + { + return string.Format(@"/p:CCNetIntegrationStatus=Success;CCNetBuildDate={1};CCNetArtifactDirectory={3};CCNetBuildTime={2};CCNetProject=test;CCNetLabel=1.0;CCNetWorkingDirectory={0};CCNetLastIntegrationStatus=Unknown;CCNetBuildCondition=NoBuild", DefaultWorkingDirectory, testDateString, testTimeString, result.ArtifactDirectory); + } } } \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-21 01:45:11
|
Update of /cvsroot/ccnet/ccnet/project/core/tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16414/project/core/tasks Modified Files: MsBuildTask.cs Log Message: reseting the default location of msbuild to the .net beta 2 directory. this saves users from having to specify it explicitly Index: MsBuildTask.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/tasks/MsBuildTask.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** MsBuildTask.cs 21 Aug 2005 01:32:44 -0000 1.7 --- MsBuildTask.cs 21 Aug 2005 01:45:02 -0000 1.8 *************** *** 8,12 **** public class MsBuildTask : ITask { ! public const string DefaultExecutable = "MSBuild.exe"; public const string DefaultLogger = "ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll"; public const int DefaultTimeout = 600; --- 8,12 ---- public class MsBuildTask : ITask { ! public const string DefaultExecutable = @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\MSBuild.exe"; public const string DefaultLogger = "ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll"; public const int DefaultTimeout = 600; |
|
From: Owen R. <exo...@us...> - 2005-08-21 01:32:53
|
Update of /cvsroot/ccnet/ccnet/project/core/tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14063/project/core/tasks Modified Files: MsBuildTask.cs Log Message: CCNET-517 : fixing problem in msbuild logger string removing label transformation from build file (converting underscores to dots) as it is no longer required by ccnet Index: MsBuildTask.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/tasks/MsBuildTask.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** MsBuildTask.cs 15 Aug 2005 16:40:11 -0000 1.6 --- MsBuildTask.cs 21 Aug 2005 01:32:44 -0000 1.7 *************** *** 9,13 **** { public const string DefaultExecutable = "MSBuild.exe"; ! public const string DefaultLogger = "ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll;msbuild-output.xml"; public const int DefaultTimeout = 600; --- 9,13 ---- { public const string DefaultExecutable = "MSBuild.exe"; ! public const string DefaultLogger = "ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll"; public const int DefaultTimeout = 600; |
|
From: Owen R. <exo...@us...> - 2005-08-21 01:32:52
|
Update of /cvsroot/ccnet/ccnet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14063 Modified Files: ccnet.build Log Message: CCNET-517 : fixing problem in msbuild logger string removing label transformation from build file (converting underscores to dots) as it is no longer required by ccnet Index: ccnet.build =================================================================== RCS file: /cvsroot/ccnet/ccnet/ccnet.build,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -d -r1.83 -r1.84 *** ccnet.build 12 Aug 2005 13:57:36 -0000 1.83 --- ccnet.build 21 Aug 2005 01:32:44 -0000 1.84 *************** *** 6,13 **** <property name="debug" value="true"/> <property name="verbosity" value="true"/> - <property name="nunit.output" value="Plain"/> - <property name="build.number" value="0" /> - - <property name="webdashboard.dir" value="deployed\webdashboard"/> <property name="build.dir" value="build"/> --- 6,9 ---- *************** *** 15,18 **** --- 11,15 ---- <property name="lib.dir" value="lib"/> <property name="package.dir" value="package"/> + <property name="webdashboard.dir" value="deployed\webdashboard"/> <property name="remote.dll" value="ThoughtWorks.CruiseControl.Remote.dll"/> *************** *** 28,31 **** --- 25,29 ---- <property name="vil.assemblies" value="comma,separated,list,of,assemblies,to,analyze (full path)" /> <property name="simian.executable" value="tools\simian\simian.exe" /> + <property name="CCNetLabel" value="0" overwrite="false" /> <property name="CCNetArtifactDirectory" value="${build.dir}" overwrite="false" /> *************** *** 238,242 **** </imports> <attributes> ! <attribute type="AssemblyVersionAttribute" value="${build.number}" /> <attribute type="AssemblyCopyrightAttribute" value="Copyright © 2005 ThoughtWorks Inc." /> <attribute type="AssemblyCompanyAttribute" value="ThoughtWorks" /> --- 236,240 ---- </imports> <attributes> ! <attribute type="AssemblyVersionAttribute" value="${CCNetLabel}" /> <attribute type="AssemblyCopyrightAttribute" value="Copyright © 2005 ThoughtWorks Inc." /> <attribute type="AssemblyCompanyAttribute" value="ThoughtWorks" /> *************** *** 246,265 **** </target> ! <target name="ContinuousIntegration" depends="transform.build.number, createAssemblyInfo, all, dist.publish, reporting"> <echo message="CI Run for build number ${CCNetLabel} successfully completed" /> </target> - <target name="verify.CCNetLabel" description="Verifies that the CCNetLabel property has been set"> - <if test="${not property::exists('CCNetLabel')}"> - <fail message="CCNetLabel property not set, so can't create labelled distribution files" /> - </if> - </target> - - <target name="transform.build.number" depends="verify.CCNetLabel"> - <regex pattern="(?'major'\d+)_(?'minor'\d+)_(?'revision'\d+)_(?'build'\d+)" input="${CCNetLabel}" /> - <property name="build.number" value="${major}.${minor}.${revision}.${build}" /> - <echo message="Build number: ${build.number}"/> - </target> - <target name="netreflector.docs" depends="compile"> <loadtasks assembly="lib\NetReflectorDocumenterTask.dll"/> --- 244,251 ---- </target> ! <target name="ContinuousIntegration" depends="createAssemblyInfo, all, dist.publish, reporting"> <echo message="CI Run for build number ${CCNetLabel} successfully completed" /> </target> <target name="netreflector.docs" depends="compile"> <loadtasks assembly="lib\NetReflectorDocumenterTask.dll"/> *************** *** 282,284 **** --- 268,284 ---- <echo message="Simian run complete"/> </target> + + <target name="msbuild"> + <property name="nant.settings.currentframework" value="net-2.0"/> + + <csc target="library" output="${build.dir}/ThoughtWorks.CruiseControl.MsBuild.XmlLogger.dll" debug="${debug}"> + <sources basedir="."> + <include name="${src.dir}/MsBuildXmlLogger/**/*.cs"/> + </sources> + <references> + <include name="Microsoft.Build.Framework.dll"/> + <include name="Microsoft.Build.Utilities.dll"/> + </references> + </csc> + </target> </project> \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-21 00:32:21
|
Update of /cvsroot/ccnet/ccnet/project/core/publishers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4305/project/core/publishers Modified Files: EmailMessage.cs EmailPublisher.cs EmailUser.cs Log Message: CCNET-516 - modifiers should now always receive notification when their committed code is in the build Index: EmailPublisher.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/publishers/EmailPublisher.cs,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** EmailPublisher.cs 18 May 2005 17:16:40 -0000 1.22 --- EmailPublisher.cs 21 Aug 2005 00:32:11 -0000 1.23 *************** *** 14,33 **** public class EmailPublisher : ITask { ! private EmailGateway _emailGateway = new EmailGateway(); ! private string _fromAddress; ! private Hashtable _users = new Hashtable(); ! private Hashtable _groups = new Hashtable(); ! private IMessageBuilder _messageBuilder = new HtmlLinkMessageBuilder(false); public EmailGateway EmailGateway { ! get { return _emailGateway; } ! set { _emailGateway = value; } } public IMessageBuilder MessageBuilder { ! get { return _messageBuilder; } ! set { _messageBuilder = value; } } --- 14,33 ---- public class EmailPublisher : ITask { ! private EmailGateway emailGateway = new EmailGateway(); ! private string fromAddress; ! private Hashtable users = new Hashtable(); ! private Hashtable groups = new Hashtable(); ! private IMessageBuilder messageBuilder = new HtmlLinkMessageBuilder(false); public EmailGateway EmailGateway { ! get { return emailGateway; } ! set { emailGateway = value; } } public IMessageBuilder MessageBuilder { ! get { return messageBuilder; } ! set { messageBuilder = value; } } *************** *** 49,54 **** public string FromAddress { ! get { return _fromAddress; } ! set { _fromAddress = value; } } --- 49,54 ---- public string FromAddress { ! get { return fromAddress; } ! set { fromAddress = value; } } *************** *** 62,66 **** get { ! return _messageBuilder is HtmlDetailsMessageBuilder; } set --- 62,66 ---- get { ! return messageBuilder is HtmlDetailsMessageBuilder; } set *************** *** 68,76 **** if (value) { ! _messageBuilder = new HtmlDetailsMessageBuilder(); } else { ! _messageBuilder = new HtmlLinkMessageBuilder(false); } } --- 68,76 ---- if (value) { ! messageBuilder = new HtmlDetailsMessageBuilder(); } else { ! messageBuilder = new HtmlLinkMessageBuilder(false); } } *************** *** 80,85 **** public Hashtable EmailUsers { ! get { return _users; } ! set { _users = value; } } --- 80,85 ---- public Hashtable EmailUsers { ! get { return users; } ! set { users = value; } } *************** *** 87,92 **** public Hashtable EmailGroups { ! get { return _groups; } ! set { _groups = value; } } --- 87,92 ---- public Hashtable EmailGroups { ! get { return groups; } ! set { groups = value; } } *************** *** 102,106 **** if (IsRecipientSpecified(to)) { ! SendMessage(_fromAddress, to, subject, message); } } --- 102,106 ---- if (IsRecipientSpecified(to)) { ! SendMessage(fromAddress, to, subject, message); } } *************** *** 115,119 **** try { ! _emailGateway.Send(from, to, subject, message); } catch (Exception e) --- 115,119 ---- try { ! emailGateway.Send(from, to, subject, message); } catch (Exception e) *************** *** 127,131 **** // TODO Add culprit to message text -- especially if modifier is not an email user // This information is included, when using Html email (all mods are shown) ! return _messageBuilder.BuildMessage(result); } } --- 127,131 ---- // TODO Add culprit to message text -- especially if modifier is not an email user // This information is included, when using Html email (all mods are shown) ! return messageBuilder.BuildMessage(result); } } Index: EmailUser.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/publishers/EmailUser.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** EmailUser.cs 1 Nov 2003 18:53:18 -0000 1.3 --- EmailUser.cs 21 Aug 2005 00:32:11 -0000 1.4 *************** *** 7,43 **** public class EmailUser { - private string _name; - private string _address; - private string _group; - public EmailUser() { } public EmailUser(string name, string group, string address) { ! _name = name; ! _address = address; ! _group = group; } [ReflectorProperty("name")] ! public string Name ! { ! get { return _name; } ! set { _name = value; } ! } [ReflectorProperty("address")] ! public string Address ! { ! get { return _address; } ! set { _address = value; } ! } [ReflectorProperty("group")] ! public string Group ! { ! get { return _group; } ! set { _group = value; } ! } public override bool Equals(Object obj) --- 7,27 ---- public class EmailUser { public EmailUser() { } public EmailUser(string name, string group, string address) { ! Name = name; ! Address = address; ! Group = group; } [ReflectorProperty("name")] ! public string Name; [ReflectorProperty("address")] ! public string Address; [ReflectorProperty("group")] ! public string Group; public override bool Equals(Object obj) *************** *** 61,63 **** } } ! } --- 45,47 ---- } } ! } \ No newline at end of file Index: EmailMessage.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/core/publishers/EmailMessage.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EmailMessage.cs 19 Jul 2005 12:24:28 -0000 1.2 --- EmailMessage.cs 21 Aug 2005 00:32:11 -0000 1.3 *************** *** 1,4 **** using System.Collections; ! using ThoughtWorks.CruiseControl.Core.Util; using ThoughtWorks.CruiseControl.Remote; --- 1,4 ---- using System.Collections; ! using System.Text; using ThoughtWorks.CruiseControl.Remote; *************** *** 24,74 **** get { ! //TODO clean up logic ! string[] always = CreateNotifyList(EmailGroup.NotificationType.Always); if (BuildStateChanged(result)) { ! string[] change = CreateNotifyList(EmailGroup.NotificationType.Change); ! ! if (this.result.Status == IntegrationStatus.Failure ) ! { ! string[] failed = CreateNotifyList(EmailGroup.NotificationType.Failed); ! return StringUtil.JoinUnique(", ", always, change, failed); ! } ! else ! { ! return StringUtil.JoinUnique(", ", always, change); ! } } ! else { ! if (this.result.Status == IntegrationStatus.Failure ) ! { ! string[] failed = CreateNotifyList(EmailGroup.NotificationType.Failed); ! return StringUtil.JoinUnique(", ", always, Modifiers, failed); ! } ! else { ! return StringUtil.JoinUnique(", ", always, Modifiers); } } } } ! public string[] Modifiers { ! get { ! ArrayList modifiers = new ArrayList(); ! foreach (Modification modification in result.Modifications) { ! EmailUser user = GetEmailUser(modification.UserName); ! if (user != null) ! { ! modifiers.Add(user.Address); ! } } - return (string[]) modifiers.ToArray(typeof (string)); } } --- 24,72 ---- get { ! IDictionary recipients = new SortedList(); ! AddRecipients(recipients, EmailGroup.NotificationType.Always); ! AddModifiers(recipients); if (BuildStateChanged(result)) { ! AddRecipients(recipients, EmailGroup.NotificationType.Change); } ! ! if (this.result.Status == IntegrationStatus.Failure) { ! AddRecipients(recipients, EmailGroup.NotificationType.Failed); ! } ! ! StringBuilder buffer = new StringBuilder(); ! foreach (string key in recipients.Keys) { ! if (buffer.Length > 0) buffer.Append(", "); ! buffer.Append(key); } + return buffer.ToString(); } + } + private void AddModifiers(IDictionary recipients) + { + foreach (Modification modification in result.Modifications) + { + EmailUser user = GetEmailUser(modification.UserName); + if (user != null) + { + recipients[user.Address] = user; + } } } ! private void AddRecipients(IDictionary recipients, EmailGroup.NotificationType notificationType) { ! foreach (EmailUser user in emailPublisher.EmailUsers.Values) { ! EmailGroup group = GetEmailGroup(user.Group); ! if (group != null && group.Notification == notificationType) { ! recipients[user.Address] = user; } } } *************** *** 107,124 **** } - private string[] CreateNotifyList(EmailGroup.NotificationType notification) - { - ArrayList userList = new ArrayList(); - foreach (EmailUser user in emailPublisher.EmailUsers.Values) - { - EmailGroup group = GetEmailGroup(user.Group); - if (group != null && group.Notification.Equals(notification)) - { - userList.Add(user.Address); - } - } - return (string[]) userList.ToArray(typeof (string)); - } - private bool BuildStateChanged(IIntegrationResult result) { --- 105,108 ---- |
|
From: Owen R. <exo...@us...> - 2005-08-21 00:32:21
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core/Publishers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4305/project/UnitTests/Core/Publishers Modified Files: EmailMessageTest.cs EmailPublisherTest.cs Log Message: CCNET-516 - modifiers should now always receive notification when their committed code is in the build Index: EmailPublisherTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Publishers/EmailPublisherTest.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EmailPublisherTest.cs 19 Jul 2005 12:24:28 -0000 1.5 --- EmailPublisherTest.cs 21 Aug 2005 00:32:11 -0000 1.6 *************** *** 12,24 **** public class EmailPublisherTest { ! private EmailPublisher _publisher; ! private MockEmailGateway _gateway; [SetUp] public void SetUp() { ! _publisher = EmailPublisherMother.Create(); ! _gateway = MockEmailGateway.Create(); ! _publisher.EmailGateway = _gateway; } --- 12,24 ---- public class EmailPublisherTest { ! private EmailPublisher publisher; ! private MockEmailGateway gateway; [SetUp] public void SetUp() { ! publisher = EmailPublisherMother.Create(); ! gateway = MockEmailGateway.Create(); ! publisher.EmailGateway = gateway; } *************** *** 26,33 **** public void SendMessage() { ! _publisher.SendMessage("fr...@fo...", "to...@ba...", "test subject", "test message"); ! Assert.AreEqual(1, _gateway.SentMessages.Count); ! MailMessage message = (MailMessage) _gateway.SentMessages[0]; Assert.AreEqual("fr...@fo...", message.From); Assert.AreEqual("to...@ba...", message.To); --- 26,33 ---- public void SendMessage() { ! publisher.SendMessage("fr...@fo...", "to...@ba...", "test subject", "test message"); ! Assert.AreEqual(1, gateway.SentMessages.Count); ! MailMessage message = (MailMessage) gateway.SentMessages[0]; Assert.AreEqual("fr...@fo...", message.From); Assert.AreEqual("to...@ba...", message.To); *************** *** 39,74 **** public void ShouldNotSendMessageIfRecipientIsNotSpecifiedAndBuildIsSuccessful() { ! _publisher = new EmailPublisher(); ! _publisher.EmailGateway = _gateway; ! _publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! _publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Change)); ! _publisher.Run(IntegrationResultMother.CreateStillSuccessful()); ! Assert.AreEqual(0, _gateway.SentMessages.Count); } - [Test] public void ShouldSendMessageIfRecipientIsNotSpecifiedAndBuildFailed() { ! _publisher = new EmailPublisher(); ! _publisher.EmailGateway = _gateway; ! _publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! _publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Change)); ! _publisher.Run(IntegrationResultMother.CreateFailed()); ! Assert.AreEqual(1, _gateway.SentMessages.Count); } - [Test] public void ShouldSendMessageIfBuildFailed() { ! _publisher = new EmailPublisher(); ! _publisher.EmailGateway = _gateway; ! _publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! _publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Failed)); ! _publisher.Run(IntegrationResultMother.CreateFailed() ); ! Assert.AreEqual(1, _gateway.SentMessages.Count); ! Assert.AreEqual(1, _gateway.Recipients.Count); } --- 39,72 ---- public void ShouldNotSendMessageIfRecipientIsNotSpecifiedAndBuildIsSuccessful() { ! publisher = new EmailPublisher(); ! publisher.EmailGateway = gateway; ! publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Change)); ! publisher.Run(IntegrationResultMother.CreateStillSuccessful()); ! Assert.AreEqual(0, gateway.SentMessages.Count); } [Test] public void ShouldSendMessageIfRecipientIsNotSpecifiedAndBuildFailed() { ! publisher = new EmailPublisher(); ! publisher.EmailGateway = gateway; ! publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Change)); ! publisher.Run(IntegrationResultMother.CreateFailed()); ! Assert.AreEqual(1, gateway.SentMessages.Count); } [Test] public void ShouldSendMessageIfBuildFailed() { ! publisher = new EmailPublisher(); ! publisher.EmailGateway = gateway; ! publisher.EmailUsers.Add("bar", new EmailUser("bar", "foo", "ba...@fo...")); ! publisher.EmailGroups.Add("foo", new EmailGroup("foo", EmailGroup.NotificationType.Failed)); ! publisher.Run(IntegrationResultMother.CreateFailed() ); ! Assert.AreEqual(1, gateway.SentMessages.Count); ! Assert.AreEqual(1, gateway.Recipients.Count); } *************** *** 76,116 **** public void ShouldSendMessageIfBuildFailedAndPreviousFailed() { ! _publisher = new EmailPublisher(); ! _publisher.EmailGateway = _gateway; ! _publisher.EmailUsers.Add("dev", new EmailUser("dev", "changing", "de...@fo...")); ! _publisher.EmailUsers.Add("admin", new EmailUser("admin", "failing", "ba...@fo...")); ! _publisher.EmailGroups.Add("changing", new EmailGroup("changing", EmailGroup.NotificationType.Change)); ! _publisher.EmailGroups.Add("failing", new EmailGroup("failing", EmailGroup.NotificationType.Failed)); ! _publisher.Run(IntegrationResultMother.CreateFailed(IntegrationStatus.Failure) ); ! Assert.AreEqual(1, _gateway.SentMessages.Count); ! Assert.AreEqual(1, _gateway.Recipients.Count); } - [Test] public void ShouldSendMessageIfBuildFailedAndPreviousOK() { ! _publisher = new EmailPublisher(); ! _publisher.EmailGateway = _gateway; ! _publisher.EmailUsers.Add("dev", new EmailUser("dev", "changing", "de...@fo...")); ! _publisher.EmailUsers.Add("admin", new EmailUser("admin", "failing", "ba...@fo...")); ! _publisher.EmailGroups.Add("changing", new EmailGroup("changing", EmailGroup.NotificationType.Change)); ! _publisher.EmailGroups.Add("failing", new EmailGroup("failing", EmailGroup.NotificationType.Failed)); ! _publisher.Run(IntegrationResultMother.CreateFailed(IntegrationStatus.Success) ); ! Assert.AreEqual(1, _gateway.SentMessages.Count); ! Assert.AreEqual(2, _gateway.Recipients.Count); } - - - private IntegrationResult CreateIntegrationResult(IntegrationStatus current, IntegrationStatus last) { --- 74,110 ---- public void ShouldSendMessageIfBuildFailedAndPreviousFailed() { ! publisher = new EmailPublisher(); ! publisher.EmailGateway = gateway; ! publisher.EmailUsers.Add("dev", new EmailUser("dev", "changing", "de...@fo...")); ! publisher.EmailUsers.Add("admin", new EmailUser("admin", "failing", "ba...@fo...")); ! publisher.EmailGroups.Add("changing", new EmailGroup("changing", EmailGroup.NotificationType.Change)); ! publisher.EmailGroups.Add("failing", new EmailGroup("failing", EmailGroup.NotificationType.Failed)); ! publisher.Run(IntegrationResultMother.CreateFailed(IntegrationStatus.Failure) ); ! Assert.AreEqual(1, gateway.SentMessages.Count); ! Assert.AreEqual(1, gateway.Recipients.Count); } [Test] public void ShouldSendMessageIfBuildFailedAndPreviousOK() { ! publisher = new EmailPublisher(); ! publisher.EmailGateway = gateway; ! publisher.EmailUsers.Add("dev", new EmailUser("dev", "changing", "de...@fo...")); ! publisher.EmailUsers.Add("admin", new EmailUser("admin", "failing", "ba...@fo...")); ! publisher.EmailGroups.Add("changing", new EmailGroup("changing", EmailGroup.NotificationType.Change)); ! publisher.EmailGroups.Add("failing", new EmailGroup("failing", EmailGroup.NotificationType.Failed)); ! publisher.Run(IntegrationResultMother.CreateFailed(IntegrationStatus.Success) ); ! Assert.AreEqual(1, gateway.SentMessages.Count); ! Assert.AreEqual(2, gateway.Recipients.Count); } private IntegrationResult CreateIntegrationResult(IntegrationStatus current, IntegrationStatus last) { *************** *** 127,132 **** public void EmailMessageWithDetails() { ! _publisher.IncludeDetails = true; ! string message = _publisher.CreateMessage(CreateIntegrationResult(IntegrationStatus.Success, IntegrationStatus.Success)); Assert.IsTrue(message.StartsWith("<html>")); Assert.IsTrue(message.IndexOf("CruiseControl.NET Build Results for project Project#9") > 0); --- 121,126 ---- public void EmailMessageWithDetails() { ! publisher.IncludeDetails = true; ! string message = publisher.CreateMessage(CreateIntegrationResult(IntegrationStatus.Success, IntegrationStatus.Success)); Assert.IsTrue(message.StartsWith("<html>")); Assert.IsTrue(message.IndexOf("CruiseControl.NET Build Results for project Project#9") > 0); *************** *** 139,145 **** { IntegrationResult result = IntegrationResultMother.CreateStillSuccessful(); ! _publisher.Run(result); ! Assert.AreEqual("mock.gateway.org", _gateway.MailHost); ! Assert.AreEqual(1, _gateway.SentMessages.Count); } --- 133,139 ---- { IntegrationResult result = IntegrationResultMother.CreateStillSuccessful(); ! publisher.Run(result); ! Assert.AreEqual("mock.gateway.org", gateway.MailHost); ! Assert.AreEqual(1, gateway.SentMessages.Count); } *************** *** 150,155 **** string results = "<test-results name=\"foo\" total=\"10\" failures=\"0\" not-run=\"0\"><test-suite></test-suite></test-results>"; result.AddTaskResult(results); ! _publisher.IncludeDetails = true; ! string message = _publisher.CreateMessage(result); Assert.IsTrue(message.IndexOf("Tests run") >= 0); } --- 144,149 ---- string results = "<test-results name=\"foo\" total=\"10\" failures=\"0\" not-run=\"0\"><test-suite></test-suite></test-results>"; result.AddTaskResult(results); ! publisher.IncludeDetails = true; ! string message = publisher.CreateMessage(result); Assert.IsTrue(message.IndexOf("Tests run") >= 0); } *************** *** 158,163 **** public void Publish_UnknownIntegrationStatus() { ! _publisher.Run(new IntegrationResult()); ! Assert.AreEqual(0, _gateway.SentMessages.Count); // verify that no messages are sent if there were no modifications } --- 152,157 ---- public void Publish_UnknownIntegrationStatus() { ! publisher.Run(new IntegrationResult()); ! Assert.AreEqual(0, gateway.SentMessages.Count); // verify that no messages are sent if there were no modifications } *************** *** 183,192 **** public void PopulateFromConfiguration() { ! _publisher = EmailPublisherMother.Create(); ! Assert.AreEqual("smtp.telus.net", _publisher.MailHost); ! Assert.AreEqual("cc...@th...", _publisher.FromAddress); ! Assert.AreEqual(5, _publisher.EmailUsers.Count); ArrayList expected = new ArrayList(); expected.Add(new EmailUser("buildmaster", "buildmaster", "se...@te...")); --- 177,186 ---- public void PopulateFromConfiguration() { ! publisher = EmailPublisherMother.Create(); ! Assert.AreEqual("smtp.telus.net", publisher.MailHost); ! Assert.AreEqual("cc...@th...", publisher.FromAddress); ! Assert.AreEqual(5, publisher.EmailUsers.Count); ArrayList expected = new ArrayList(); expected.Add(new EmailUser("buildmaster", "buildmaster", "se...@te...")); *************** *** 197,208 **** for (int i = 0; i < expected.Count; i++) { ! Assert.IsTrue(_publisher.EmailUsers.ContainsValue(expected[i])); } ! Assert.AreEqual(2, _publisher.EmailGroups.Count); EmailGroup developers = new EmailGroup("developers", EmailGroup.NotificationType.Change); EmailGroup buildmaster = new EmailGroup("buildmaster", EmailGroup.NotificationType.Always); ! Assert.AreEqual(developers, _publisher.EmailGroups["developers"]); ! Assert.AreEqual(buildmaster, _publisher.EmailGroups["buildmaster"]); } --- 191,202 ---- for (int i = 0; i < expected.Count; i++) { ! Assert.IsTrue(publisher.EmailUsers.ContainsValue(expected[i])); } ! Assert.AreEqual(2, publisher.EmailGroups.Count); EmailGroup developers = new EmailGroup("developers", EmailGroup.NotificationType.Change); EmailGroup buildmaster = new EmailGroup("buildmaster", EmailGroup.NotificationType.Always); ! Assert.AreEqual(developers, publisher.EmailGroups["developers"]); ! Assert.AreEqual(buildmaster, publisher.EmailGroups["buildmaster"]); } *************** *** 213,220 **** result.ExceptionResult = new CruiseControlException("test exception"); ! Assert.IsTrue(_publisher.CreateMessage(result).StartsWith("CruiseControl.NET Build Results for project Project#9")); ! _publisher.IncludeDetails = true; ! string actual = _publisher.CreateMessage(result); Assert.IsTrue(actual.IndexOf(result.ExceptionResult.Message) > 0); Assert.IsTrue(actual.IndexOf(result.ExceptionResult.GetType().Name) > 0); --- 207,214 ---- result.ExceptionResult = new CruiseControlException("test exception"); ! Assert.IsTrue(publisher.CreateMessage(result).StartsWith("CruiseControl.NET Build Results for project Project#9")); ! publisher.IncludeDetails = true; ! string actual = publisher.CreateMessage(result); Assert.IsTrue(actual.IndexOf(result.ExceptionResult.Message) > 0); Assert.IsTrue(actual.IndexOf(result.ExceptionResult.GetType().Name) > 0); Index: EmailMessageTest.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/Publishers/EmailMessageTest.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EmailMessageTest.cs 7 Apr 2005 15:44:49 -0000 1.4 --- EmailMessageTest.cs 21 Aug 2005 00:32:11 -0000 1.5 *************** *** 1,7 **** ! using System; using NUnit.Framework; using ThoughtWorks.CruiseControl.Core; using ThoughtWorks.CruiseControl.Core.Publishers; - using ThoughtWorks.CruiseControl.UnitTests.Core.Sourcecontrol; namespace ThoughtWorks.CruiseControl.UnitTests.Core.Publishers --- 1,6 ---- ! using System.Text; using NUnit.Framework; using ThoughtWorks.CruiseControl.Core; using ThoughtWorks.CruiseControl.Core.Publishers; namespace ThoughtWorks.CruiseControl.UnitTests.Core.Publishers *************** *** 13,54 **** public class EmailMessageTest : CustomAssertion { [Test] ! public void CreateRecipientListForFixedBuild() { ! string expected = "dme...@th..., man...@th..., or...@th..., rw...@th..., se...@te..."; ! string actual = new EmailMessage(IntegrationResultMother.CreateFixed(), ! EmailPublisherMother.Create()).Recipients; ! Assert.AreEqual(expected, actual); } [Test] ! public void CreateRecipientListForBuildStillSuccessful() { ! string expected = "or...@th..., se...@te..."; ! IntegrationResult integrationResult = IntegrationResultMother.CreateStillSuccessful(); ! integrationResult.Modifications = CreateModifications(); ! string actual = new EmailMessage(integrationResult, EmailPublisherMother.Create()).Recipients; ! Assert.AreEqual(expected, actual); } [Test] ! public void CreateRecipientListWithNoRecipients() { ! string expected = String.Empty; ! EmailPublisher publisher = EmailPublisherMother.Create(); ! publisher.EmailUsers.Clear(); ! EmailMessage emailMessage = new EmailMessage(IntegrationResultMother.CreateFixed(), publisher); ! string actual = emailMessage.Recipients; ! Assert.AreEqual(expected, actual); } [Test] ! public void CreateModifiersList() { ! Modification[] modifications = CreateModifications(); ! string[] modifiers = GetEmailMessage(modifications).Modifiers; ! Assert.AreEqual(2, modifications.Length); ! Assert.AreEqual("se...@te...", modifiers[0]); ! Assert.AreEqual("or...@th...", modifiers[1]); } --- 12,71 ---- public class EmailMessageTest : CustomAssertion { + private static readonly EmailGroup alwaysGroup = new EmailGroup("alwaysGroup", EmailGroup.NotificationType.Always); + private static readonly EmailGroup failedGroup = new EmailGroup("failedGroup", EmailGroup.NotificationType.Failed); + private static readonly EmailGroup changedGroup = new EmailGroup("changedGroup", EmailGroup.NotificationType.Change); + private static readonly EmailUser always = new EmailUser("always", alwaysGroup.Name, "al...@th..."); + private static readonly EmailUser failed = new EmailUser("failed", failedGroup.Name, "fa...@th..."); + private static readonly EmailUser changed = new EmailUser("changed", changedGroup.Name, "ch...@th..."); + private static readonly EmailUser modifier = new EmailUser("modifier", changedGroup.Name, "mod...@th..."); + + private EmailPublisher publisher; + + [SetUp] + protected void CreatePublisher() + { + publisher = new EmailPublisher(); + publisher.EmailGroups.Add(alwaysGroup.Name, alwaysGroup); + publisher.EmailGroups.Add(changedGroup.Name, changedGroup); + publisher.EmailGroups.Add(failedGroup.Name, failedGroup); + publisher.EmailUsers.Add(always.Name, always); + publisher.EmailUsers.Add(failed.Name, failed); + publisher.EmailUsers.Add(changed.Name, changed); + publisher.EmailUsers.Add(modifier.Name, modifier); + } + [Test] ! public void VerifyRecipientListForFixedBuild() { ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateFixed()); ! Assert.AreEqual(ExpectedRecipients(always, changed, modifier), new EmailMessage(result, publisher).Recipients); } [Test] ! public void VerifyRecipientListForBuildStillSuccessful() { ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateStillSuccessful()); ! Assert.AreEqual(ExpectedRecipients(always, modifier), new EmailMessage(result, publisher).Recipients); } [Test] ! public void VerifyRecipientListForFailedBuild() { ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateFailed()); ! Assert.AreEqual(ExpectedRecipients(always, changed, failed, modifier), new EmailMessage(result, publisher).Recipients); } [Test] ! public void VerifyRecipientListForStillFailingBuild() { ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateStillFailing()); ! Assert.AreEqual(ExpectedRecipients(always, failed, modifier), new EmailMessage(result, publisher).Recipients); ! } ! ! [Test] ! public void CreateRecipientListWithNoRecipients() ! { ! EmailMessage emailMessage = new EmailMessage(IntegrationResultMother.CreateFixed(), new EmailPublisher()); ! Assert.AreEqual(string.Empty, emailMessage.Recipients); } *************** *** 56,62 **** public void CreateModifiersListForUnknownUser() { ! Modification[] modifications = new Modification[1] {ModificationMother.CreateModification("nosuchuser", DateTime.Now)}; ! string[] modifiers = GetEmailMessage(modifications).Modifiers; ! Assert.AreEqual(0, modifiers.Length); } --- 73,79 ---- public void CreateModifiersListForUnknownUser() { ! publisher.EmailUsers.Remove(modifier.Name); ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateStillSuccessful()); ! Assert.AreEqual(ExpectedRecipients(always), new EmailMessage(result, publisher).Recipients); } *************** *** 64,70 **** public void CreateModifiersListWithUnspecifiedUser() { ! Modification[] modifications = new Modification[1] {ModificationMother.CreateModification(null, DateTime.Now)}; ! string[] modifiers = GetEmailMessage(modifications).Modifiers; ! Assert.AreEqual(0, modifiers.Length); } --- 81,87 ---- public void CreateModifiersListWithUnspecifiedUser() { ! IIntegrationResult result = AddModification(IntegrationResultMother.CreateStillSuccessful()); ! result.Modifications[0].UserName = null; ! Assert.AreEqual(ExpectedRecipients(always), new EmailMessage(result, publisher).Recipients); } *************** *** 96,112 **** Assert.AreEqual("Project#9 Build Failed", subject); } - - /* - [Test] - public void CreateNotifyList() - { - string[] always = _publisher.CreateNotifyList(EmailGroup.NotificationType.Always); - Assert.AreEqual(1, always.Length); - Assert.AreEqual("se...@te...", always[0]); - - string[] change = _publisher.CreateNotifyList(EmailGroup.NotificationType.Change); - Assert.AreEqual(4, change.Length); - } - */ private static EmailMessage GetEmailMessage(IntegrationResult result, bool includeDetails) --- 113,116 ---- *************** *** 124,140 **** } ! private EmailMessage GetEmailMessage(Modification[] modifications) { ! IntegrationResult integrationResult = IntegrationResultMother.CreateSuccessful(modifications); ! return new EmailMessage(integrationResult, EmailPublisherMother.Create()); } ! private Modification[] CreateModifications() { ! return new Modification[] ! { ! ModificationMother.CreateModification("buildmaster", new DateTime(2004, 1, 1, 10, 0, 0)), ! ModificationMother.CreateModification("orogers", new DateTime(2004, 1, 1, 10, 0, 0)) ! }; } } --- 128,148 ---- } ! private IIntegrationResult AddModification(IIntegrationResult result) { ! Modification mod = new Modification(); ! mod.UserName = modifier.Name; ! result.Modifications = new Modification[1] {mod}; ! return result; } ! private string ExpectedRecipients(params EmailUser[] users) { ! StringBuilder builder = new StringBuilder(); ! foreach (EmailUser user in users) ! { ! if (builder.Length > 0) builder.Append(", "); ! builder.Append(user.Address); ! } ! return builder.ToString(); } } |
|
From: Owen R. <exo...@us...> - 2005-08-21 00:32:21
|
Update of /cvsroot/ccnet/ccnet/project/UnitTests/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4305/project/UnitTests/Core Modified Files: IntegrationResultMother.cs Log Message: CCNET-516 - modifiers should now always receive notification when their committed code is in the build Index: IntegrationResultMother.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/UnitTests/Core/IntegrationResultMother.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** IntegrationResultMother.cs 19 Jul 2005 12:24:28 -0000 1.7 --- IntegrationResultMother.cs 21 Aug 2005 00:32:11 -0000 1.8 *************** *** 113,116 **** --- 113,123 ---- return result; } + + public static IIntegrationResult CreateStillFailing() + { + IntegrationResult result = CreateFailed(); + result.LastIntegrationStatus = IntegrationStatus.Failure; + return result; + } } } \ No newline at end of file |
|
From: Owen R. <exo...@us...> - 2005-08-18 23:31:35
|
Update of /cvsroot/ccnet/ccnet/project/CCTrayLib/Presentation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20824/project/CCTrayLib/Presentation Modified Files: AddEditProject.cs Log Message: fixing spelling mistake in cctray Index: AddEditProject.cs =================================================================== RCS file: /cvsroot/ccnet/ccnet/project/CCTrayLib/Presentation/AddEditProject.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AddEditProject.cs 17 Jul 2005 21:36:38 -0000 1.2 --- AddEditProject.cs 18 Aug 2005 12:32:16 -0000 1.3 *************** *** 141,145 **** this.label5.TabIndex = 8; this.label5.Text = "Build servers can host multiple projects. Enter the project name to monitor here" + ! ". Click Fetch to retrive a list of projects hosted on the server."; // // btnFetch --- 141,145 ---- this.label5.TabIndex = 8; this.label5.Text = "Build servers can host multiple projects. Enter the project name to monitor here" + ! ". Click Fetch to retrieve a list of projects hosted on the server."; // // btnFetch |