Index: src/org/apache/wiki/plugin/PageViewPlugin.java
===================================================================
--- src/org/apache/wiki/plugin/PageViewPlugin.java	(revision 1414506)
+++ src/org/apache/wiki/plugin/PageViewPlugin.java	(working copy)
@@ -42,6 +42,7 @@
 import org.apache.wiki.event.WikiEngineEvent;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
+import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.plugin.InitializablePlugin;
 import org.apache.wiki.plugin.PluginException;
 import org.apache.wiki.plugin.PluginManager;
@@ -139,11 +140,9 @@
         {
             if( c_singleton == null )
             {
-
                 c_singleton = new PageViewManager(  );
-
-                c_singleton.initialize( engine );
             }
+            c_singleton.initialize( engine );
         }
     }
 
@@ -289,6 +288,12 @@
                     log.info( "Detected wiki engine shutdown" );
                     handleShutdown();
                 }
+            } 
+            else if( (event instanceof WikiPageEvent) && (event.getType() == WikiPageEvent.PAGE_DELETED) )
+            {
+                 String pageName = ((WikiPageEvent) event).getPageName();
+                 m_storage.remove(pageName);
+                 m_counters.remove(pageName);
             }
         }
 
Index: src/org/apache/wiki/WikiEngine.java
===================================================================
--- src/org/apache/wiki/WikiEngine.java	(revision 1414506)
+++ src/org/apache/wiki/WikiEngine.java	(working copy)
@@ -48,6 +48,7 @@
 import org.apache.wiki.event.WikiEngineEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventManager;
+import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.filters.FilterException;
 import org.apache.wiki.filters.FilterManager;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -2182,6 +2183,7 @@
                     }
                 }
                 m_pageManager.deletePage( p );
+                firePageEvent( WikiPageEvent.PAGE_DELETED, pageName );
             }
         }
     }
@@ -2411,6 +2413,18 @@
     }
 
     /**
+     * Fires a WikiPageEvent to all registered listeners.
+     * @param type  the event type
+     */
+    protected final void firePageEvent( int type, String pageName )
+    {
+        if ( WikiEventManager.isListening(this) )
+        {
+            WikiEventManager.fireEvent(this,new WikiPageEvent(this,type,pageName));
+        }
+    }
+
+    /**
      * Adds an attribute to the engine for the duration of this engine.  The
      * value is not persisted.
      *
Index: tests/org/apache/wiki/plugin/PageViewPluginTest.java
===================================================================
--- tests/org/apache/wiki/plugin/PageViewPluginTest.java	(revision 1414506)
+++ tests/org/apache/wiki/plugin/PageViewPluginTest.java	(working copy)
@@ -39,25 +39,9 @@
 
     PluginManager manager;
 
-    /*
-     * Constructor is part of a workaround for execution ordering of the tests
-     */
-    public PageViewPluginTest ( String testName )
-    {
-        super( testName );
-    }
-
-    /*
-     * Second part of the workaround for execution ordering of the tests
-     */
     public static Test suite()
     {
-        TestSuite ts = new TestSuite();
-        ts.addTest( new PageViewPluginTest( "testShowCountsBasic" ) );
-        ts.addTest( new PageViewPluginTest( "testShowCountsExclude" ) );
-        ts.addTest( new PageViewPluginTest( "testShowCountsSorted" ) );
-        ts.addTest( new PageViewPluginTest( "testShowCountEntries" ) );
-        return ts;
+        return new TestSuite( PageViewPluginTest.class );
     }
 
     public void setUp() throws Exception
@@ -75,9 +59,9 @@
 
     public void tearDown()
     {
-        TestEngine.deleteTestPage( "TestPage01" );
-        TestEngine.deleteTestPage( "TestPage02" );
-        TestEngine.deleteTestPage( "PageViews" );
+        testEngine.nonStaticDeleteTestPage( "TestPage01" );
+        testEngine.nonStaticDeleteTestPage( "TestPage02" );
+        testEngine.nonStaticDeleteTestPage( "PageViews" );
         TestEngine.emptyWorkDir();
     }
 
@@ -137,7 +121,7 @@
         // this page should not have been shown:
         assertFalse( result.contains( "Test Page Excluded" ) );
 
-        TestEngine.deleteTestPage( "TestPageExcluded" );
+        testEngine.nonStaticDeleteTestPage( "TestPageExcluded" );
     }
 
     public void testShowCountsSorted() throws Exception
@@ -205,8 +189,8 @@
 
         assertFalse( result.contains( "Test Page 04" ) );
         
-        TestEngine.deleteTestPage( "TestPage03" );
-        TestEngine.deleteTestPage( "TestPage04" );
+        testEngine.nonStaticDeleteTestPage( "TestPage03" );
+        testEngine.nonStaticDeleteTestPage( "TestPage04" );
     }
 
 }
Index: tests/org/apache/wiki/TestEngine.java
===================================================================
--- tests/org/apache/wiki/TestEngine.java	(revision 1414506)
+++ tests/org/apache/wiki/TestEngine.java	(working copy)
@@ -36,6 +36,7 @@
 import org.apache.wiki.auth.SessionMonitor;
 import org.apache.wiki.auth.Users;
 import org.apache.wiki.auth.WikiSecurityException;
+import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.providers.AbstractFileProvider;
 import org.apache.wiki.providers.BasicAttachmentProvider;
 import org.apache.wiki.providers.FileSystemProvider;
@@ -254,6 +255,38 @@
     }
 
     /**
+     *  Removes a page, but not any auxiliary information.  Works only
+     *  with FileSystemProvider.
+     */
+    public void nonStaticDeleteTestPage( String name )
+    {
+        Properties properties = new Properties();
+
+        try
+        {
+            properties.load( findTestProperties() );
+            String files = properties.getProperty( FileSystemProvider.PROP_PAGEDIR );
+
+            File f = new File( files, mangleName(name)+FileSystemProvider.FILE_EXT );
+
+            f.delete();
+
+            // Remove the property file, too
+            f = new File( files, mangleName(name)+".properties" );
+
+            if( f.exists() )
+                f.delete();
+            
+            deleteAttachments( name );
+            firePageEvent( WikiPageEvent.PAGE_DELETED, name );
+        }
+        catch( Exception e )
+        {
+            log.error("Couldn't delete "+name, e );
+        }
+    }
+
+    /**
      *  Deletes all attachments related to the given page.
      */
     public static void deleteAttachments( String page )
