diff --git a/core/src/main/java/hudson/MarkupText.java b/core/src/main/java/hudson/MarkupText.java index 138dc6202d..1e46a384ca 100644 --- a/core/src/main/java/hudson/MarkupText.java +++ b/core/src/main/java/hudson/MarkupText.java @@ -98,7 +98,7 @@ public class MarkupText extends AbstractMarkupText { @Override public SubText subText(int start, int end) { return MarkupText.this.subText(this.start+start, - end<0 ? this.end+1+end : this.end+end); + end<0 ? this.end+1+end : this.start+end); } @Override diff --git a/core/src/test/java/hudson/MarkupTextTest.java b/core/src/test/java/hudson/MarkupTextTest.java index 1b5455cf94..06a63e837e 100644 --- a/core/src/test/java/hudson/MarkupTextTest.java +++ b/core/src/test/java/hudson/MarkupTextTest.java @@ -28,8 +28,6 @@ import hudson.MarkupText.SubText; import java.util.List; import java.util.regex.Pattern; -import java.net.URL; -import java.net.MalformedURLException; /** * @author Kohsuke Kawaguchi @@ -101,5 +99,20 @@ public class MarkupTextTest extends TestCase { assertEquals("Line
\n2 & 3\n<End>\n", text.toString(true)); } + /* @Bug(6252) */ + public void testSubTextSubText() { + MarkupText text = new MarkupText("abcdefgh"); + SubText sub = text.subText(2, 7); + assertEquals("cdefg", sub.getText()); + sub = sub.subText(1, 4); + assertEquals("def", sub.getText()); + + // test negative end + sub = text.subText(2, -3); + assertEquals("cdef", sub.getText()); + sub = sub.subText(1, -2); + assertEquals("de", sub.getText()); + } + private static final Pattern pattern = Pattern.compile("issue #([0-9]+)"); }