From ff7f272a4b4e96d2efe8966f94c852fff2eea46d Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Tue, 16 Apr 2013 12:55:10 -0700 Subject: [PATCH] Fixing StringIndexOutOfBoundsException I'm not really sure what this code is doing or what ID is supposed to look like. So this is just a minimum-intrusion change to avoid an exception. java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1875) at hudson.tasks.junit.PackageResult.findCorrespondingResult(PackageResult.java:86) at hudson.tasks.junit.TestResult.findCorrespondingResult(TestResult.java:295) at hudson.tasks.test.AbstractTestResultAction.findCorrespondingResult(AbstractTestResultAction.java:183) at hudson.tasks.test.TestResult.getResultInBuild(TestResult.java:162) at hudson.tasks.junit.History.getList(History.java:82) at hudson.tasks.junit.History$1.createDataSet(History.java:105) at hudson.tasks.junit.History$GraphImpl.createGraph(History.java:169) at hudson.util.Graph.render(Graph.java:87) at hudson.util.Graph.doPng(Graph.java:98) --- .../java/hudson/tasks/junit/PackageResult.java | 15 ++++++++------- .../main/java/hudson/tasks/test/TestObject.java | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/hudson/tasks/junit/PackageResult.java b/core/src/main/java/hudson/tasks/junit/PackageResult.java index 16ac48ad8d..515c0368f4 100644 --- a/core/src/main/java/hudson/tasks/junit/PackageResult.java +++ b/core/src/main/java/hudson/tasks/junit/PackageResult.java @@ -82,15 +82,16 @@ public final class PackageResult extends MetaTabulatedResult implements Comparab @Override public TestResult findCorrespondingResult(String id) { String myID = safe(getName()); + int base = id.indexOf(myID); - String className; - String subId = null; + String className = id; // fall back value if (base > 0) { int classNameStart = base + myID.length() + 1; - className = id.substring(classNameStart); - } else { - className = id; - } + if (classNameStart 0) { subId = className.substring(classNameEnd + 1); @@ -106,7 +107,7 @@ public final class PackageResult extends MetaTabulatedResult implements Comparab return child.findCorrespondingResult(subId); } else { return child; - } + } } return null; diff --git a/core/src/main/java/hudson/tasks/test/TestObject.java b/core/src/main/java/hudson/tasks/test/TestObject.java index 4138a9c564..27234996f6 100644 --- a/core/src/main/java/hudson/tasks/test/TestObject.java +++ b/core/src/main/java/hudson/tasks/test/TestObject.java @@ -138,7 +138,7 @@ public abstract class TestObject extends hudson.tasks.junit.TestObject { StringBuilder buf = new StringBuilder(); TestObject next = this; TestObject cur = this; - // Walk up my ancesotors from leaf to root, looking for "it" + // Walk up my ancestors from leaf to root, looking for "it" // and accumulating a relative url as I go while (next!=null && it!=next) { cur = next; @@ -260,7 +260,7 @@ public abstract class TestObject extends hudson.tasks.junit.TestObject { /** * Find the test result corresponding to the one identified by id> - * withint this test result. + * within this test result. * * @param id The path to the original test result * @return A corresponding test result, or null if there is no corresponding