Author: dion Date: Sun Nov 20 16:47:23 2005 New Revision: 345796 URL: http://svn.apache.org/viewcvs?rev=345796&view=rev Log: Add assertFileContains tag
Added: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertFileContainsTag.java Modified: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly jakarta/commons/proper/jelly/trunk/jelly-tags/junit/xdocs/changes.xml Added: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertFileContainsTag.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertFileContainsTag.java?rev=345796&view=auto ============================================================================== --- jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertFileContainsTag.java (added) +++ jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertFileContainsTag.java Sun Nov 20 16:47:23 2005 @@ -0,0 +1,124 @@ +/* + * Copyright 2002,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.commons.jelly.tags.junit; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; + +import org.apache.commons.jelly.MissingAttributeException; +import org.apache.commons.jelly.JellyTagException; +import org.apache.commons.jelly.XMLOutput; + +/** + * Checks that a file exists, and if not, then the test will fail. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Dion Gillard</a> + * @version $Revision: 344024 $ + */ +public class AssertFileContainsTag extends AssertTagSupport +{ + /** the file to check */ + private File file; + + /** content to match */ + private String match; + + /** + * Do the tag functionality: check the file exists. + * @param output a place to write text output + * @throws JellyTagException if the file doesn't exist. + */ + public void doTag(XMLOutput output) throws JellyTagException + { + if (match == null) + { + throw new MissingAttributeException("match"); + } + String message = getBodyText(); + if (message == null || message.length() == 0) + { + message = "File does not contain '" + match + "'"; + } + + + if (file == null) + { + throw new MissingAttributeException("file"); + } + else + { + if (file.exists() && file.canRead()) + { + try + { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + boolean found = false; + while ((line = br.readLine()) != null) + { + if (line.indexOf(match) != -1) + { + found = true; + break; + } + } + br.close(); + if (!found) + { + fail(message); + } + } + catch (IOException fnfe) + { + throw new JellyTagException(fnfe); + } + } + else + { + try + { + throw new JellyTagException("File '" + file.getCanonicalPath() + + "' can't be read."); + } + catch (IOException e) + { + throw new JellyTagException(e); + } + } + } + } + + /** + * The file to be tested. If this file exists, the test will pass. + * @param aFile the file to test. + */ + public void setFile(File aFile) + { + file = aFile; + } + + /** + * The content to be checked for. If this text matches some part + * of the given file, the test will pass. + */ + public void setMatch(String aString) + { + match = aString; + } +} Modified: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java?rev=345796&r1=345795&r2=345796&view=diff ============================================================================== --- jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java (original) +++ jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java Sun Nov 20 16:47:23 2005 @@ -42,6 +42,7 @@ public JUnitTagLibrary() { registerTag("assert", AssertTag.class); registerTag("assertEquals", AssertEqualsTag.class); + registerTag("assertFileContains", AssertFileContainsTag.class); registerTag("assertFileExists", AssertFileExistsTag.class); registerTag("assertFileNotFound", AssertFileNotFoundTag.class); registerTag("assertThrows", AssertThrowsTag.class); Modified: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly?rev=345796&r1=345795&r2=345796&view=diff ============================================================================== --- jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly (original) +++ jakarta/commons/proper/jelly/trunk/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly Sun Nov 20 16:47:23 2005 @@ -146,4 +146,16 @@ </test:assertThrows> <test:assert test="${ex != null}">No exception thrown for file that exists</test:assert> </test:case> + + <test:case name="assertFileContains"> + <!-- check that the pom contains a name element --> + <test:assertFileContains file="${basedir}/project.xml" match="<name>commons-jelly-tags-junit">Couldn't find name in pom</test:assertFileContains> + + <test:assertThrows var="ex" expected="org.apache.commons.jelly.tags.junit.JellyAssertionFailedError"> + <test:assertFileContains file="${basedir}/project.xml" match="DUMMY">Bad contents</test:assertFileContains> + </test:assertThrows> + + message=${ex.message} + <test:assert test="${ex != null and ex.message != null}"/> + </test:case> </test:suite> Modified: jakarta/commons/proper/jelly/trunk/jelly-tags/junit/xdocs/changes.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/jelly/trunk/jelly-tags/junit/xdocs/changes.xml?rev=345796&r1=345795&r2=345796&view=diff ============================================================================== --- jakarta/commons/proper/jelly/trunk/jelly-tags/junit/xdocs/changes.xml (original) +++ jakarta/commons/proper/jelly/trunk/jelly-tags/junit/xdocs/changes.xml Sun Nov 20 16:47:23 2005 @@ -25,6 +25,7 @@ </properties> <body> <release version="1.0.1-SNAPSHOT" date="in SVN"> + <action dev="dion" type="add">Added assertFileContains tag</action> <action dev="dion" type="add">Added assertFileNotFound tag</action> <action dev="dion" type="add">Added assertFileExists tag</action> </release> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]