You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2005/11/21 01:47:32 UTC

svn commit: r345796 - in /jakarta/commons/proper/jelly/trunk/jelly-tags/junit: src/java/org/apache/commons/jelly/tags/junit/ src/test/org/apache/commons/jelly/tags/junit/ xdocs/

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:dion@apache.org">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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org