On Jun 10, 2010, at 9:44 AM, Thomas Mortagne wrote:
On Wed, Jun 9, 2010 at 20:12, Vincent Massol <[email protected]> wrote:
On Jun 9, 2010, at 6:01 PM, tmortagne (SVN) wrote:
Author: tmortagne Date: 2010-06-09 18:01:08 +0200 (Wed, 09 Jun 2010) New Revision: 29377
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-include/pom.xml platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-include/src/main/java/org/xwiki/rendering/internal/macro/include/IncludeMacro.java platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-include/src/test/java/org/xwiki/rendering/internal/macro/IncludeMacroTest.java Log: XWIKI-4115: Include macro should protect from recursive inclusion
[snip]
+ + @Test + public void testIncludeMacroWithRecursiveInclude() throws Exception + { + this.mockSetup.mockery.checking(new Expectations() {{ + oneOf(mockSetup.documentReferenceResolver).resolve("wiki:Space.Page"); + will(returnValue(new DocumentReference("wiki", "Space", "Page"))); + oneOf(mockSetup.documentReferenceResolver).resolve("Space.Page"); + will(returnValue(new DocumentReference("wiki", "Space", "Page"))); + }}); + + this.includeMacro.setDocumentAccessBridge(mockSetup.bridge); + + MacroBlock includeMacro = new MacroBlock("include", Collections.singletonMap("document", "wiki:Space.Page"), false); + new MacroMarkerBlock("include", Collections.singletonMap("document", "Space.Page"), Collections.<Block>singletonList(includeMacro), false); + MacroTransformationContext context = new MacroTransformationContext(); + context.setCurrentMacroBlock(includeMacro); + + IncludeMacroParameters parameters = new IncludeMacroParameters(); + parameters.setDocument("wiki:Space.Page"); + parameters.setContext(Context.CURRENT); + + List<Block> blocks; + try { + blocks = this.includeMacro.execute(parameters, null, context); + + Assert.fail("The include macro did not checked the recusive inclusion"); + } catch (MacroExecutionException e) {
s/e/expected/ ?
Yep would be more clear.
+ if (!e.getMessage().startsWith("Found recursive inclusion")) { + throw e;
I think you should do an Assert.assertTrue() instead here.
Actually i wanted to let the bad exception pass to see in the test log why the test failed instead of just it failed.
For the test to be correct it should generate a failure and not an error. Thanks -Vincent