summaryrefslogtreecommitdiffstats
path: root/test/src/net/sf/antcontrib/BuildFileTestBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/net/sf/antcontrib/BuildFileTestBase.java')
-rw-r--r--test/src/net/sf/antcontrib/BuildFileTestBase.java119
1 files changed, 119 insertions, 0 deletions
diff --git a/test/src/net/sf/antcontrib/BuildFileTestBase.java b/test/src/net/sf/antcontrib/BuildFileTestBase.java
new file mode 100644
index 0000000..9764d23
--- /dev/null
+++ b/test/src/net/sf/antcontrib/BuildFileTestBase.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2001-2004 Ant-Contrib project. All rights reserved.
+ *
+ * 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 net.sf.antcontrib;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildFileTest;
+
+
+/**
+ * More methods for BuildFileTest.
+ *
+ * @author Dale Anson
+ */
+public abstract class BuildFileTestBase extends BuildFileTest {
+
+ /**
+ * Constructor for the BuildFileTestBase object
+ *
+ * @param name string to pass up to TestCase constructor
+ */
+ public BuildFileTestBase( String name ) {
+ super( name );
+ }
+
+ /**
+ * run a target, expect a build exception
+ *
+ * @param target target to run
+ */
+ protected void expectBuildException( String target ) {
+ expectSpecificBuildException( target, "no specific reason", null );
+ }
+
+ /**
+ * Assert that the given message has NOT been logged with a priority >= INFO
+ * when running the given target.
+ *
+ * @param target Description of the Parameter
+ * @param log Description of the Parameter
+ */
+ protected void expectLogNotContaining( String target, String log ) {
+ executeTarget( target );
+ String realLog = getLog();
+ assertTrue( "expecting log to NOT contain \"" + log + "\" log was \""
+ + realLog + "\"",
+ realLog.indexOf( log ) < 0 );
+ }
+
+ /**
+ * set up to run the named project
+ * <p>
+ * Overrides BuildFileTest.configureProject to first
+ * attempt to make a File out of the filename parameter, if the resulting
+ * file does not exists, then attempt to locate the file in the classpath.
+ * This way, test xml files can be placed alongside of their corresponding
+ * class file and can be easily found.
+ *
+ * @param filename name of project file to run
+ * @exception BuildException Description of the Exception
+ */
+ protected void configureProject( String filename ) throws BuildException {
+ // find the build file
+ File f = new File( filename );
+ if ( !f.exists() ) {
+ URL url = getClass().getClassLoader().getResource( filename );
+ if ( url == null )
+ throw new BuildException( "Can't find " + filename );
+ f = new File( url.getPath() );
+ if ( !f.exists() )
+ throw new BuildException( "Can't find " + filename );
+ }
+ super.configureProject(f.getAbsolutePath());
+ }
+
+ /**
+ * run a target, expect an exception string containing the substring we look
+ * for (case sensitive match)
+ *
+ * @param target target to run
+ * @param cause information string to reader of report
+ * @param contains substring of the build exception to look for
+ */
+ protected void expectBuildExceptionStackTraceContaining( String target, String cause, String contains ) {
+ try {
+ executeTarget( target );
+ }
+ catch ( org.apache.tools.ant.BuildException ex ) {
+ //buildException = ex; // buildException has private access in super
+ StringWriter stacktrace = new StringWriter();
+ PrintWriter writer = new PrintWriter( stacktrace, true );
+ ex.printStackTrace( writer );
+ String trace = stacktrace.toString();
+ if ( ( null != contains ) && ( trace.indexOf( contains ) == -1 ) ) {
+ fail( "Should throw BuildException because '" + cause + "' with message containing '" + contains + "' (actual message '" + trace + "' instead)" );
+ }
+ return;
+ }
+ fail( "Should throw BuildException because: " + cause );
+ }
+}
+