Index: test/net/sourceforge/cruisecontrol/util/XMLLogHelperTest.java
===================================================================
--- test/net/sourceforge/cruisecontrol/util/XMLLogHelperTest.java (revision 3558)
+++ test/net/sourceforge/cruisecontrol/util/XMLLogHelperTest.java (working copy)
@@ -136,6 +136,33 @@
}
}
+ public void testGetBaseLogFileName() {
+ XMLLogHelper successHelper = new XMLLogHelper(successfulLogElement);
+ try {
+ assertEquals("log20020313120000", successHelper.getBaseLogFileName());
+ } catch (CruiseControlException e) {
+ assertTrue(false);
+ }
+ }
+
+ public void testCreateBuildResultsURLNoSlashNoParameters() throws CruiseControlException {
+ XMLLogHelper successHelper = new XMLLogHelper(successfulLogElement);
+ assertEquals("http://localhost:8080?log=log20020313120000",
+ successHelper.createBuildResultsURL("http://localhost:8080"));
+ }
+
+ public void testCreateBuildResultsURLWithTrailingSlash() throws CruiseControlException {
+ XMLLogHelper successHelper = new XMLLogHelper(successfulLogElement);
+ assertEquals("http://localhost:8080/?log=log20020313120000",
+ successHelper.createBuildResultsURL("http://localhost:8080/"));
+ }
+
+ public void testCreateBuildResultsURLWithParameters() throws CruiseControlException {
+ XMLLogHelper successHelper = new XMLLogHelper(successfulLogElement);
+ assertEquals("http://localhost:8080/?foo=bar&log=log20020313120000",
+ successHelper.createBuildResultsURL("http://localhost:8080/?foo=bar"));
+ }
+
public void testWasPreviousBuildSuccessful() {
XMLLogHelper successHelper = new XMLLogHelper(successfulLogElement);
XMLLogHelper failureHelper = new XMLLogHelper(failedLogElement);
Index: src/net/sourceforge/cruisecontrol/util/XMLLogHelper.java
===================================================================
--- src/net/sourceforge/cruisecontrol/util/XMLLogHelper.java (revision 3558)
+++ src/net/sourceforge/cruisecontrol/util/XMLLogHelper.java (working copy)
@@ -36,17 +36,17 @@
********************************************************************************/
package net.sourceforge.cruisecontrol.util;
+import net.sourceforge.cruisecontrol.CruiseControlException;
+import net.sourceforge.cruisecontrol.DateFormatFactory;
+import net.sourceforge.cruisecontrol.Modification;
+import org.jdom.Element;
+
+import java.io.File;
import java.text.DateFormat;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-import net.sourceforge.cruisecontrol.CruiseControlException;
-import net.sourceforge.cruisecontrol.DateFormatFactory;
-import net.sourceforge.cruisecontrol.Modification;
-
-import org.jdom.Element;
-
/**
* Wrapper for the cruisecontrol build log. This class serves two purposes:
*
null
+ */
+ public String createBuildResultsURL(String buildResultsURLRoot) throws CruiseControlException {
+ if (buildResultsURLRoot == null) {
+ throw new IllegalArgumentException("null buildResultsURLRoot");
+ }
+ StringBuffer message = new StringBuffer();
+ message.append(buildResultsURLRoot);
+
+ if (buildResultsURLRoot.indexOf("?") == -1) {
+ message.append("?");
+ } else {
+ message.append("&");
+ }
+
+ message.append("log=");
+ message.append(getBaseLogFileName());
+
+ return message.toString();
+ }
+
+ /**
* @return the label for this build
*/
public String getLabel() throws CruiseControlException {
@@ -228,4 +272,8 @@
return !this.wasPreviousBuildSuccessful() && this.isBuildSuccessful();
}
+ public boolean isBuildNewlyBroken() throws CruiseControlException {
+ return this.wasPreviousBuildSuccessful() && !this.isBuildSuccessful();
+ }
+
}