You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2021/11/15 14:24:01 UTC

[jspwiki] 11/14: Speed up tests by reusing the same TestEngine

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit 598c59c4690e5d8c4fb40d9616eb6e066cdcfa67
Author: Juan Pablo Santos Rodríguez <ju...@gmail.com>
AuthorDate: Mon Nov 15 15:19:03 2021 +0100

    Speed up tests by reusing the same TestEngine
---
 .../test/java/org/apache/wiki/WikiSessionTest.java | 81 +++++++------------
 .../org/apache/wiki/plugin/CounterPluginTest.java  |  2 +-
 .../wiki/plugin/DefaultPluginManagerTest.java      | 11 ++-
 .../java/org/apache/wiki/plugin/GroupsTest.java    |  2 +-
 .../java/org/apache/wiki/plugin/IfPluginTest.java  | 16 ++--
 .../org/apache/wiki/plugin/InsertPageTest.java     | 24 ++----
 .../org/apache/wiki/plugin/PageViewPluginTest.java | 28 ++-----
 .../wiki/plugin/RecentChangesPluginTest.java       | 12 +--
 .../wiki/plugin/ReferringPagesPluginTest.java      | 91 +++++++++-------------
 .../plugin/ReferringUndefinedPagesPluginTest.java  | 86 ++++++++++----------
 .../wiki/plugin/UndefinedPagesPluginTest.java      | 23 +++---
 .../org/apache/wiki/plugin/WeblogPluginTest.java   |  2 +-
 12 files changed, 153 insertions(+), 225 deletions(-)

diff --git a/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java b/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
index 6a810ca..e40fad2 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/WikiSessionTest.java
@@ -35,7 +35,6 @@ import org.apache.wiki.auth.login.CookieAssertionLoginModule;
 import org.apache.wiki.auth.login.CookieAuthenticationLoginModule;
 import org.apache.wiki.ui.WikiServletFilter;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import javax.servlet.Filter;
@@ -53,21 +52,13 @@ import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
 
-public class WikiSessionTest
-{
 
-    private TestEngine m_engine = null;
+public class WikiSessionTest {
 
-    @BeforeEach
-    public void setUp() throws Exception
-    {
-        final Properties props = TestEngine.getTestProperties();
-        m_engine = new TestEngine( props );
-    }
+    private static TestEngine m_engine = TestEngine.build();
 
     @Test
-    public void testRoles() throws Exception
-    {
+    public void testRoles() throws Exception {
         Session session;
         Principal[] principals;
 
@@ -191,10 +182,9 @@ public class WikiSessionTest
     }
 
     @Test
-    public void testAuthenticationCookieWhenOn() throws WikiException, ServletException, IOException
-    {
+    public void testAuthenticationCookieWhenOn() throws WikiException, ServletException, IOException {
         final Properties props = TestEngine.getTestProperties();
-        props.setProperty( AuthenticationManager.PROP_ALLOW_COOKIE_AUTH, "true");
+        props.setProperty( AuthenticationManager.PROP_ALLOW_COOKIE_AUTH, "true" );
         m_engine = new TestEngine( props );
 
         final MockHttpServletRequest request;
@@ -211,10 +201,10 @@ public class WikiSessionTest
         request = m_engine.newHttpRequest();
         request.setUserPrincipal( null );
         request.setCookies( new Cookie[] { new Cookie( "JSPWikiUID", uid ) } );
-        runSecurityFilter(m_engine, request);
+        runSecurityFilter( m_engine, request );
         wikiSession = Wiki.session().find( m_engine, request );
-        Assertions.assertFalse( wikiSession.isAnonymous());
-        Assertions.assertTrue( wikiSession.isAuthenticated());
+        Assertions.assertFalse( wikiSession.isAnonymous() );
+        Assertions.assertTrue( wikiSession.isAuthenticated() );
         Assertions.assertEquals( "Fred Flintstone", wikiSession.getUserPrincipal().getName() );
 
         // Clear the authentication cookie
@@ -226,10 +216,9 @@ public class WikiSessionTest
      * Creates an anonymous user session.
      * @param engine the wiki engine
      * @return the new session
-     * @throws Exception
+     * @throws Exception session not anonymous.
      */
-    public static Session anonymousSession( final TestEngine engine ) throws Exception
-    {
+    public static Session anonymousSession( final TestEngine engine ) throws Exception {
         // Build anon session
         final MockHttpServletRequest request = engine.newHttpRequest();
 
@@ -238,8 +227,7 @@ public class WikiSessionTest
 
         // Make sure the user is actually anonymous
         final Session session = Wiki.session().find( engine, request );
-        if ( !session.isAnonymous() )
-        {
+        if ( !session.isAnonymous() ) {
             throw new IllegalStateException( "Session is not anonymous." );
         }
         return session;
@@ -250,20 +238,17 @@ public class WikiSessionTest
         return assertedSession( engine, name, new Principal[0] );
     }
 
-    public static Session assertedSession( final TestEngine engine, final String name, final Principal[] roles ) throws Exception
-    {
+    public static Session assertedSession( final TestEngine engine, final String name, final Principal[] roles ) throws Exception {
         // We can use cookies right?
-        if ( !engine.getManager( AuthenticationManager.class ).allowsCookieAssertions() )
-        {
+        if ( !engine.getManager( AuthenticationManager.class ).allowsCookieAssertions() ) {
             throw new IllegalStateException( "Couldn't set up asserted user: login config doesn't allow cookies." );
         }
 
         // Build anon session
         final MockHttpServletRequest request = engine.newHttpRequest();
         final Set<String> r = new HashSet<>();
-        for ( int i = 0; i < roles.length; i++ )
-        {
-            r.add( roles[i].getName() );
+        for( final Principal role : roles ) {
+            r.add( role.getName() );
         }
         request.setRoles( r );
 
@@ -278,13 +263,11 @@ public class WikiSessionTest
         return Wiki.session().find( engine, request );
     }
 
-    public static Session adminSession( final TestEngine engine ) throws Exception
-    {
+    public static Session adminSession( final TestEngine engine ) throws Exception {
         return authenticatedSession( engine, Users.ADMIN, Users.ADMIN_PASS );
     }
 
-    public static Session authenticatedSession( final TestEngine engine, final String id, final String password ) throws Exception
-    {
+    public static Session authenticatedSession( final TestEngine engine, final String id, final String password ) throws Exception {
         // Build anon session
         final MockHttpServletRequest request = engine.newHttpRequest();
 
@@ -296,21 +279,18 @@ public class WikiSessionTest
         engine.getManager( AuthenticationManager.class ).login( session, request, id, password );
 
         // Make sure the user is actually authenticated
-        if ( !session.isAuthenticated() )
-        {
+        if ( !session.isAuthenticated() ) {
             throw new IllegalStateException( "Could not log in authenticated user '" + id + "'" );
         }
         return session;
     }
 
-    public static Session containerAuthenticatedSession( final TestEngine engine, final String id, final Principal[] roles ) throws Exception
-    {
+    public static Session containerAuthenticatedSession( final TestEngine engine, final String id, final Principal[] roles ) throws Exception {
         // Build container session
         final MockHttpServletRequest request = engine.newHttpRequest();
         final Set<String> r = new HashSet<>();
-        for ( int i = 0; i < roles.length; i++ )
-        {
-            r.add( roles[i].getName() );
+        for( final Principal role : roles ) {
+            r.add( role.getName() );
         }
         request.setRoles( r );
         request.setUserPrincipal( new WikiPrincipal( id ) );
@@ -320,8 +300,7 @@ public class WikiSessionTest
 
         // Make sure the user is actually authenticated
         final Session session = Wiki.session().find( engine, request );
-        if ( !session.isAuthenticated() )
-        {
+        if ( !session.isAuthenticated() ) {
             throw new IllegalStateException( "Could not log in authenticated user '" + id + "'" );
         }
         return session;
@@ -330,13 +309,13 @@ public class WikiSessionTest
     /**
      * "Scaffolding" method that runs the session security filter on a mock request. We do this by creating a
      * complete mock servlet context and filter chain, and running the request through it.
+     *
      * @param engine the wiki engine
      * @param request the mock request to pass itnto the
-     * @throws ServletException
-     * @throws IOException
+     * @throws ServletException error building servlet context or running the request through it
+     * @throws IOException error building servlet context or running the request through it
      */
-    private static void runSecurityFilter( final WikiEngine engine, final HttpServletRequest request) throws ServletException, IOException
-    {
+    private static void runSecurityFilter( final WikiEngine engine, final HttpServletRequest request) throws ServletException, IOException {
         // Create a mock servlet context and stash the wiki engine in it
         final ServletContext servletCtx = new MockServletContext( "JSPWiki" );
         servletCtx.setAttribute( "org.apache.wiki.WikiEngine", engine );
@@ -356,8 +335,7 @@ public class WikiSessionTest
         filter.doFilter(request, null, chain );
     }
 
-    private static class MockServlet implements Servlet
-    {
+    private static class MockServlet implements Servlet {
         private ServletConfig m_config;
 
         @Override
@@ -376,12 +354,13 @@ public class WikiSessionTest
         }
 
         @Override
-        public void init( final ServletConfig config ) throws ServletException {
+        public void init( final ServletConfig config ) {
             m_config = config;
         }
 
         @Override
-        public void service( final ServletRequest request, final ServletResponse response ) throws ServletException, IOException {}
+        public void service( final ServletRequest request, final ServletResponse response ) {}
+
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
index c754690..36f25fc 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/CounterPluginTest.java
@@ -34,7 +34,7 @@ import java.io.StringReader;
 
 public class CounterPluginTest {
 
-    TestEngine testEngine = TestEngine.build();
+    static TestEngine testEngine = TestEngine.build();
 
     private String translate( final String src ) throws IOException {
         final Context context = Wiki.context().create( testEngine, Wiki.contents().page(testEngine, "TestPage") );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
index 0db4b27..fd68790 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/DefaultPluginManagerTest.java
@@ -20,8 +20,7 @@
 package org.apache.wiki.plugin;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.spi.Wiki;
@@ -36,15 +35,15 @@ import java.util.Properties;
 
 public class DefaultPluginManagerTest {
 
+    static Engine engine = TestEngine.build();
+    static PluginManager manager = engine.getManager( PluginManager.class );
     Properties props = TestEngine.getTestProperties();
-    WikiEngine engine = TestEngine.build();
-    DefaultPluginManager manager = new DefaultPluginManager( engine, props );
 
-    WikiContext context;
+    Context context;
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = new WikiContext( engine, Wiki.contents().page(engine, "Testpage") );
+        context = Wiki.context().create( engine, Wiki.contents().page(engine, "Testpage") );
     }
 
     @AfterEach
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/GroupsTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/GroupsTest.java
index 104c1ed..bfc2073 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/GroupsTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/GroupsTest.java
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test;
 
 public class GroupsTest {
 
-    TestEngine testEngine = TestEngine.build();
+    static TestEngine testEngine = TestEngine.build();
 
     @AfterEach
     public void tearDown() throws Exception {
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
index f737cbe..bc080da 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/IfPluginTest.java
@@ -22,10 +22,12 @@ import net.sourceforge.stripes.mock.MockHttpServletRequest;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.core.Session;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.providers.PageProvider;
+import org.apache.wiki.api.spi.Wiki;
 import org.apache.wiki.auth.AuthenticationManager;
 import org.apache.wiki.auth.Users;
 import org.apache.wiki.pages.PageManager;
@@ -36,7 +38,7 @@ import org.junit.jupiter.api.Test;
 
 public class IfPluginTest {
 
-    TestEngine testEngine = TestEngine.build();
+    static TestEngine testEngine = TestEngine.build();
 
     @AfterEach
     public void tearDown() throws Exception {
@@ -50,11 +52,11 @@ public class IfPluginTest {
      * @return {@link WikiContext} associated to given {@link Page}.
      * @throws WikiException problems while logging in.
      */
-    WikiContext getJanneBasedWikiContextFor( final Page page ) throws WikiException {
+    Context getJanneBasedWikiContextFor( final Page page ) throws WikiException {
         final MockHttpServletRequest request = testEngine.newHttpRequest();
         final Session session =  WikiSession.getWikiSession( testEngine, request );
         testEngine.getManager( AuthenticationManager.class ).login( session, request, Users.JANNE, Users.JANNE_PASS );
-        return new WikiContext( testEngine, request, page );
+        return Wiki.context().create( testEngine, request, page );
     }
 
     /**
@@ -70,7 +72,7 @@ public class IfPluginTest {
 
         testEngine.saveText( "Test", src );
         final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
-        final WikiContext context = getJanneBasedWikiContextFor( page );
+        final Context context = getJanneBasedWikiContextFor( page );
 
         final String res = testEngine.getManager( RenderingManager.class ).getHTML( context, page );
         Assertions.assertEquals( expected, res );
@@ -89,7 +91,7 @@ public class IfPluginTest {
 
         testEngine.saveText( "Test", src );
         final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
-        final WikiContext context = getJanneBasedWikiContextFor( page );
+        final Context context = getJanneBasedWikiContextFor( page );
 
         final String res = testEngine.getManager( RenderingManager.class ).getHTML( context, page );
         Assertions.assertEquals( expected, res );
@@ -107,7 +109,7 @@ public class IfPluginTest {
 
         testEngine.saveText( "Test", src );
         final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
-        final WikiContext context = getJanneBasedWikiContextFor( page );
+        final Context context = getJanneBasedWikiContextFor( page );
 
         final String res = testEngine.getManager( RenderingManager.class ).getHTML( context, page );
         Assertions.assertEquals( expected, res );
@@ -125,7 +127,7 @@ public class IfPluginTest {
 
         testEngine.saveText( "Test", src );
         final Page page = testEngine.getManager( PageManager.class ).getPage( "Test", PageProvider.LATEST_VERSION );
-        final WikiContext context = getJanneBasedWikiContextFor( page );
+        final Context context = getJanneBasedWikiContextFor( page );
 
         final String res = testEngine.getManager( RenderingManager.class ).getHTML( context, page );
         Assertions.assertEquals( expected, res );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/InsertPageTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/InsertPageTest.java
index a82aa3a..9082c4b 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/InsertPageTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/InsertPageTest.java
@@ -22,22 +22,12 @@ import org.apache.wiki.TestEngine;
 import org.apache.wiki.render.RenderingManager;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
 
+public class InsertPageTest {
 
-public class InsertPageTest
-{
-    protected TestEngine testEngine;
-    Properties props = TestEngine.getTestProperties();
-
-    @BeforeEach
-    public void setUp() throws Exception
-    {
-        testEngine = new TestEngine(props);
-    }
+    static protected TestEngine testEngine = TestEngine.build();
 
     @AfterEach
     public void tearDown() throws Exception
@@ -56,10 +46,9 @@ public class InsertPageTest
 
         testEngine.saveText("ThisPage",src);
 
-        // Just check that it contains a proper error message; don't bother do HTML
-        // checking.
+        // Just check that it contains a proper error message; don't bother do HTML checking.
         final String res = testEngine.getManager( RenderingManager.class ).getHTML("ThisPage");
-        Assertions.assertTrue( res.indexOf("Circular reference") != -1 );
+        Assertions.assertTrue( res.contains( "Circular reference" ) );
     }
 
     @Test
@@ -71,9 +60,8 @@ public class InsertPageTest
         testEngine.saveText("ThisPage",src);
         testEngine.saveText("ThisPage2",src2);
 
-        // Just check that it contains a proper error message; don't bother do HTML
-        // checking.
-        Assertions.assertTrue( testEngine.getManager( RenderingManager.class ).getHTML("ThisPage").indexOf("Circular reference") != -1 );
+        // Just check that it contains a proper error message; don't bother do HTML checking.
+        Assertions.assertTrue( testEngine.getManager( RenderingManager.class ).getHTML( "ThisPage" ).contains( "Circular reference" ) );
     }
 
     @Test
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
index f015842..ca69ef9 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/PageViewPluginTest.java
@@ -18,9 +18,7 @@
  */
 package org.apache.wiki.plugin;
 
-import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.spi.Wiki;
@@ -31,34 +29,21 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
+import static org.apache.wiki.TestEngine.with;
 
-public class PageViewPluginTest
-{
-    Properties props = TestEngine.getTestProperties();
+public class PageViewPluginTest {
 
-    TestEngine testEngine;
-
-    WikiContext context;
-
-    PluginManager manager;
+    TestEngine testEngine = TestEngine.build( with( "jspwiki.usePageCache", "false" ) );
 
     @BeforeEach
-    public void setUp() throws Exception
-    {
-        CacheManager.getInstance().removeAllCaches();
-        testEngine = new TestEngine( props );
-
+    public void setUp() throws Exception {
         // create pages that should be counted
         testEngine.saveText( "TestPage01", "this is test page 01 [{PageViewPlugin}]" );
         testEngine.saveText( "TestPage02", "this is test page 02 [{PageViewPlugin}]" );
-
-        manager = new DefaultPluginManager( testEngine, props );
     }
 
     @AfterEach
-    public void tearDown()
-    {
+    public void tearDown() {
         testEngine.deleteTestPage( "TestPage01" );
         testEngine.deleteTestPage( "TestPage02" );
         testEngine.deleteTestPage( "PageViews" );
@@ -66,8 +51,7 @@ public class PageViewPluginTest
     }
 
     @Test
-    public void testShowCountsBasic() throws Exception
-    {
+    public void testShowCountsBasic() throws Exception {
         final Page page1 = testEngine.getManager( PageManager.class ).getPage( "TestPage01" );
         final Context context1 = Wiki.context().create( testEngine, page1 );
         final Page page2 = testEngine.getManager( PageManager.class ).getPage( "TestPage02" );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
index 6a8506b..69cffae 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/RecentChangesPluginTest.java
@@ -19,7 +19,6 @@ under the License.
 
 package org.apache.wiki.plugin;
 
-import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.spi.Wiki;
@@ -28,12 +27,11 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
+import static org.apache.wiki.TestEngine.with;
 
 public class RecentChangesPluginTest {
-    Properties props = TestEngine.getTestProperties();
-    TestEngine testEngine = TestEngine.build( props );
-    PluginManager manager = new DefaultPluginManager(testEngine, props);
+    static TestEngine testEngine = TestEngine.build( with( "jspwiki.usePageCache", "false" ) );
+    static PluginManager manager = testEngine.getManager( PluginManager.class );
 
     Context context;
 
@@ -53,7 +51,6 @@ public class RecentChangesPluginTest {
         testEngine.deleteTestPage("TestPage04");
 
         TestEngine.emptyWorkDir();
-        CacheManager.getInstance().removeAllCaches();
     }
 
     /**
@@ -101,8 +98,7 @@ public class RecentChangesPluginTest {
     public void testParmExClude() throws Exception {
         context = Wiki.context().create(testEngine, Wiki.contents().page(testEngine, "TestPage03"));
 
-        final String res = manager.execute( context,
-                                      "{INSERT org.apache.wiki.plugin.RecentChangesPlugin exclude='TestPage03*'}" );
+        final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.RecentChangesPlugin exclude='TestPage03*'}" );
 
         Assertions.assertTrue(res.contains("<table class=\"recentchanges\" cellpadding=\"4\">"));
         Assertions.assertTrue(res.contains("<a href=\"/test/Wiki.jsp?page=TestPage01\">Test Page 01</a>"));
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
index 1512cbf..4cde715 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringPagesPluginTest.java
@@ -20,7 +20,6 @@
 package org.apache.wiki.plugin;
 
 import org.apache.wiki.TestEngine;
-import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.spi.Wiki;
@@ -30,22 +29,17 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import java.text.SimpleDateFormat;
-import java.util.Properties;
 
-public class ReferringPagesPluginTest
-{
-    Properties props = TestEngine.getTestProperties();
-    TestEngine engine;
-    WikiContext context;
-    PluginManager manager;
+import static org.apache.wiki.TestEngine.with;
 
-    @BeforeEach
-    public void setUp()
-        throws Exception
-    {
-        props.setProperty( "jspwiki.breakTitleWithSpaces", "false" );
-        engine = new TestEngine(props);
+public class ReferringPagesPluginTest  {
+
+    static TestEngine engine = TestEngine.build( with( "jspwiki.breakTitleWithSpaces", "false" ) );
+    static PluginManager manager = engine.getManager( PluginManager.class );
+    Context context;
 
+    @BeforeEach
+    public void setUp() throws Exception {
         engine.saveText( "TestPage", "Reference to [Foobar]." );
         engine.saveText( "Foobar", "Reference to [TestPage]." );
         engine.saveText( "Foobar2", "Reference to [TestPage]." );
@@ -55,13 +49,11 @@ public class ReferringPagesPluginTest
         engine.saveText( "Foobar6", "Reference to [TestPage]." );
         engine.saveText( "Foobar7", "Reference to [TestPage]." );
 
-        context = new WikiContext( engine, engine.newHttpRequest(), Wiki.contents().page( engine, "TestPage" ) );
-        manager = new DefaultPluginManager( engine, props );
+        context = Wiki.context().create( engine, engine.newHttpRequest(), Wiki.contents().page( engine, "TestPage" ) );
     }
 
     @AfterEach
-    public void tearDown()
-    {
+    public void tearDown() {
         engine.deleteTestPage( "TestPage" );
         engine.deleteTestPage( "Foobar" );
         engine.deleteTestPage( "Foobar2" );
@@ -84,35 +76,27 @@ public class ReferringPagesPluginTest
     @Test
     public void testSingleReferral() throws Exception {
         final Context context2 = Wiki.context().create( engine, Wiki.contents().page(engine, "Foobar") );
-
         final String res = manager.execute( context2, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
-
-        Assertions.assertEquals( mkLink( "TestPage" )+"<br />",
-                      res );
+        Assertions.assertEquals( mkLink( "TestPage" )+"<br />", res );
     }
 
     @Test
     public void testMaxReferences() throws Exception {
         final String res = manager.execute( context, "{INSERT org.apache.wiki.plugin.ReferringPagesPlugin WHERE max=5}");
-
         int count = 0;
         int index = -1;
 
-        // Count the number of hyperlinks.  We could check their
-        // correctness as well, though.
-
-        while( (index = res.indexOf("<a",index+1)) != -1 )
-        {
+        // Count the number of hyperlinks.  We could check their  correctness as well, though.
+        while( ( index = res.indexOf( "<a", index + 1  ) ) != -1 ) {
             count++;
         }
 
         // there is one extra "<a" in the result
-        Assertions.assertEquals( 5+1, count );
+        Assertions.assertEquals( 5 + 1, count );
 
         final String expected = ">...and 2 more</a>";
         count =0;
-        while( (index = res.indexOf(expected,index+1)) != -1 )
-        {
+        while( ( index = res.indexOf( expected,index + 1 ) ) != -1 ) {
             count++;
         }
         Assertions.assertEquals(1, count, "End");
@@ -138,27 +122,20 @@ public class ReferringPagesPluginTest
     }
 
     @Test
-    public void testExclude()
-        throws Exception
-    {
-        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*'}");
+    public void testExclude() throws Exception {
+        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*'}" );
         Assertions.assertEquals( "...nobody", res );
     }
 
     @Test
-    public void testExclude2()
-        throws Exception
-    {
-        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*7'}");
+    public void testExclude2() throws Exception {
+        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*7'}" );
         Assertions.assertEquals( res.indexOf( "Foobar7" ), -1 );
     }
 
     @Test
-    public void testExclude3()
-       throws Exception
-    {
-        final String res = manager.execute( context,
-                                      "{ReferringPagesPlugin exclude='*7,*5,*4'}");
+    public void testExclude3() throws Exception {
+        final String res = manager.execute( context, "{ReferringPagesPlugin exclude='*7,*5,*4'}" );
 
         Assertions.assertEquals( res.indexOf( "Foobar7" ), -1, "7" );
         Assertions.assertTrue( res.contains( "Foobar6" ), "6" );
@@ -169,10 +146,8 @@ public class ReferringPagesPluginTest
     }
 
     @Test
-    public void testCount() throws Exception
-    {
-        String result = null;
-        result = manager.execute(context, "{ReferringPagesPlugin show=count}");
+    public void testCount() throws Exception {
+        String result = manager.execute(context, "{ReferringPagesPlugin show=count}");
         Assertions.assertEquals("7",result);
 
         result = manager.execute(context, "{ReferringPagesPlugin,exclude='*7',show=count}");
@@ -190,16 +165,22 @@ public class ReferringPagesPluginTest
         // test if the proper exception is thrown:
         final String expectedExceptionString = "showLastModified=true is only valid if show=count is also specified";
         String exceptionString = null;
-        try
-        {
-            result = manager.execute(context, "{ReferringPagesPlugin,showLastModified=true}");
-        }
-        catch ( final PluginException pe)
-        {
+        try {
+            manager.execute(context, "{ReferringPagesPlugin,showLastModified=true}");
+        } catch ( final PluginException pe ) {
             exceptionString = pe.getMessage();
         }
 
-        Assertions.assertEquals(expectedExceptionString, exceptionString);
+        Assertions.assertEquals( expectedExceptionString, exceptionString );
+    }
+
+    @Test
+    public void testColumns() throws Exception {
+        final String columnsWithLists = manager.execute( context, "{ReferringPagesPlugin columns=2 before='#' after='\\n'}" );
+        Assertions.assertTrue( columnsWithLists.startsWith( "<div style=\"columns:2;-moz-columns:2;-webkit-columns:2;\"><ol><li>" ) );
+
+        final String columnsWithoutLists = manager.execute( context, "{ReferringPagesPlugin columns=2}" );
+        Assertions.assertTrue( columnsWithoutLists.startsWith( "<div style=\"columns:2;-moz-columns:2;-webkit-columns:2;\"><a class=\"wikipage\" href=\"/test/Wiki.jsp?page=Foobar\">Foobar</a><br /><a" ) );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
index 846fa0e..94daa28 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/ReferringUndefinedPagesPluginTest.java
@@ -18,7 +18,6 @@ under the License.
  */
 package org.apache.wiki.plugin;
 
-import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.spi.Wiki;
@@ -27,92 +26,91 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
+import static org.apache.wiki.TestEngine.with;
 
 
 public class ReferringUndefinedPagesPluginTest {
 
-    Properties props = TestEngine.getTestProperties();
-
-	TestEngine testEngine;
-
-	Context context;
-
-	PluginManager manager;
+	static TestEngine testEngine = TestEngine.build( with( "jspwiki.usePageCache", "false" ) );
+    static PluginManager manager = testEngine.getManager( PluginManager.class );
+    Context context;
 
     @BeforeEach
     public void setUp() throws Exception {
-        CacheManager.getInstance().removeAllCaches();
-		testEngine = new TestEngine(props);
+        testEngine.saveText( "TestPage01", "Some Text for testing 01 which refers [NonExistingPageA] " );
+        testEngine.saveText( "TestPage02", "Some Text for testing 02 which refers [NonExistingPageB] " );
+		testEngine.saveText( "TestPage03", "Some Text for testing 03 which refers [NonExistingPageC] " );
 
-        testEngine.saveText("TestPage01", "Some Text for testing 01 which refers [NonExistingPageA] ");
-        testEngine.saveText("TestPage02", "Some Text for testing 02 which refers [NonExistingPageB] ");
-		testEngine.saveText("TestPage03", "Some Text for testing 03 which refers [NonExistingPageC] ");
-
-        context = Wiki.context().create( testEngine, testEngine.newHttpRequest(), Wiki.contents().page(testEngine,"TestPage") );
-        manager = new DefaultPluginManager( testEngine, props );
+        context = Wiki.context().create( testEngine, testEngine.newHttpRequest(), Wiki.contents().page( testEngine,"TestPage" ) );
     }
 
     @AfterEach
     public void tearDown() {
-		testEngine.deleteTestPage("TestPage01");
-		testEngine.deleteTestPage("TestPage02");
-		testEngine.deleteTestPage("TestPage03");
+        testEngine.deleteTestPage( "TestPage01" );
+		testEngine.deleteTestPage( "TestPage02" );
+		testEngine.deleteTestPage( "TestPage03" );
 
-		TestEngine.emptyWorkDir();
-	}
+        TestEngine.emptyWorkDir();
+    }
 
 	/**
 	 * Plain test without parameters
 	 *
-	 * @throws Exception
+	 * @throws Exception something went wrong
 	 */
     @Test
 	public void testSimple() throws Exception {
-		final String res = manager.execute(context, "{INSERT ReferringUndefinedPagesPlugin}");
-		Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage01\""));
+		final String res = manager.execute( context, "{INSERT ReferringUndefinedPagesPlugin}" );
+		Assertions.assertTrue( res.contains( "href=\"/test/Wiki.jsp?page=TestPage01\"" ) );
 	}
 
 	/**
 	 * Test with the include parameter
 	 *
-	 * @throws Exception
+	 * @throws Exception something went wrong
 	 */
     @Test
-	public void testParmInClude() throws Exception {
-		final String res = manager.execute(context, "{INSERT ReferringUndefinedPagesPlugin} include='TestPage02*'}");
-		Assertions.assertFalse(res.contains("href=\"/test/Wiki.jsp?page=TestPage01\""));
-		Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage02\""));
-        Assertions.assertFalse(res.contains("href=\"/test/Wiki.jsp?page=TestPage03\""));
+	public void testParamInclude() throws Exception {
+		final String res = manager.execute( context, "{INSERT ReferringUndefinedPagesPlugin} include='TestPage02*'}" );
+		Assertions.assertFalse( res.contains("href=\"/test/Wiki.jsp?page=TestPage01\"" ) );
+		Assertions.assertTrue( res.contains("href=\"/test/Wiki.jsp?page=TestPage02\"" ) );
+        Assertions.assertFalse( res.contains("href=\"/test/Wiki.jsp?page=TestPage03\"" ) );
 	}
 
     /**
      * Test with the exclude parameter
      *
-     * @throws Exception
+     * @throws Exception something went wrong
      */
     @Test
-    public void testParmExClude() throws Exception {
-        final String res = manager.execute(context,"{INSERT ReferringUndefinedPagesPlugin} exclude='TestPage02*'}");
+    public void testParamExclude() throws Exception {
+        final String res = manager.execute( context,"{ReferringUndefinedPagesPlugin} exclude='TestPage02*'}" );
 
-        Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage01\""));
-        Assertions.assertFalse(res.contains("href=\"/test/Wiki.jsp?page=TestPage02\""));
-        Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage03\""));
+        Assertions.assertTrue( res.contains( "href=\"/test/Wiki.jsp?page=TestPage01\"" ) );
+        Assertions.assertFalse( res.contains( "href=\"/test/Wiki.jsp?page=TestPage02\"" ) );
+        Assertions.assertTrue( res.contains( "href=\"/test/Wiki.jsp?page=TestPage03\"" ) );
     }
 
     /**
      * Test with the max parameter
      *
-     * @throws Exception
+     * @throws Exception something went wrong
      */
     @Test
-    public void testParmMax() throws Exception {
-        final String res = manager.execute(context,"{INSERT ReferringUndefinedPagesPlugin} max='2'}");
+    public void testParamMax() throws Exception {
+        final String res = manager.execute( context,"{INSERT ReferringUndefinedPagesPlugin} max='2'}" );
+
+        Assertions.assertTrue( res.contains( "href=\"/test/Wiki.jsp?page=TestPage01\"" ) );
+        Assertions.assertTrue( res.contains( "href=\"/test/Wiki.jsp?page=TestPage02\"" ) );
+        Assertions.assertFalse( res.contains( "href=\"/test/Wiki.jsp?page=TestPage03\"" ) );
+        Assertions.assertTrue( res.contains( "...and 1 more" ) );
+    }
+
+    @Test
+    public void testUndefinedWithColumns() throws Exception {
+        final String res = manager.execute( context,"{ReferringUndefinedPagesPlugin columns=2" );
 
-        Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage01\""));
-        Assertions.assertTrue(res.contains("href=\"/test/Wiki.jsp?page=TestPage02\""));
-        Assertions.assertFalse(res.contains("href=\"/test/Wiki.jsp?page=TestPage03\""));
-        Assertions.assertTrue(res.contains("...and 1 more"));
+        Assertions.assertTrue( res.startsWith( "<div style=\"columns:2;-moz-columns:2;-webkit-columns:2;\"><a " ) );
     }
 
 }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
index 54a949e..e3f9547 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/UndefinedPagesPluginTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.wiki.plugin;
 
-import net.sf.ehcache.CacheManager;
 import org.apache.wiki.TestEngine;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.exceptions.PluginException;
@@ -30,26 +29,20 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.util.Properties;
+import static org.apache.wiki.TestEngine.with;
 
 
 public class UndefinedPagesPluginTest {
 
-    Properties props = TestEngine.getTestProperties();
-    TestEngine testEngine;
+    static TestEngine testEngine = TestEngine.build( with( "jspwiki.usePageCache", "false" ) );
+    static PluginManager manager = testEngine.getManager( PluginManager.class );
     Context context;
-    PluginManager manager;
 
     @BeforeEach
     public void setUp() throws Exception {
-        CacheManager.getInstance().removeAllCaches();
-        testEngine = new TestEngine(props);
-
         testEngine.saveText( "TestPage", "Reference to [Foobar]." );
         testEngine.saveText( "Foobar", "Reference to [Foobar 2], [Foobars]" );
-
-        context = Wiki.context().create( testEngine, Wiki.contents().page(testEngine, "TestPage") );
-        manager = new DefaultPluginManager( testEngine, props );
+        context = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, "TestPage" ) );
     }
 
     @AfterEach
@@ -78,6 +71,14 @@ public class UndefinedPagesPluginTest {
     }
 
     @Test
+    public void testUndefinedWithColumns() throws Exception {
+        final Context context2 = Wiki.context().create( testEngine, Wiki.contents().page( testEngine, "Foobar" ) );
+        final String res = manager.execute( context2,"{UndefinedPagesPlugin columns=2" );
+
+        Assertions.assertTrue( res.startsWith( "<div style=\"columns:2;-moz-columns:2;-webkit-columns:2;\"><a " ) );
+    }
+
+    @Test
     public void testCount() throws Exception {
         final String result = manager.execute( context, "{UndefinedPagesPlugin show=count}");
         Assertions.assertEquals("1", result );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java b/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java
index f568074..b8e00c6 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/plugin/WeblogPluginTest.java
@@ -10,7 +10,7 @@ import org.junit.jupiter.api.Test;
 
 public class WeblogPluginTest {
 
-    TestEngine testEngine = TestEngine.build();
+    static TestEngine testEngine = TestEngine.build();
 
     @AfterEach
     public void tearDown() throws Exception {