Author: vsiveton Date: Sat Jan 27 05:05:24 2007 New Revision: 500525 URL: http://svn.apache.org/viewvc?view=rev&rev=500525 Log: DOXIA-93: xdoc renderer chokes on multiple block elements in a section
o Add another test case to prove that the issue has already be solved Added: maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml (with props) Modified: maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java maven/doxia/trunk/doxia-site-renderer/src/test/resources/default-site.vm Modified: maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java?view=diff&rev=500525&r1=500524&r2=500525 ============================================================================== --- maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java (original) +++ maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java Sat Jan 27 05:05:24 2007 @@ -28,6 +28,7 @@ import org.apache.maven.doxia.site.decoration.DecorationModel; import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader; import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.util.FileUtils; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; @@ -52,6 +53,8 @@ public class DefaultSiteRendererTest extends PlexusTestCase { + private static final String OUTPUT = "target/output"; + private Renderer renderer; /** @@ -62,6 +65,9 @@ { super.setUp(); renderer = (Renderer) lookup( Renderer.ROLE ); + + // Safety + FileUtils.deleteDirectory( getTestFile( OUTPUT ) ); } /** @@ -74,6 +80,9 @@ super.tearDown(); } + /** + * @throws Exception + */ public void testRender() throws Exception { @@ -93,15 +102,19 @@ context.setDecoration( decoration ); context.addSiteDirectory( getTestFile( "src/test/site" ) ); - renderer.render( renderer.locateDocumentFiles( context ).values(), context, getTestFile( "target/output" ) ); + renderer.render( renderer.locateDocumentFiles( context ).values(), context, getTestFile( OUTPUT ) ); // ---------------------------------------------------------------------- // Verify specific pages // ---------------------------------------------------------------------- verifyCdcPage(); verifyNestedItemsPage(); + verifyMultipleBlock(); } + /** + * @throws Exception + */ public void verifyCdcPage() throws Exception { @@ -110,6 +123,9 @@ assertTrue( nestedItems.exists() ); } + /** + * @throws Exception + */ public void verifyNestedItemsPage() throws Exception { @@ -129,6 +145,10 @@ Iterator elementIterator = division.getAllHtmlChildElements(); + // ---------------------------------------------------------------------- + // Verify link + // ---------------------------------------------------------------------- + HtmlAnchor a = (HtmlAnchor) elementIterator.next(); assertNotNull( a ); assertEquals( a.getAttributeValue( "name" ), "list_section" ); @@ -139,14 +159,14 @@ HtmlHeader2 h2 = (HtmlHeader2) elementIterator.next(); assertNotNull( h2 ); - assertEquals( h2.asText(), "List Section"); + assertEquals( h2.asText(), "List Section" ); // ---------------------------------------------------------------------- // Unordered lists // ---------------------------------------------------------------------- HtmlHeader4 h4 = (HtmlHeader4) elementIterator.next(); assertNotNull( h4 ); - assertEquals( h4.asText(), "Unordered lists"); + assertEquals( h4.asText(), "Unordered lists" ); HtmlParagraph p = (HtmlParagraph) elementIterator.next(); assertNotNull( p ); @@ -168,7 +188,6 @@ assertNotNull( li ); // No paragraph renderer assertEquals( li.getFirstChild().asText(), "Item 11." ); - System.out.println(li.getFirstChild().asText() ); li = (HtmlListItem) elementIterator.next(); assertNotNull( li ); // No paragraph renderer @@ -230,7 +249,7 @@ // ---------------------------------------------------------------------- h4 = (HtmlHeader4) elementIterator.next(); assertNotNull( h4 ); - assertEquals( h4.asText(), "Ordered lists"); + assertEquals( h4.asText(), "Ordered lists" ); p = (HtmlParagraph) elementIterator.next(); assertNotNull( p ); @@ -311,7 +330,7 @@ // ---------------------------------------------------------------------- h4 = (HtmlHeader4) elementIterator.next(); assertNotNull( h4 ); - assertEquals( h4.asText(), "Definition lists"); + assertEquals( h4.asText(), "Definition lists" ); p = (HtmlParagraph) elementIterator.next(); assertNotNull( p ); @@ -363,6 +382,107 @@ p = (HtmlParagraph) elementIterator.next(); assertNotNull( p ); assertEquals( p.asText(), "Paragraph 6 below list." ); + + assertFalse( elementIterator.hasNext() ); + } + + /** + * @throws Exception + */ + public void verifyMultipleBlock() + throws Exception + { + File multipleblock = getTestFile( "target/output/multipleblock.html" ); + assertNotNull( multipleblock ); + assertTrue( multipleblock.exists() ); + + // HtmlUnit + WebClient webClient = new WebClient(); + HtmlPage page = (HtmlPage) webClient.getPage( multipleblock.toURL() ); + assertNotNull( page ); + + HtmlElement element = page.getHtmlElementById( "contentBox" ); + assertNotNull( element ); + HtmlDivision division = (HtmlDivision) element; + assertNotNull( division ); + + Iterator elementIterator = division.getAllHtmlChildElements(); + + // ---------------------------------------------------------------------- + // Verify link + // ---------------------------------------------------------------------- + + HtmlAnchor a = (HtmlAnchor) elementIterator.next(); + assertNotNull( a ); + assertEquals( a.getAttributeValue( "name" ), "section_name" ); + + HtmlDivision div = (HtmlDivision) elementIterator.next(); + assertNotNull( div ); + assertEquals( div.getAttributeValue( "class" ), "section" ); + + HtmlHeader2 h2 = (HtmlHeader2) elementIterator.next(); + assertNotNull( h2 ); + assertEquals( h2.asText(), "section name" ); + + // ---------------------------------------------------------------------- + // Paragraph + // ---------------------------------------------------------------------- + + HtmlParagraph p = (HtmlParagraph) elementIterator.next(); + assertNotNull( p ); + assertEquals( p.asText(), "text" ); + + // ---------------------------------------------------------------------- + // Unordered list + // ---------------------------------------------------------------------- + + HtmlUnorderedList ul = (HtmlUnorderedList) elementIterator.next(); + assertNotNull( ul ); + assertEquals( ul.getFirstChild().asText(), "" ); + + HtmlListItem li = (HtmlListItem) elementIterator.next(); + assertNotNull( li ); + assertEquals( li.getFirstChild().asText(), "list1" ); + + // ---------------------------------------------------------------------- + // Paragraph + // ---------------------------------------------------------------------- + + p = (HtmlParagraph) elementIterator.next(); + assertNotNull( p ); + assertEquals( p.asText(), "text2" ); + + // ---------------------------------------------------------------------- + // Unordered list + // ---------------------------------------------------------------------- + + ul = (HtmlUnorderedList) elementIterator.next(); + assertNotNull( ul ); + assertEquals( ul.getFirstChild().asText(), "" ); + + li = (HtmlListItem) elementIterator.next(); + assertNotNull( li ); + assertEquals( li.getFirstChild().asText(), "list1" ); + + // ---------------------------------------------------------------------- + // Paragraph + // ---------------------------------------------------------------------- + + p = (HtmlParagraph) elementIterator.next(); + assertNotNull( p ); + assertEquals( p.asText(), "text3" ); + + // ---------------------------------------------------------------------- + // Unordered list + // ---------------------------------------------------------------------- + + ul = (HtmlUnorderedList) elementIterator.next(); + assertNotNull( ul ); + assertEquals( ul.getFirstChild().asText(), "" ); + + li = (HtmlListItem) elementIterator.next(); + assertNotNull( li ); + assertEquals( li.getFirstChild().asText(), "list1" ); assertFalse( elementIterator.hasNext() ); } Modified: maven/doxia/trunk/doxia-site-renderer/src/test/resources/default-site.vm URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-site-renderer/src/test/resources/default-site.vm?view=diff&rev=500525&r1=500524&r2=500525 ============================================================================== --- maven/doxia/trunk/doxia-site-renderer/src/test/resources/default-site.vm (original) +++ maven/doxia/trunk/doxia-site-renderer/src/test/resources/default-site.vm Sat Jan 27 05:05:24 2007 @@ -1,5 +1,13 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +#macro ( link $href $name ) + #if ( ( $href.toLowerCase().startsWith("http") || $href.toLowerCase().startsWith("https") ) ) + <a href="$href" class="externalLink">$name</a> + #else + <a href="$href">$name</a> + #end +#end + #macro ( banner $banner $id ) #if ( $banner ) #if( $banner.href ) @@ -38,7 +46,7 @@ #set ( $counter = $counter + 1 ) #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) - <a href="$currentItemHref">$item.name</a> + #link( $currentItemHref $item.name ) #if ( $links.size() > $counter ) | #end @@ -55,7 +63,7 @@ #if ( $currentItemHref == $alignedFileName || $currentItemHref == "" ) $item.name #else - <a href="$currentItemHref">$item.name</a> + #link( $currentItemHref $item.name ) #end #if ( $breadcrumbs.size() > $counter ) > @@ -102,7 +110,7 @@ #if ( $item.img ) #if ( ! ( $item.img.toLowerCase().startsWith("http") || $item.img.toLowerCase().startsWith("https") ) ) #set ( $src = $PathTool.calculateLink( $item.img, $relativePath ) ) - #set ( $src = $item.img.replaceAll( "\\", "/" ) ) + #set ( $src = $src.replaceAll( "\\", "/" ) ) <img src="$src"/> #else <img src="$item.img" align="absbottom" style="border-width: 0"/> @@ -111,7 +119,7 @@ #if ( $alignedFileName == $currentItemHref ) <strong>$item.name</strong> #else - <a href="$currentItemHref">$item.name</a> + #link( $currentItemHref $item.name ) #end #if ( $item && $item.items && $item.items.size() > 0 ) #if ( $collapse == "expanded" ) @@ -130,11 +138,13 @@ #if ( $menu.name ) <h5>$menu.name</h5> #end + #if ( $menu.items && $menu.items.size() > 0 ) <ul> #foreach( $item in $menu.items ) #menuItem( $item ) #end </ul> + #end #end #end @@ -180,10 +190,17 @@ #end #set ( $breadcrumbs = $decoration.body.breadcrumbs ) + #set ( $links = $decoration.body.links ) + + #if ( $datePosition.equalsIgnoreCase( "right" ) && $links && $links.size() > 0 ) + #set ( $prefix = " |" ) + #else + #set ( $prefix = "" ) + #end #if ( $datePosition.equalsIgnoreCase( $position ) ) #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) ) - | $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday + $prefix $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday #if ( $versionPosition.equalsIgnoreCase( $position ) ) | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} #end @@ -207,7 +224,7 @@ #end #elseif ( $versionPosition.equalsIgnoreCase( $position ) ) #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) ) - | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + $prefix $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) ) <div id="lastPublished"> $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} @@ -252,19 +269,19 @@ #set ( $img = "images/logos/maven-feather.png" ) #end - <a href="$href" title="$name" id="poweredBy"> + <a href="$href" title="$name" class="poweredBy"> #set ( $img = $PathTool.calculateLink( $img, $relativePath ) ) #set ( $img = $img.replaceAll( "\\", "/" ) ) <img alt="$name" src="$img" /> </a> #end #if( $poweredBy.isEmpty() ) - <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> + <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy"> <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> </a> #end #else - <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> + <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy"> <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> </a> #end Added: maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml?view=auto&rev=500525 ============================================================================== --- maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml (added) +++ maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml Sat Jan 27 05:05:24 2007 @@ -0,0 +1,42 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +<document> + <properties> + <title>Test DOXIA-93</title> + <author email="[EMAIL PROTECTED]">Vincent Siveton</author> + </properties> + <body> + <section name="section name"> + <p>text</p> + <ul> + <li>list1</li> + </ul> + <p>text2</p> + <ul> + <li>list1</li> + </ul> + <p>text3</p> + <ul> + <li><p>list1</p></li> + </ul> + </section> + </body> +</document> Propchange: maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-site-renderer/src/test/site/xdoc/multipleblock.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"