Skip to content

Commit

Permalink
JENKINS-15380. Add some length checking before trying to substring.
Browse files Browse the repository at this point in the history
  • Loading branch information
thesam committed Dec 9, 2012
1 parent 8c2c59b commit e598bfb
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
11 changes: 6 additions & 5 deletions core/src/main/java/hudson/tasks/junit/ClassResult.java
Expand Up @@ -80,14 +80,15 @@ public ClassResult getPreviousResult() {
@Override
public hudson.tasks.test.TestResult findCorrespondingResult(String id) {
String myID = safe(getName());
String caseName = id;
int base = id.indexOf(myID);
String caseName;
if (base > 0) {
int caseNameStart = base + myID.length() + 1;
caseName = id.substring(caseNameStart);
} else {
caseName = id;
}
int caseNameLength = id.length() - caseNameStart;
if (caseNameLength > 0) {
caseName = id.substring(caseNameStart);
}
}

CaseResult child = getCaseResult(caseName);
if (child != null) {
Expand Down
41 changes: 41 additions & 0 deletions core/src/test/java/hudson/tasks/junit/ClassResultTest.java
@@ -0,0 +1,41 @@
package hudson.tasks.junit;

import hudson.tasks.test.TestResult;
import junit.framework.TestCase;

public class ClassResultTest extends TestCase {

public void testFindCorrespondingResult() {
ClassResult classResult = new ClassResult(null, "com.example.ExampleTest");

CaseResult caseResult = new CaseResult(null, "testCase", null);

classResult.add(caseResult);

TestResult result = classResult.findCorrespondingResult("extraprefix.com.example.ExampleTest.testCase");
assertEquals(caseResult, result);
}

public void testFindCorrespondingResultWhereClassResultNameIsNotSubstring() {
ClassResult classResult = new ClassResult(null, "aaaa");

CaseResult caseResult = new CaseResult(null, "tc_bbbb", null);

classResult.add(caseResult);

TestResult result = classResult.findCorrespondingResult("tc_bbbb");
assertEquals(caseResult, result);
}

public void testFindCorrespondingResultWhereClassResultNameIsLastInCaseResultName() {
ClassResult classResult = new ClassResult(null, "aaaa");

CaseResult caseResult = new CaseResult(null, "tc_aaaa", null);

classResult.add(caseResult);

TestResult result = classResult.findCorrespondingResult("tc_aaaa");
assertEquals(caseResult, result);
}

}

0 comments on commit e598bfb

Please sign in to comment.