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="&lt;name&gt;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]

Reply via email to