Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeclan O’Brien2017-11-09 02:04:50 +0000
committerDavid Green2017-11-15 20:08:11 +0000
commitcd6a1b2fcaddbf25fb80f124dc11819006d1b374 (patch)
treea16e92880bff7888b29ad9e613004baa1d3e7226
parent713641ea683e9a6574e628280e8456e76f767836 (diff)
downloadorg.eclipse.mylyn.docs-cd6a1b2fcaddbf25fb80f124dc11819006d1b374.tar.gz
org.eclipse.mylyn.docs-cd6a1b2fcaddbf25fb80f124dc11819006d1b374.tar.xz
org.eclipse.mylyn.docs-cd6a1b2fcaddbf25fb80f124dc11819006d1b374.zip
527020: prevent infinite loop in paragraph starting with definition list
* update ParagraphBlock to return offSet * add unit tests to TextileLanguageDefinitionListTest Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=527020 Change-Id: I2be3515f40e33babfabf6e3f962d92c28d6e1c67 Signed-off-by: Declan O’Brien <declan.obrien@tasktop.com>
-rw-r--r--wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/block/ParagraphBlock.java4
-rw-r--r--wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/TextileLanguageDefinitionListTest.java45
2 files changed, 47 insertions, 2 deletions
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/block/ParagraphBlock.java b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/block/ParagraphBlock.java
index 77af3caa8..e67a518c8 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/block/ParagraphBlock.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/block/ParagraphBlock.java
@@ -21,7 +21,7 @@ import org.eclipse.mylyn.wikitext.textile.internal.Textile;
/**
* Matches any textile text, including lines starting with <code>p. </code>.
- *
+ *
* @author David Green
*/
public class ParagraphBlock extends Block {
@@ -76,7 +76,7 @@ public class ParagraphBlock extends Block {
for (Block block : textileLanguage.getParagraphBreakingBlocks()) {
if (block.canStart(line, offset)) {
setClosed(true);
- return 0;
+ return offset;
}
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/TextileLanguageDefinitionListTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/TextileLanguageDefinitionListTest.java
index f98844a5b..c65bd0709 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/TextileLanguageDefinitionListTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/TextileLanguageDefinitionListTest.java
@@ -12,6 +12,7 @@
package org.eclipse.mylyn.wikitext.textile;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
@@ -21,6 +22,7 @@ import java.util.List;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.BlockType;
import org.eclipse.mylyn.wikitext.parser.MarkupParser;
import org.eclipse.mylyn.wikitext.parser.builder.HtmlDocumentBuilder;
+import org.eclipse.mylyn.wikitext.textile.internal.TextileDocumentBuilder;
import org.eclipse.mylyn.wikitext.toolkit.RecordingDocumentBuilder;
import org.eclipse.mylyn.wikitext.toolkit.RecordingDocumentBuilder.Event;
import org.junit.Before;
@@ -48,6 +50,14 @@ public class TextileLanguageDefinitionListTest {
return out.toString();
}
+ private String textileToTextileRoundTrip(String testContent) {
+ StringWriter out = new StringWriter();
+ TextileDocumentBuilder builder = new TextileDocumentBuilder(out);
+ parser.setBuilder(builder);
+ parser.parse(testContent);
+ return out.toString();
+ }
+
@Test
public void simple() {
String html = parseToHtml("- one := two");
@@ -153,6 +163,41 @@ public class TextileLanguageDefinitionListTest {
}
@Test
+ public void definitionListToTextile() {
+ String testContent = "; a";
+ String result = textileToTextileRoundTrip(testContent);
+ assertEquals("- a\n", result);
+ }
+
+ @Test
+ public void definitionListToHtml() {
+ String testContent = "; a";
+ String html = parser.parseToHtml(testContent);
+ assertTrue(html.contains("<body><dl><dt>a</dt></dl></body>"));
+ }
+
+ @Test
+ public void paragraphContainingOnlyDefinitionListSyntaxToTextile() {
+ String testContent = "p. ; a";
+ String result = textileToTextileRoundTrip(testContent);
+ assertEquals("- a\n", result);
+ }
+
+ @Test
+ public void paragraphContainingOnlyDefinitionListSyntaxToHtml() {
+ String testContent = "p. ; a";
+ String html = parser.parseToHtml(testContent);
+ assertTrue(html.contains("<body><p></p><dl><dt>a</dt></dl></body>"));
+ }
+
+ @Test
+ public void paragraphContainingDefinitionListSyntaxToTextile() {
+ String testContent = "p. abc ; a";
+ String result = textileToTextileRoundTrip(testContent);
+ assertEquals("abc ; a\n\n", result);
+ }
+
+ @Test
public void offsets() {
RecordingDocumentBuilder builder = new RecordingDocumentBuilder();
MarkupParser markupParser = new MarkupParser(markupLanguage);

Back to the top