Author: danielf
Date: Thu Apr  7 13:19:48 2005
New Revision: 160454

URL: http://svn.apache.org/viewcvs?view=rev&rev=160454
Log:
SitemapTestCase is a base class for sitemap based functional testing, see 
generation/VirtualPipelineGeneratorTestCase for an example. Not much features 
and probably rather buggy this far. It uses the MockEnvironment as environment 
and the MockEnvironment hasn't full functionality yet.

Added:
    cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java   (with props)
    
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xconf
      - copied, changed from r160337, 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xtest
Removed:
    
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xtest
Modified:
    
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.java

Added: cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java?view=auto&rev=160454
==============================================================================
--- cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java (added)
+++ cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java Thu Apr  7 
13:19:48 2005
@@ -0,0 +1,116 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+package org.apache.cocoon;
+
+import java.net.URL;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.DefaultConfiguration;
+import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.Processor;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.environment.internal.EnvironmentHelper;
+import org.apache.cocoon.environment.mock.MockEnvironment;
+
+public class SitemapTestCase extends SitemapComponentTestCase {
+
+    protected Processor processor;
+    protected String classDir;
+    protected URL classDirURL;
+
+    public void setUp() throws Exception {
+        this.classDirURL = getClassDirURL();
+        this.classDir = this.classDirURL.toExternalForm();
+        super.setUp();
+        this.processor = (Processor)this.lookup(Processor.ROLE);
+    }
+
+    public void tearDown() throws Exception {
+        this.release(this.processor);
+        super.tearDown();
+    }
+
+    protected void prepare()
+    throws Exception {
+        // The context is set in addContext instead
+        Configuration context = new DefaultConfiguration("", "-");
+
+        URL rolesURL =
+            
getClass().getClassLoader().getResource("org/apache/cocoon/cocoon.roles");
+        DefaultConfigurationBuilder builder = new 
DefaultConfigurationBuilder();
+        Configuration roles = builder.build( rolesURL.openStream() );
+
+        String componentsName = getClass().getName().replace( '.', '/' ) + 
".xconf";
+        URL componentsURL = getClass().getClassLoader().getResource( 
componentsName );
+        Configuration components;
+        if ( componentsURL != null ) {
+            components = builder.build( componentsURL.openStream() );
+        } else {
+            components = new DefaultConfiguration("", "-");
+        }
+        prepare(context, roles, components);
+    }
+
+
+    // Hack to get the URL to the directory that this class is in
+    protected URL getClassDirURL() throws RuntimeException {
+        String className = getClass().getName().replace( '.', '/' ) + ".class";
+        try {
+            String classURL =
+                getClass().getClassLoader().getResource( className 
).toExternalForm();
+            String classDir = classURL.substring(0, classURL.lastIndexOf('/') 
+ 1);
+
+            return new URL(classDir);
+        } catch (Exception e) {
+            throw new RuntimeException("Couldn't create URL for " + className, 
e);
+        }
+    }
+
+    protected void addContext(DefaultContext context) {
+        super.addContext(context);
+        context.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, getContext());
+        context.put(ContextHelper.CONTEXT_ROOT_URL, this.classDirURL);
+    }
+
+    protected boolean addSourceFactories() {
+        return false;
+    }
+
+    protected byte[] process(String uri) throws Exception {
+        MockEnvironment env = new MockEnvironment();
+        env.setURI("", uri);
+        getRequest().setEnvironment(env);
+        env.setObjectModel(getObjectModel());
+
+        EnvironmentHelper.enterProcessor(this.processor, this.getManager(), 
env);
+        try {
+            this.processor.process(env);
+            getLogger().info("Output: " + new String(env.getOutput(), 
"UTF-8"));
+
+            return env.getOutput();
+        } finally {
+            EnvironmentHelper.leaveProcessor();
+        }
+    }
+
+    protected void pipeTest(String uri, String expectedSource) throws 
Exception {
+        byte[] expected = loadByteArray(this.classDir + expectedSource);
+        byte[] actual = process(uri);
+        assertIdentical(expected, actual);
+    }
+}

Propchange: cocoon/trunk/src/test/org/apache/cocoon/SitemapTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.java?view=diff&r1=160453&r2=160454
==============================================================================
--- 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.java
 (original)
+++ 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.java
 Thu Apr  7 13:19:48 2005
@@ -15,81 +15,9 @@
  */
 package org.apache.cocoon.generation;
 
-import java.net.URL;
-
-import org.apache.avalon.framework.context.DefaultContext;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.Processor;
-import org.apache.cocoon.SitemapComponentTestCase;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.internal.EnvironmentHelper;
-import org.apache.cocoon.environment.mock.MockEnvironment;
-
-public class VirtualPipelineGeneratorTestCase extends SitemapComponentTestCase 
{
-
-    private Processor processor;
-    private String classDir;
-    private URL classDirURL;
-
-    public void setUp() throws Exception {
-        this.classDirURL = getClassDirURL();
-        this.classDir = this.classDirURL.toExternalForm();
-        super.setUp();
-        this.processor = (Processor)this.lookup(Processor.ROLE);
-    }
-
-    public void tearDown() throws Exception {
-        this.release(this.processor);
-        super.tearDown();
-    }
-
-    // Hack to get the URL to the directory that this class is in
-    private URL getClassDirURL() throws RuntimeException {
-        String className = getClass().getName().replace( '.', '/' ) + ".class";
-        try {
-            String classURL =
-                getClass().getClassLoader().getResource( className 
).toExternalForm();
-            String classDir = classURL.substring(0, classURL.lastIndexOf('/') 
+ 1);
-
-            return new URL(classDir);
-        } catch (Exception e) {
-            throw new RuntimeException("Couldn't create URL for " + className, 
e);
-        }
-    }
-
-    protected void addContext(DefaultContext context) {
-        super.addContext(context);
-        context.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, getContext());
-        context.put(ContextHelper.CONTEXT_ROOT_URL, this.classDirURL);
-    }
-
-    protected boolean addSourceFactories() {
-        return false;
-    }
-
-    public byte[] process(String uri) throws Exception {
-        MockEnvironment env = new MockEnvironment();
-        env.setURI("", uri);
-        getRequest().setEnvironment(env);
-        env.setObjectModel(getObjectModel());
-
-        EnvironmentHelper.enterProcessor(this.processor, this.getManager(), 
env);
-        try {
-            this.processor.process(env);
-            getLogger().info("Output: " + new String(env.getOutput(), 
"UTF-8"));
-
-            return env.getOutput();
-        } finally {
-            EnvironmentHelper.leaveProcessor();
-        }
-    }
-
-    public void pipeTest(String uri, String expectedSource) throws Exception {
-        byte[] expected = loadByteArray(this.classDir + expectedSource);
-        byte[] actual = process(uri);
-        assertIdentical(expected, actual);
-    }
+import org.apache.cocoon.SitemapTestCase;
 
+public class VirtualPipelineGeneratorTestCase extends SitemapTestCase {
     public void testSimplePipe() throws Exception {
         pipeTest("test", "vpc-test.xml");
     }

Copied: 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xconf
 (from r160337, 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xtest)
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xconf?view=diff&rev=160454&p1=cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xtest&r1=160337&p2=cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xconf&r2=160454
==============================================================================
--- 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xtest
 (original)
+++ 
cocoon/trunk/src/test/org/apache/cocoon/generation/VirtualPipelineGeneratorTestCase.xconf
 Thu Apr  7 13:19:48 2005
@@ -15,77 +15,32 @@
   limitations under the License.
 -->
 
-<testcase>
-  <roles>
-    <role name="org.apache.excalibur.xml.sax.SAXParser"
-          shorthand="xml-parser"
-          default-class="org.apache.excalibur.xml.impl.JaxpParser"/>
-    <role name="org.apache.excalibur.xmlizer.XMLizer"
-          shorthand="xmlizer"
-          default-class="org.apache.excalibur.xmlizer.DefaultXMLizer"/>
-    <role 
name="org.apache.cocoon.components.pipeline.ProcessingPipelineSelector"
-          shorthand="pipes"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector"/>
-    <role name="org.apache.cocoon.matching.MatcherSelector"
-          shorthand="matchers"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector"/>
-    <role name="org.apache.cocoon.generation.GeneratorSelector"
-          shorthand="generators"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector"/>
-    <role name="org.apache.cocoon.transformation.TransformerSelector"
-          shorthand="transformers"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector"/>
-      
-    <role name="org.apache.cocoon.serialization.SerializerSelector"
-          shorthand="serializers"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.ComponentsSelector"/>
-    <role name="org.apache.excalibur.source.SourceFactorySelector"
-          shorthand="source-factories"
-          
default-class="org.apache.cocoon.core.container.DefaultServiceSelector"/>
-    <role name="org.apache.excalibur.source.SourceResolver"
-          shorthand="source-resolver"
-          default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
-    <role name="org.apache.cocoon.Processor"
-          shorthand="sitemap"
-          
default-class="org.apache.cocoon.components.treeprocessor.TreeProcessor"/>
-    <role 
name="org.apache.cocoon.components.treeprocessor.TreeBuilder/sitemap-1.0"
-          
default-class="org.apache.cocoon.components.treeprocessor.sitemap.SitemapLanguage"/>
-    <role name="org.apache.cocoon.components.modules.input.InputModuleSelector"
-          shorthand="input-modules"
-          
default-class="org.apache.cocoon.core.container.DefaultServiceSelector"/>
-    <role name="org.apache.cocoon.components.fam.SitemapMonitor"
-          shorthand="fam"
-          default-class="org.apache.cocoon.components.fam.SitemapMonitorImpl"/>
-  </roles>
- 
-  <components>
-    <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
-      <parameter name="validate" value="false"/>
-      <parameter name="namespace-prefixes" value="false"/>
-      <parameter name="stop-on-warning" value="true"/>
-      <parameter name="stop-on-recoverable-error" value="true"/>
-      <parameter name="reuse-parsers" value="false"/>
-    </xml-parser>
+<components>
+  <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
+    <parameter name="validate" value="false"/>
+    <parameter name="namespace-prefixes" value="false"/>
+    <parameter name="stop-on-warning" value="true"/>
+    <parameter name="stop-on-recoverable-error" value="true"/>
+    <parameter name="reuse-parsers" value="false"/>
+  </xml-parser>
 
-    <xmlizer/>
+  <xmlizer/>
 
-    <input-modules>
-      <component-instance 
class="org.apache.cocoon.components.modules.input.EnvironmentAttributeModule" 
name="environment-attribute"/>
-    </input-modules>
+  <input-modules>
+    <component-instance 
class="org.apache.cocoon.components.modules.input.EnvironmentAttributeModule" 
name="environment-attribute"/>
+  </input-modules>
 
-    <source-factories>
-      <component-instance 
class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
-      <component-instance 
class="org.apache.cocoon.components.source.impl.ContextSourceFactory" 
name="context"/>
-      <component-instance 
class="org.apache.cocoon.components.source.impl.ModuleSourceFactory" 
name="module"/>
-      <component-instance 
class="org.apache.cocoon.components.source.impl.XModuleSourceFactory" 
name="xmodule"/>
-      <component-instance 
class="org.apache.excalibur.source.impl.FileSourceFactory" name="file"/>
-      <component-instance 
class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
-    </source-factories>
+  <source-factories>
+    <component-instance 
class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
+    <component-instance 
class="org.apache.cocoon.components.source.impl.ContextSourceFactory" 
name="context"/>
+    <component-instance 
class="org.apache.cocoon.components.source.impl.ModuleSourceFactory" 
name="module"/>
+    <component-instance 
class="org.apache.cocoon.components.source.impl.XModuleSourceFactory" 
name="xmodule"/>
+    <component-instance 
class="org.apache.excalibur.source.impl.FileSourceFactory" name="file"/>
+    <component-instance 
class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
+  </source-factories>
 
-    <!-- Relative sitemap path works during sitemap execution but
-         give exceptions during decommissioning -->
-    <sitemap file="resource://org/apache/cocoon/generation/vpc-sitemap.xmap"/>
+  <!-- Relative sitemap path works during sitemap execution but
+       give exceptions during decommissioning -->
+  <sitemap file="resource://org/apache/cocoon/generation/vpc-sitemap.xmap"/>
 
-  </components>
- 
-</testcase>
+</components>
\ No newline at end of file


Reply via email to