You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2007/12/13 20:18:57 UTC
svn commit: r603991 - in /tapestry/tapestry5/trunk: ./
tapestry-core/src/main/java/org/apache/tapestry/
tapestry-core/src/main/java/org/apache/tapestry/internal/test/
tapestry-core/src/test/java/org/apache/tapestry/integration/
tapestry-core/src/test/j...
Author: hlship
Date: Thu Dec 13 11:18:56 2007
New Revision: 603991
URL: http://svn.apache.org/viewvc?rev=603991&view=rev
Log:
Work-around brain damaged maven-surefire-plugin (which fails to set the current directory) so that tests run correctly from Maven
Added:
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java
Modified:
tapestry/tapestry5/trunk/pom.xml
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java
Modified: tapestry/tapestry5/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/pom.xml?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/pom.xml (original)
+++ tapestry/tapestry5/trunk/pom.xml Thu Dec 13 11:18:56 2007
@@ -232,7 +232,7 @@
<suiteXmlFile>src/test/conf/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<argLine>-Xmx500m</argLine>
- <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <redirectTestOutputToFile>false</redirectTestOutputToFile>
</configuration>
</plugin>
<plugin>
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java Thu Dec 13 11:18:56 2007
@@ -126,4 +126,5 @@
* @return the informal Block parameter, or null if not bound
*/
Block getBlockParameter(String parameterName);
+
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java Thu Dec 13 11:18:56 2007
@@ -15,6 +15,7 @@
package org.apache.tapestry.internal.test;
import org.apache.tapestry.services.Context;
+import org.apache.tapestry.test.TapestryTestConstants;
import java.io.File;
import java.net.MalformedURLException;
@@ -23,11 +24,11 @@
public class PageTesterContext implements Context
{
- private final String _contextRoot;
+ private final File _contextRoot;
public PageTesterContext(String contextRoot)
{
- _contextRoot = contextRoot;
+ _contextRoot = new File(TapestryTestConstants.MODULE_BASE_DIR, contextRoot);
}
public String getInitParameter(String name)
@@ -55,14 +56,12 @@
public List<String> getResourcePaths(String path)
{
- throw new UnsupportedOperationException(
- "getResourcePaths() is not supported for ContextForPageTester.");
+ throw new UnsupportedOperationException("getResourcePaths() is not supported for ContextForPageTester.");
}
public Object getAttribute(String name)
{
- throw new UnsupportedOperationException(
- "getAttribute() is not supported for ContextForPageTester.");
+ throw new UnsupportedOperationException("getAttribute() is not supported for ContextForPageTester.");
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java Thu Dec 13 11:18:56 2007
@@ -16,6 +16,8 @@
import org.apache.tapestry.test.JettyRunner;
+import java.io.File;
+
/**
* A "shim" to run Demo App #1 inside IntelliJ. I still haven't found a way to get IntelliJ to
* export test classes and resources into a web facet.
@@ -27,6 +29,8 @@
String contextName = args[0];
String path = args[1];
- new JettyRunner(contextName, 8080, path);
+ File workingDir = new File(System.getProperty("user.dir"));
+
+ new JettyRunner(workingDir, contextName, 8080, path);
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java Thu Dec 13 11:18:56 2007
@@ -22,6 +22,7 @@
import org.apache.tapestry.ioc.internal.util.ClasspathResource;
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
import org.apache.tapestry.ioc.internal.util.TapestryException;
+import org.apache.tapestry.test.TapestryTestConstants;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -449,9 +450,7 @@
TextToken t1 = get(tokens, 1);
- assertEquals(
- t1.getText().replaceAll("\\s+", " "),
- " ${expansions must be on a single line} ");
+ assertEquals(t1.getText().replaceAll("\\s+", " "), " ${expansions must be on a single line} ");
}
@@ -553,28 +552,21 @@
@DataProvider(name = "parse_failure_data")
public Object[][] parse_failure_data()
{
- return new Object[][]
- {
- {
- "mixin_requires_id_or_type.tml",
- "You may not specify mixins for element <span> because it does not represent a component (which requires either an id attribute or a type attribute).",
- 2},
- {"illegal_nesting_within_body_element.tml",
- "Element 'xyz' is nested within a Tapestry body element", 2},
- {
- "unexpected_attribute_in_parameter_element.tml",
- "Element <parameter> does not support an attribute named 'grok'. The only allowed attribute name is 'name'.",
- 4},
- {"name_attribute_of_parameter_element_omitted.tml",
- "The name attribute of the <parameter> element must be specified.", 4},
- {"name_attribute_of_parameter_element_blank.tml",
- "The name attribute of the <parameter> element must be specified.", 4},
- {
- "unexpected_attribute_in_block_element.tml",
- "Element <block> does not support an attribute named 'name'. The only allowed attribute name is 'id'.",
- 3},
+ return new Object[][]{{"mixin_requires_id_or_type.tml",
+ "You may not specify mixins for element <span> because it does not represent a component (which requires either an id attribute or a type attribute).",
+ 2}, {"illegal_nesting_within_body_element.tml",
+ "Element 'xyz' is nested within a Tapestry body element", 2}, {
+ "unexpected_attribute_in_parameter_element.tml",
+ "Element <parameter> does not support an attribute named 'grok'. The only allowed attribute name is 'name'.",
+ 4}, {"name_attribute_of_parameter_element_omitted.tml",
+ "The name attribute of the <parameter> element must be specified.", 4}, {
+ "name_attribute_of_parameter_element_blank.tml",
+ "The name attribute of the <parameter> element must be specified.", 4}, {
+ "unexpected_attribute_in_block_element.tml",
+ "Element <block> does not support an attribute named 'name'. The only allowed attribute name is 'id'.",
+ 3},
- };
+ };
}
@Test(dataProvider = "parse_failure_data")
@@ -589,11 +581,8 @@
{
if (!ex.getMessage().contains(errorMessageSubstring))
{
- throw new AssertionError(
- format(
- "Message [%s] does not contain substring [%s].",
- ex.getMessage(),
- errorMessageSubstring));
+ throw new AssertionError(format("Message [%s] does not contain substring [%s].", ex.getMessage(),
+ errorMessageSubstring));
}
assertEquals(ex.getLocation().getLine(), expectedLine);
@@ -603,11 +592,8 @@
@DataProvider(name = "doctype_parsed_correctly_data")
public Object[][] doctype_parsed_correctly_data()
{
- return new Object[][]
- {
- {"xhtml1_strict_doctype.tml"},
- {"xhtml1_transitional_doctype.tml"},
- {"xhtml1_frameset_doctype.tml"}};
+ return new Object[][]{{"xhtml1_strict_doctype.tml"}, {"xhtml1_transitional_doctype.tml"},
+ {"xhtml1_frameset_doctype.tml"}};
}
@Test(dataProvider = "doctype_parsed_correctly_data")
@@ -622,30 +608,36 @@
@DataProvider(name = "doctype_token_added_correctly_data")
public Object[][] doctype_token_added_correctly_data()
{
- return new Object[][]
- {
- {"xhtml1_strict_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Strict//EN",
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"},
- {"xhtml1_transitional_doctype.tml", "html",
- "-//W3C//DTD XHTML 1.0 Transitional//EN",
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"},
- {"xhtml1_frameset_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Frameset//EN",
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"},
- {"html4_strict_doctype.tml", "HTML", "-//W3C//DTD HTML 4.01//EN",
- "http://www.w3.org/TR/html4/strict.dtd"},
- {"html4_transitional_doctype.tml", "HTML",
- "-//W3C//DTD HTML 4.01 Transitional//EN",
- "http://www.w3.org/TR/html4/loose.dtd"},
- {"html4_frameset_doctype.tml", "HTML", "-//W3C//DTD HTML 4.01 Frameset//EN",
- "http://www.w3.org/TR/html4/frameset.dtd"},
- {"system_doctype.xml", "foo", null,
- "src/test/resources/org/apache/tapestry/internal/services/simple.dtd"}};
+ return new Object[][]{{"xhtml1_strict_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Strict//EN",
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"}, {"xhtml1_transitional_doctype.tml",
+ "html",
+ "-//W3C//DTD XHTML 1.0 Transitional//EN",
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"},
+ {"xhtml1_frameset_doctype.tml",
+ "html",
+ "-//W3C//DTD XHTML 1.0 Frameset//EN",
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"},
+ {"html4_strict_doctype.tml",
+ "HTML",
+ "-//W3C//DTD HTML 4.01//EN",
+ "http://www.w3.org/TR/html4/strict.dtd"},
+ {"html4_transitional_doctype.tml",
+ "HTML",
+ "-//W3C//DTD HTML 4.01 Transitional//EN",
+ "http://www.w3.org/TR/html4/loose.dtd"},
+ {"html4_frameset_doctype.tml",
+ "HTML",
+ "-//W3C//DTD HTML 4.01 Frameset//EN",
+ "http://www.w3.org/TR/html4/frameset.dtd"},
+ {"system_doctype.xml", "foo", null,
+ "src/test/resources/org/apache/tapestry/internal/services/simple.dtd"}};
}
@Test(dataProvider = "doctype_token_added_correctly_data")
- public void doctype_added_correctly(String fileName, String name, String publicId,
- String systemId) throws Exception
+ public void doctype_added_correctly(String fileName, String name, String publicId, String systemId) throws Exception
{
+ System.setProperty("user.dir", TapestryTestConstants.MODULE_BASE_DIR_PATH);
+
List<TemplateToken> tokens = tokens(fileName);
DTDToken t2 = get(tokens, 0);
assertEquals(t2.getName(), name);
Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java (original)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java Thu Dec 13 11:18:56 2007
@@ -184,7 +184,7 @@
@BeforeClass(alwaysRun = true)
public void setup() throws Exception
{
- _jettyRunner = new JettyRunner("/", JETTY_PORT, _webappRoot);
+ _jettyRunner = new JettyRunner(TapestryTestConstants.MODULE_BASE_DIR, "/", JETTY_PORT, _webappRoot);
_server = new SeleniumServer();
Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java?rev=603991&r1=603990&r2=603991&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java (original)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java Thu Dec 13 11:18:56 2007
@@ -19,6 +19,7 @@
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.WebApplicationContext;
+import java.io.File;
import static java.lang.String.format;
/**
@@ -33,6 +34,8 @@
public static final int DEFAULT_PORT = 80;
+ private final File _workingDir;
+
private final String _contextPath;
private final int _port;
@@ -42,23 +45,17 @@
private final Server _jetty;
/**
- * Defaults the context path to "/" and the port to 80.
- */
- public JettyRunner(String warPath)
- {
- this(DEFAULT_CONTEXT_PATH, DEFAULT_PORT, warPath);
- }
-
- /**
* Creates and starts a new instance of Jetty. This should be done from a test case setup
* method.
*
+ * @param workingDir current directory (used for any relative files)
* @param contextPath the context path for the deployed application
* @param port the port number used to access the application
* @param warPath the path to the exploded web application (typically, "src/main/webapp")
*/
- public JettyRunner(String contextPath, int port, String warPath)
+ public JettyRunner(File workingDir, String contextPath, int port, String warPath)
{
+ _workingDir = workingDir;
_contextPath = contextPath;
_port = port;
_warPath = warPath;
@@ -99,10 +96,14 @@
private Server createAndStart()
{
- System.out.printf("Starting Jetty instance on port %d (%s mapped to %s)\n", _port, _contextPath, _warPath);
-
try
{
+
+ String warPath = new File(_workingDir, _warPath).getPath();
+ String webDefaults = new File(_workingDir, "src/test/conf/webdefault.xml").getPath();
+
+ System.out.printf("Starting Jetty instance on port %d (%s mapped to %s)\n", _port, _contextPath, warPath);
+
Server server = new Server();
SocketListener socketListener = new SocketListener();
@@ -112,9 +113,9 @@
NCSARequestLog log = new NCSARequestLog();
server.setRequestLog(log);
- WebApplicationContext context = server.addWebApplication(_contextPath, _warPath);
+ WebApplicationContext context = server.addWebApplication(_contextPath, warPath);
- context.setDefaultsDescriptor("src/test/conf/webdefault.xml");
+ context.setDefaultsDescriptor(webDefaults);
server.start();
Added: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java?rev=603991&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java (added)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java Thu Dec 13 11:18:56 2007
@@ -0,0 +1,38 @@
+// Copyright 2007 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.tapestry.test;
+
+import java.io.File;
+
+public class TapestryTestConstants
+{
+ /**
+ * The current working directory (i.e., property "user.dir").
+ */
+ public static final String CURRENT_DIR_PATH = System.getProperty("user.dir");
+ /**
+ * The Surefire plugin sets basedir but DOES NOT change the current working directory.
+ * When building across modules, basedir changes for each module, but user.dir does not.
+ * This value should be used when referecing local files. Outside of surefire, the
+ * "basedir" property will not be set, and the current working directory will be the
+ * default.
+ */
+ public static final String MODULE_BASE_DIR_PATH = System.getProperty("basedir", CURRENT_DIR_PATH);
+
+ /**
+ * {@link #MODULE_BASE_DIR_PATH} as a file.
+ */
+ public static final File MODULE_BASE_DIR = new File(MODULE_BASE_DIR_PATH);
+}
Re: svn commit: r603991 - in /tapestry/tapestry5/trunk: ./ tapestry-core/src/main/java/org/apache/tapestry/ tapestry-core/src/main/java/org/apache/tapestry/internal/test/ tapestry-core/src/test/java/org/apache/tapestry/integration/ tapestry-core/src/test/j...
Posted by Christian Edward Gruber <ch...@gmail.com>.
I don't think surefire "fails to set" the current directory, but
rather it assumes CWD is the current sub-project/module's root
directory. Is that not happening here?
Christian.
On 13-Dec-07, at 14:18 , hlship@apache.org wrote:
> Author: hlship
> Date: Thu Dec 13 11:18:56 2007
> New Revision: 603991
>
> URL: http://svn.apache.org/viewvc?rev=603991&view=rev
> Log:
> Work-around brain damaged maven-surefire-plugin (which fails to set
> the current directory) so that tests run correctly from Maven
>
> Added:
> tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/TapestryTestConstants.java
> Modified:
> tapestry/tapestry5/trunk/pom.xml
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/ComponentResources.java
> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/internal/test/PageTesterContext.java
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/integration/RunJetty.java
> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/internal/services/TemplateParserImplTest.java
> tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/AbstractIntegrationTestSuite.java
> tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/JettyRunner.java
>
> Modified: tapestry/tapestry5/trunk/pom.xml
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/pom.xml?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/pom.xml (original)
> +++ tapestry/tapestry5/trunk/pom.xml Thu Dec 13 11:18:56 2007
> @@ -232,7 +232,7 @@
> <suiteXmlFile>src/test/conf/testng.xml</
> suiteXmlFile>
> </suiteXmlFiles>
> <argLine>-Xmx500m</argLine>
> - <redirectTestOutputToFile>true</
> redirectTestOutputToFile>
> + <redirectTestOutputToFile>false</
> redirectTestOutputToFile>
> </configuration>
> </plugin>
> <plugin>
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/
> apache/tapestry/ComponentResources.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResources.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/ComponentResources.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/ComponentResources.java Thu Dec 13 11:18:56 2007
> @@ -126,4 +126,5 @@
> * @return the informal Block parameter, or null if not bound
> */
> Block getBlockParameter(String parameterName);
> +
> }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/
> apache/tapestry/internal/test/PageTesterContext.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/PageTesterContext.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/internal/test/PageTesterContext.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/
> tapestry/internal/test/PageTesterContext.java Thu Dec 13 11:18:56 2007
> @@ -15,6 +15,7 @@
> package org.apache.tapestry.internal.test;
>
> import org.apache.tapestry.services.Context;
> +import org.apache.tapestry.test.TapestryTestConstants;
>
> import java.io.File;
> import java.net.MalformedURLException;
> @@ -23,11 +24,11 @@
>
> public class PageTesterContext implements Context
> {
> - private final String _contextRoot;
> + private final File _contextRoot;
>
> public PageTesterContext(String contextRoot)
> {
> - _contextRoot = contextRoot;
> + _contextRoot = new
> File(TapestryTestConstants.MODULE_BASE_DIR, contextRoot);
> }
>
> public String getInitParameter(String name)
> @@ -55,14 +56,12 @@
>
> public List<String> getResourcePaths(String path)
> {
> - throw new UnsupportedOperationException(
> - "getResourcePaths() is not supported for
> ContextForPageTester.");
> + throw new UnsupportedOperationException("getResourcePaths()
> is not supported for ContextForPageTester.");
> }
>
> public Object getAttribute(String name)
> {
> - throw new UnsupportedOperationException(
> - "getAttribute() is not supported for
> ContextForPageTester.");
> + throw new UnsupportedOperationException("getAttribute() is
> not supported for ContextForPageTester.");
> }
>
> }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/
> apache/tapestry/integration/RunJetty.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/RunJetty.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/integration/RunJetty.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/integration/RunJetty.java Thu Dec 13 11:18:56 2007
> @@ -16,6 +16,8 @@
>
> import org.apache.tapestry.test.JettyRunner;
>
> +import java.io.File;
> +
> /**
> * A "shim" to run Demo App #1 inside IntelliJ. I still haven't
> found a way to get IntelliJ to
> * export test classes and resources into a web facet.
> @@ -27,6 +29,8 @@
> String contextName = args[0];
> String path = args[1];
>
> - new JettyRunner(contextName, 8080, path);
> + File workingDir = new File(System.getProperty("user.dir"));
> +
> + new JettyRunner(workingDir, contextName, 8080, path);
> }
> }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/
> apache/tapestry/internal/services/TemplateParserImplTest.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/internal/services/TemplateParserImplTest.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/
> tapestry/internal/services/TemplateParserImplTest.java Thu Dec 13
> 11:18:56 2007
> @@ -22,6 +22,7 @@
> import org.apache.tapestry.ioc.internal.util.ClasspathResource;
> import static
> org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
> import org.apache.tapestry.ioc.internal.util.TapestryException;
> +import org.apache.tapestry.test.TapestryTestConstants;
> import org.testng.annotations.DataProvider;
> import org.testng.annotations.Test;
>
> @@ -449,9 +450,7 @@
>
> TextToken t1 = get(tokens, 1);
>
> - assertEquals(
> - t1.getText().replaceAll("\\s+", " "),
> - " ${expansions must be on a single line} ");
> + assertEquals(t1.getText().replaceAll("\\s+", " "), " $
> {expansions must be on a single line} ");
>
> }
>
> @@ -553,28 +552,21 @@
> @DataProvider(name = "parse_failure_data")
> public Object[][] parse_failure_data()
> {
> - return new Object[][]
> - {
> - {
> - "mixin_requires_id_or_type.tml",
> - "You may not specify mixins for
> element <span> because it does not represent a component (which
> requires either an id attribute or a type attribute).",
> - 2},
> - {"illegal_nesting_within_body_element.tml",
> - "Element 'xyz' is nested within a Tapestry
> body element", 2},
> - {
> -
> "unexpected_attribute_in_parameter_element.tml",
> - "Element <parameter> does not
> support an attribute named 'grok'. The only allowed attribute name
> is 'name'.",
> - 4},
> -
> {"name_attribute_of_parameter_element_omitted.tml",
> - "The name attribute of the <parameter>
> element must be specified.", 4},
> -
> {"name_attribute_of_parameter_element_blank.tml",
> - "The name attribute of the <parameter>
> element must be specified.", 4},
> - {
> -
> "unexpected_attribute_in_block_element.tml",
> - "Element <block> does not support
> an attribute named 'name'. The only allowed attribute name is 'id'.",
> - 3},
> + return new Object[][]{{"mixin_requires_id_or_type.tml",
> + "You may not specify mixins for
> element <span> because it does not represent a component (which
> requires either an id attribute or a type attribute).",
> + 2},
> {"illegal_nesting_within_body_element.tml",
> + "Element 'xyz' is nested within
> a Tapestry body element", 2}, {
> + "unexpected_attribute_in_parameter_element.tml",
> + "Element <parameter> does not support an attribute
> named 'grok'. The only allowed attribute name is 'name'.",
> + 4},
> {"name_attribute_of_parameter_element_omitted.tml",
> + "The name attribute of the <parameter> element
> must be specified.", 4}, {
> + "name_attribute_of_parameter_element_blank.tml",
> + "The name attribute of the <parameter> element must
> be specified.", 4}, {
> + "unexpected_attribute_in_block_element.tml",
> + "Element <block> does not support an attribute
> named 'name'. The only allowed attribute name is 'id'.",
> + 3},
>
> - };
> + };
> }
>
> @Test(dataProvider = "parse_failure_data")
> @@ -589,11 +581,8 @@
> {
> if (!ex.getMessage().contains(errorMessageSubstring))
> {
> - throw new AssertionError(
> - format(
> - "Message [%s] does not contain
> substring [%s].",
> - ex.getMessage(),
> - errorMessageSubstring));
> + throw new AssertionError(format("Message [%s] does
> not contain substring [%s].", ex.getMessage(),
> +
> errorMessageSubstring));
> }
>
> assertEquals(ex.getLocation().getLine(), expectedLine);
> @@ -603,11 +592,8 @@
> @DataProvider(name = "doctype_parsed_correctly_data")
> public Object[][] doctype_parsed_correctly_data()
> {
> - return new Object[][]
> - {
> - {"xhtml1_strict_doctype.tml"},
> - {"xhtml1_transitional_doctype.tml"},
> - {"xhtml1_frameset_doctype.tml"}};
> + return new Object[][]{{"xhtml1_strict_doctype.tml"},
> {"xhtml1_transitional_doctype.tml"},
> + {"xhtml1_frameset_doctype.tml"}};
> }
>
> @Test(dataProvider = "doctype_parsed_correctly_data")
> @@ -622,30 +608,36 @@
> @DataProvider(name = "doctype_token_added_correctly_data")
> public Object[][] doctype_token_added_correctly_data()
> {
> - return new Object[][]
> - {
> - {"xhtml1_strict_doctype.tml", "html", "-//
> W3C//DTD XHTML 1.0 Strict//EN",
> - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
> "},
> - {"xhtml1_transitional_doctype.tml", "html",
> - "-//W3C//DTD XHTML 1.0 Transitional//EN",
> - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
> "},
> - {"xhtml1_frameset_doctype.tml", "html", "-//
> W3C//DTD XHTML 1.0 Frameset//EN",
> - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd
> "},
> - {"html4_strict_doctype.tml", "HTML", "-//
> W3C//DTD HTML 4.01//EN",
> - "http://www.w3.org/TR/html4/strict.dtd"},
> - {"html4_transitional_doctype.tml", "HTML",
> - "-//W3C//DTD HTML 4.01 Transitional//EN",
> - "http://www.w3.org/TR/html4/loose.dtd"},
> - {"html4_frameset_doctype.tml", "HTML", "-//
> W3C//DTD HTML 4.01 Frameset//EN",
> - "http://www.w3.org/TR/html4/frameset.dtd"},
> - {"system_doctype.xml", "foo", null,
> - "src/test/resources/org/apache/tapestry/
> internal/services/simple.dtd"}};
> + return new Object[][]{{"xhtml1_strict_doctype.tml", "html",
> "-//W3C//DTD XHTML 1.0 Strict//EN",
> + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
> "}, {"xhtml1_transitional_doctype.tml",
> +
> "html
> ",
> +
> "-//W3C
> //DTD XHTML 1.0 Transitional//EN",
> +
> "http
> ://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"},
> +
> {"xhtml1_frameset_doctype
> .tml",
> +
> "html
> ",
> +
> "-//W3C
> //DTD XHTML 1.0 Frameset//EN",
> +
> "http
> ://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"},
> +
> {"html4_strict_doctype
> .tml",
> +
> "HTML
> ",
> +
> "-//W3C
> //DTD HTML 4.01//EN",
> +
> "http
> ://www.w3.org/TR/html4/strict.dtd"},
> +
> {"html4_transitional_doctype
> .tml",
> +
> "HTML
> ",
> +
> "-//W3C
> //DTD HTML 4.01 Transitional//EN",
> +
> "http
> ://www.w3.org/TR/html4/loose.dtd"},
> +
> {"html4_frameset_doctype
> .tml",
> +
> "HTML
> ",
> +
> "-//W3C
> //DTD HTML 4.01 Frameset//EN",
> +
> "http
> ://www.w3.org/TR/html4/frameset.dtd"},
> +
> {"system_doctype
> .xml", "foo", null,
> +
> "src
> /test/resources/org/apache/tapestry/internal/services/simple.dtd"}};
> }
>
> @Test(dataProvider = "doctype_token_added_correctly_data")
> - public void doctype_added_correctly(String fileName, String
> name, String publicId,
> - String systemId) throws
> Exception
> + public void doctype_added_correctly(String fileName, String
> name, String publicId, String systemId) throws Exception
> {
> + System.setProperty("user.dir",
> TapestryTestConstants.MODULE_BASE_DIR_PATH);
> +
> List<TemplateToken> tokens = tokens(fileName);
> DTDToken t2 = get(tokens, 0);
> assertEquals(t2.getName(), name);
>
> Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/
> apache/tapestry/test/AbstractIntegrationTestSuite.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/AbstractIntegrationTestSuite.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/AbstractIntegrationTestSuite.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/AbstractIntegrationTestSuite.java Thu Dec 13 11:18:56
> 2007
> @@ -184,7 +184,7 @@
> @BeforeClass(alwaysRun = true)
> public void setup() throws Exception
> {
> - _jettyRunner = new JettyRunner("/", JETTY_PORT, _webappRoot);
> + _jettyRunner = new
> JettyRunner(TapestryTestConstants.MODULE_BASE_DIR, "/", JETTY_PORT,
> _webappRoot);
>
> _server = new SeleniumServer();
>
>
> Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/
> apache/tapestry/test/JettyRunner.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/JettyRunner.java?rev=603991&r1=603990&r2=603991&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/JettyRunner.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/JettyRunner.java Thu Dec 13 11:18:56 2007
> @@ -19,6 +19,7 @@
> import org.mortbay.jetty.Server;
> import org.mortbay.jetty.servlet.WebApplicationContext;
>
> +import java.io.File;
> import static java.lang.String.format;
>
> /**
> @@ -33,6 +34,8 @@
>
> public static final int DEFAULT_PORT = 80;
>
> + private final File _workingDir;
> +
> private final String _contextPath;
>
> private final int _port;
> @@ -42,23 +45,17 @@
> private final Server _jetty;
>
> /**
> - * Defaults the context path to "/" and the port to 80.
> - */
> - public JettyRunner(String warPath)
> - {
> - this(DEFAULT_CONTEXT_PATH, DEFAULT_PORT, warPath);
> - }
> -
> - /**
> * Creates and starts a new instance of Jetty. This should be
> done from a test case setup
> * method.
> *
> + * @param workingDir current directory (used for any relative
> files)
> * @param contextPath the context path for the deployed
> application
> * @param port the port number used to access the
> application
> * @param warPath the path to the exploded web application
> (typically, "src/main/webapp")
> */
> - public JettyRunner(String contextPath, int port, String warPath)
> + public JettyRunner(File workingDir, String contextPath, int
> port, String warPath)
> {
> + _workingDir = workingDir;
> _contextPath = contextPath;
> _port = port;
> _warPath = warPath;
> @@ -99,10 +96,14 @@
>
> private Server createAndStart()
> {
> - System.out.printf("Starting Jetty instance on port %d (%s
> mapped to %s)\n", _port, _contextPath, _warPath);
> -
> try
> {
> +
> + String warPath = new File(_workingDir,
> _warPath).getPath();
> + String webDefaults = new File(_workingDir, "src/test/
> conf/webdefault.xml").getPath();
> +
> + System.out.printf("Starting Jetty instance on port %d
> (%s mapped to %s)\n", _port, _contextPath, warPath);
> +
> Server server = new Server();
>
> SocketListener socketListener = new SocketListener();
> @@ -112,9 +113,9 @@
> NCSARequestLog log = new NCSARequestLog();
> server.setRequestLog(log);
>
> - WebApplicationContext context =
> server.addWebApplication(_contextPath, _warPath);
> + WebApplicationContext context =
> server.addWebApplication(_contextPath, warPath);
>
> - context.setDefaultsDescriptor("src/test/conf/
> webdefault.xml");
> + context.setDefaultsDescriptor(webDefaults);
>
> server.start();
>
>
> Added: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/
> apache/tapestry/test/TapestryTestConstants.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry/test/TapestryTestConstants.java?rev=603991&view=auto
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/TapestryTestConstants.java (added)
> +++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/
> tapestry/test/TapestryTestConstants.java Thu Dec 13 11:18:56 2007
> @@ -0,0 +1,38 @@
> +// Copyright 2007 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.tapestry.test;
> +
> +import java.io.File;
> +
> +public class TapestryTestConstants
> +{
> + /**
> + * The current working directory (i.e., property "user.dir").
> + */
> + public static final String CURRENT_DIR_PATH =
> System.getProperty("user.dir");
> + /**
> + * The Surefire plugin sets basedir but DOES NOT change the
> current working directory.
> + * When building across modules, basedir changes for each
> module, but user.dir does not.
> + * This value should be used when referecing local files.
> Outside of surefire, the
> + * "basedir" property will not be set, and the current working
> directory will be the
> + * default.
> + */
> + public static final String MODULE_BASE_DIR_PATH =
> System.getProperty("basedir", CURRENT_DIR_PATH);
> +
> + /**
> + * {@link #MODULE_BASE_DIR_PATH} as a file.
> + */
> + public static final File MODULE_BASE_DIR = new
> File(MODULE_BASE_DIR_PATH);
> +}
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org