402682: generated table of contents contains filename when generated
from wikitext-to-html Ant task even if file splitting is disabled

Change-Id: I4114c448e42e0f3c410c979cce51ce46cef909d2
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=402682
diff --git a/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java b/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
index bcd76f8..73b7380 100644
--- a/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
+++ b/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
@@ -379,7 +379,8 @@
 	private String adjustHref(String href) {
 		if (href != null && href.startsWith("#")) { //$NON-NLS-1$
 			SplitOutlineItem target = outline.getOutlineItemById(href.substring(1));
-			if (target != null && target.getSplitTarget() != null) {
+			if (target != null && target.getSplitTarget() != null
+					&& !currentFile.getName().equals(target.getSplitTarget())) {
 				href = target.getSplitTarget().replace(" ", "%20") + href; //$NON-NLS-1$ //$NON-NLS-2$
 			}
 		}
diff --git a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
index af9b545..5216b97 100644
--- a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
+++ b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
@@ -160,6 +160,55 @@
 		assertTrue(content2.contains("<a href=\"markup.html#HeadingOne\">link to one</a>"));
 	}
 
+	public void testTocFilenameCorrectnessSingleFile() throws IOException {
+		File markup = createTextileMarkupFile("{toc}\n\nh1. Heading One\n\nh1. Heading Two\n\nh2. Heading Two Point One");
+		task.setFile(markup);
+		task.setMultipleOutputFiles(false);
+		task.execute();
+
+		listFiles();
+
+		File htmlFile = new File(markup.getParentFile(), "markup.html");
+		assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+		String content = getContent(htmlFile);
+		TestUtil.println(content);
+
+		assertTrue(content.contains("<a href=\"#HeadingOne\">Heading One</a>"));
+		assertTrue(content.contains("<a href=\"#HeadingTwo\">Heading Two</a>"));
+	}
+
+	public void testTocFilenameCorrectnessMultipleFiles() throws IOException {
+		File markup = createTextileMarkupFile("{toc}\n\nh1. Heading One\n\nh1. Heading Two\n\nh2. Heading Two Point One\n\n\"link\":#HeadingOne");
+		task.setFile(markup);
+		task.setMultipleOutputFiles(true);
+		task.execute();
+
+		listFiles();
+
+		File htmlFile = new File(markup.getParentFile(), "markup.html");
+		assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+		String content = getContent(htmlFile);
+		TestUtil.println(content);
+
+		assertTrue(content.contains("<a href=\"#HeadingOne\">Heading One</a>"));
+		assertTrue(content.contains("<a href=\"Heading-Two.html#HeadingTwo\">Heading Two</a>"));
+		assertTrue(content.contains("<a href=\"Heading-Two.html#HeadingTwoPointOne\">Heading Two Point One</a>"));
+
+		// navigation
+		assertTrue(content.contains("<a href=\"Heading-Two.html\" title=\"Heading Two\">Next</a>"));
+
+		htmlFile = new File(markup.getParentFile(), "Heading-Two.html");
+		assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+		content = getContent(htmlFile);
+		TestUtil.println(content);
+
+		assertTrue(content.contains("<a href=\"markup.html\" title=\"Heading One\">Previous</a>"));
+		assertTrue(content.contains("<a href=\"markup.html#HeadingOne\">link</a>"));
+	}
+
 	protected File createSimpleTextileMarkup() throws IOException {
 		StringWriter out = new StringWriter();
 		PrintWriter writer = new PrintWriter(out);
@@ -203,4 +252,5 @@
 		ResourceBundle bundle = ResourceBundle.getBundle(MarkupToHtmlTask.class.getPackage().getName() + ".tasks");
 		assertEquals(MarkupToHtmlTask.class.getName(), bundle.getString("wikitext-to-html"));
 	}
+
 }