You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2006/07/21 10:25:09 UTC

svn commit: r424226 - in /jackrabbit/trunk/jackrabbit: ./ src/test/java/org/apache/jackrabbit/core/ src/test/java/org/apache/jackrabbit/core/xml/ src/test/java/org/apache/jackrabbit/test/ src/test/java/org/apache/jackrabbit/test/api/ src/test/java/org/...

Author: mreutegg
Date: Fri Jul 21 01:25:08 2006
New Revision: 424226

URL: http://svn.apache.org/viewvc?rev=424226&view=rev
Log:
JCR-485: TCK does not clean 2nd workspace during AbstractJCRTest.setUp()

Modified:
    jackrabbit/trunk/jackrabbit/project.properties
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/XATest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/xml/DocumentViewTest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/AbstractJCRTest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/JCRTestResult.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/AbstractWorkspaceCopyBetweenTest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/NodeTest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/version/AbstractMergeTest.java
    jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/value/BinaryValueTest.java

Modified: jackrabbit/trunk/jackrabbit/project.properties
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/project.properties?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/project.properties (original)
+++ jackrabbit/trunk/jackrabbit/project.properties Fri Jul 21 01:25:08 2006
@@ -27,10 +27,11 @@
 maven.test.failure = false
 maven.junit.fork=true
 maven.junit.jvmargs=-Xmx128m -enableassertions
-maven.junit.sysproperties=derby.system.durability JCR-320 JCR-325
+maven.junit.sysproperties=derby.system.durability known.issues
 derby.system.durability=test
-JCR-320=false
-JCR-325=false
+# space separated list of test cases that are known issues and will
+# not yield failures in a test run
+known.issues=org.apache.jackrabbit.core.xml.DocumentViewTest#testMultiValue org.apache.jackrabbit.value.BinaryValueTest#testBinaryValueEquals
 
 #If you wish to skip tests when doing builds, uncomment
 #maven.test.skip = true

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/XATest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/XATest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/XATest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/XATest.java Fri Jul 21 01:25:08 2006
@@ -23,16 +23,12 @@
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.Session;
 import javax.jcr.RepositoryException;
-import javax.jcr.SimpleCredentials;
 import javax.jcr.NodeIterator;
-import javax.jcr.observation.Event;
 import javax.jcr.version.VersionException;
 import javax.jcr.version.Version;
 import javax.jcr.lock.Lock;
 import javax.transaction.UserTransaction;
 import javax.transaction.RollbackException;
-import java.io.PrintWriter;
-import java.io.PrintStream;
 import java.util.StringTokenizer;
 
 /**
@@ -96,7 +92,6 @@
      * Make sure that tested repository supports transactions
      */
     protected void runTest() throws Throwable {
-        Repository rep = helper.getRepository();
         if (isSupported(Repository.OPTION_TRANSACTIONS_SUPPORTED)) {
             super.runTest();
         }

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/xml/DocumentViewTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/xml/DocumentViewTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/xml/DocumentViewTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/xml/DocumentViewTest.java Fri Jul 21 01:25:08 2006
@@ -30,8 +30,13 @@
 
 import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
 import org.apache.jackrabbit.core.TestRepository;
+import org.apache.jackrabbit.test.JCRTestResult;
+import org.apache.jackrabbit.test.LogPrintWriter;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import junit.framework.TestCase;
+import junit.framework.TestResult;
 
 /**
  * Jackrabbit-specific test cases for the document view XML format.
@@ -41,15 +46,29 @@
  */
 public class DocumentViewTest extends TestCase {
 
+    /** Logger instance for this class. */
+    private static final Logger log = LoggerFactory.getLogger(DocumentViewTest.class);
+
     /** Test session. */
     private Session session;
 
     /**
+     * Use a {@link org.apache.jackrabbit.test.JCRTestResult} to suppress test
+     * case failures of known issues.
+     *
+     * @param testResult the test result.
+     */
+    public void run(TestResult testResult) {
+        super.run(new JCRTestResult(testResult, new LogPrintWriter(log)));
+    }
+
+    /**
      * Sets up the test fixture.
      *
      * @throws Exception if an unexpected error occurs
      */
     protected void setUp() throws Exception {
+        super.setUp();
         session = TestRepository.getInstance().login();
         JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager)
             session.getWorkspace().getNodeTypeManager();
@@ -72,6 +91,7 @@
         // TODO: Unregister the MultiValueTestType node type once Jackrabbit
         // supports node type removal.
         session.logout();
+        super.tearDown();
     }
 
     /**
@@ -104,10 +124,6 @@
      * @throws Exception if an unexpected error occurs
      */
     public void testMultiValue() throws Exception {
-        if (!Boolean.getBoolean("JCR-325")) {
-            return;
-        }
-
         String message = "JCR-325: docview roundtripping does not work with"
             + " multivalue non-string properties";
 

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/AbstractJCRTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/AbstractJCRTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/AbstractJCRTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/AbstractJCRTest.java Fri Jul 21 01:25:08 2006
@@ -345,28 +345,14 @@
                 testRootNode = superuser.getRootNode().getNode(testPath);
             }
         } else {
-            Node root = superuser.getRootNode();
-            if (root.hasNode(testPath)) {
-                // clean test root
-                testRootNode = root.getNode(testPath);
-                for (NodeIterator children = testRootNode.getNodes(); children.hasNext();) {
-                    children.nextNode().remove();
-                }
-            } else {
-                // create nodes to testPath
-                StringTokenizer names = new StringTokenizer(testPath, "/");
-                Node currentNode = root;
-                while (names.hasMoreTokens()) {
-                    String name = names.nextToken();
-                    if (currentNode.hasNode(name)) {
-                        currentNode = currentNode.getNode(name);
-                    } else {
-                        currentNode = currentNode.addNode(name, testNodeType);
-                    }
-                }
-                testRootNode = currentNode;
+            testRootNode = cleanUpTestRoot(superuser);
+            // also clean second workspace
+            Session s = helper.getSuperuserSession(workspaceName);
+            try {
+                cleanUpTestRoot(s);
+            } finally {
+                s.logout();
             }
-            root.save();
         }
     }
 
@@ -374,17 +360,7 @@
         if (superuser != null) {
             try {
                 if (!isReadOnly) {
-                    // do a 'rollback'
-                    superuser.refresh(false);
-                    Node root = superuser.getRootNode();
-                    if (root.hasNode(testPath)) {
-                        // clean test root
-                        testRootNode = root.getNode(testPath);
-                        for (NodeIterator children = testRootNode.getNodes(); children.hasNext();) {
-                            children.nextNode().remove();
-                        }
-                        root.save();
-                    }
+                    cleanUpTestRoot(superuser);
                 }
             } catch (Exception e) {
                 log.println("Exception in tearDown: " + e.toString());
@@ -531,5 +507,43 @@
      */
     protected boolean isSupported(String descriptorKey) throws RepositoryException {
         return "true".equals(helper.getRepository().getDescriptor(descriptorKey));
+    }
+
+    /**
+     * Reverts any pending changes made by <code>s</code> and deletes any nodes
+     * under {@link #testRoot}. If there is no node at {@link #testRoot} then
+     * the necessary nodes are created.
+     *
+     * @param s the session to clean up.
+     * @return the {@link javax.jcr.Node} that represents the test root.
+     * @throws RepositoryException if an error occurs.
+     */
+    protected Node cleanUpTestRoot(Session s) throws RepositoryException {
+        // do a 'rollback'
+        s.refresh(false);
+        Node root = s.getRootNode();
+        Node testRootNode;
+        if (root.hasNode(testPath)) {
+            // clean test root
+            testRootNode = root.getNode(testPath);
+            for (NodeIterator children = testRootNode.getNodes(); children.hasNext();) {
+                children.nextNode().remove();
+            }
+        } else {
+            // create nodes to testPath
+            StringTokenizer names = new StringTokenizer(testPath, "/");
+            Node currentNode = root;
+            while (names.hasMoreTokens()) {
+                String name = names.nextToken();
+                if (currentNode.hasNode(name)) {
+                    currentNode = currentNode.getNode(name);
+                } else {
+                    currentNode = currentNode.addNode(name, testNodeType);
+                }
+            }
+            testRootNode = currentNode;
+        }
+        s.save();
+        return testRootNode;
     }
 }

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/JCRTestResult.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/JCRTestResult.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/JCRTestResult.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/JCRTestResult.java Fri Jul 21 01:25:08 2006
@@ -20,8 +20,12 @@
 import junit.framework.Test;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestListener;
+import junit.framework.TestCase;
 
 import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.StringTokenizer;
 
 /**
  * Extends the standard JUnit TestResult class. This class ignores test errors
@@ -36,6 +40,12 @@
     private final LogPrintWriter log;
 
     /**
+     * Set of Strings that identify the test methods that currently fails but
+     * are recognized as known issues. Those will not be reported as errors.
+     */
+    private final Set knownIssues = new HashSet();
+
+    /**
      * Creates a new JCRTestResult that delegates to <code>orig</code>.
      * @param orig the original TestResult this result wraps.
      * @param log the logger
@@ -43,28 +53,47 @@
     public JCRTestResult(TestResult orig, LogPrintWriter log) {
         this.orig = orig;
         this.log = log;
+        String propValue = System.getProperty("known.issues");
+        if (propValue != null) {
+            StringTokenizer tok = new StringTokenizer(propValue);
+            while (tok.hasMoreTokens()) {
+                knownIssues.add(tok.nextToken());
+            }
+        }
     }
 
     /**
      * Only add an error if <code>throwable</code> is not of type
-     * {@link NotExecutableException}.
+     * {@link NotExecutableException} and the test case is not a known issue.
      * @param test the test.
      * @param throwable the exception thrown by the test.
      */
     public synchronized void addError(Test test, Throwable throwable) {
         if (throwable instanceof NotExecutableException) {
             log.println("Test case: " + test.toString() + " not executable: " + throwable.getMessage());
+        } else if (isKnownIssue(test)) {
+            log.println("Known issue: " + test + ": " + throwable.getMessage());
         } else {
             orig.addError(test, throwable);
         }
     }
 
-    //-----------------------< default overwrites >-----------------------------
-
-    public synchronized void addFailure(Test test, AssertionFailedError assertionFailedError) {
-        orig.addFailure(test, assertionFailedError);
+    /**
+     * Only adds a failure if <code>test</code> is not a known issue.
+     * @param test the test case that failed.
+     * @param assertionFailedError the assertion error.
+     */
+    public synchronized void addFailure(Test test,
+                                        AssertionFailedError assertionFailedError) {
+        if (isKnownIssue(test)) {
+            log.println("Known issue: " + test + ": " + assertionFailedError.getMessage());
+        } else {
+            orig.addFailure(test, assertionFailedError);
+        }
     }
 
+    //-----------------------< default overwrites >-----------------------------
+
     public synchronized void addListener(TestListener testListener) {
         orig.addListener(testListener);
     }
@@ -111,5 +140,21 @@
 
     public synchronized boolean wasSuccessful() {
         return orig.wasSuccessful();
+    }
+
+    //------------------------------< internal >--------------------------------
+
+    /**
+     * Returns <code>true</code> if <code>test</code> is a known issue;
+     * <code>false</code> otherwise.
+     * @param test the test case to check.
+     * @return <code>true</code> if <code>test</code> is a known issue.
+     */
+    private boolean isKnownIssue(Test test) {
+        String testName = "-";
+        if (test instanceof TestCase) {
+            testName = test.getClass().getName() + "#" + ((TestCase) test).getName();
+        }
+        return knownIssues.contains(testName);
     }
 }

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/AbstractWorkspaceCopyBetweenTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/AbstractWorkspaceCopyBetweenTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/AbstractWorkspaceCopyBetweenTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/AbstractWorkspaceCopyBetweenTest.java Fri Jul 21 01:25:08 2006
@@ -76,17 +76,7 @@
             try {
                 if (!isReadOnly) {
                     // do a 'rollback'
-                    superuserW2.refresh(false);
-                    Node rootW2 = superuserW2.getRootNode();
-                    if (rootW2.hasNode(testPath)) {
-                        // clean test root
-                        testRootNodeW2 = rootW2.getNode(testPath);
-                        for (NodeIterator children = testRootNodeW2.getNodes(); children.hasNext();) {
-                            Node n = children.nextNode();
-                            n.remove();
-                        }
-                        superuserW2.save();
-                    }
+                    cleanUpTestRoot(superuserW2);
                 }
             } finally {
                 superuserW2.logout();

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/NodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/NodeTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/NodeTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/NodeTest.java Fri Jul 21 01:25:08 2006
@@ -22,7 +22,6 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.Session;
 import javax.jcr.Node;
-import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.NoSuchWorkspaceException;
 import javax.jcr.ItemNotFoundException;
@@ -31,7 +30,6 @@
 import javax.jcr.PathNotFoundException;
 import javax.jcr.Repository;
 import javax.jcr.lock.LockException;
-import java.util.StringTokenizer;
 
 /**
  * <code>NodeTest</code> contains all test cases for the
@@ -56,22 +54,6 @@
 
         // login to second workspace
         superuserW2 = helper.getSuperuserSession(workspaceName);
-        // create the test root node
-        Node root = superuserW2.getRootNode();
-        if (root.hasNode(testPath)) {
-            // clean test root
-            Node testNode = root.getNode(testPath);
-            for (NodeIterator children = testNode.getNodes(); children.hasNext();) {
-                children.nextNode().remove();
-            }
-        } else {
-            StringTokenizer names = new StringTokenizer(testPath, "/");
-            Node currentNode = superuserW2.getRootNode();
-            while (names.hasMoreTokens()) {
-                currentNode = currentNode.addNode(names.nextToken(), testNodeType);
-            }
-        }
-        superuserW2.save();
     }
 
     /**
@@ -79,13 +61,7 @@
      */
     public void tearDown() throws Exception {
         try {
-            // delete all children of test root node
-            Node rootNodeW2 = (Node) superuserW2.getItem(testRootNode.getPath());
-            for (NodeIterator children = rootNodeW2.getNodes(); children.hasNext();) {
-                children.nextNode().remove();
-            }
-            // save changes
-            superuserW2.save();
+            cleanUpTestRoot(superuserW2);
             // log out
             superuserW2.logout();
         } catch (RepositoryException e) {

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/version/AbstractMergeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/version/AbstractMergeTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/version/AbstractMergeTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/test/api/version/AbstractMergeTest.java Fri Jul 21 01:25:08 2006
@@ -103,15 +103,7 @@
         workspaceW2 = superuserW2.getWorkspace();
 
         // get/create test root node on second workspace
-        if (testPath.length() == 0) {
-            // test root is the root node
-            testRootNodeW2 = superuserW2.getRootNode();
-        } else if (!superuserW2.getRootNode().hasNode(testPath)) {
-            testRootNodeW2 = superuserW2.getRootNode().addNode(testPath, testNodeType);
-            superuserW2.save();
-        } else {
-            testRootNodeW2 = superuserW2.getRootNode().getNode(testPath);
-        }
+        testRootNodeW2 = cleanUpTestRoot(superuserW2);
 
         // initialize test nodes
         initNodes();
@@ -127,17 +119,7 @@
         if (superuserW2 != null) {
             try {
                 if (!isReadOnly) {
-                    // do a 'rollback'
-                    superuserW2.refresh(false);
-                    Node rootW2 = superuserW2.getRootNode();
-                    if (rootW2.hasNode(testPath)) {
-                        // clean test root
-                        testRootNodeW2 = rootW2.getNode(testPath);
-                        for (NodeIterator children = testRootNodeW2.getNodes(); children.hasNext();) {
-                            children.nextNode().remove();
-                        }
-                        rootW2.save();
-                    }
+                    cleanUpTestRoot(superuserW2);
                 }
             } finally {
                 superuserW2.logout();

Modified: jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/value/BinaryValueTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/value/BinaryValueTest.java?rev=424226&r1=424225&r2=424226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/value/BinaryValueTest.java (original)
+++ jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/value/BinaryValueTest.java Fri Jul 21 01:25:08 2006
@@ -18,12 +18,12 @@
 
 import java.io.ByteArrayInputStream;
 
-import junit.framework.TestCase;
+import org.apache.jackrabbit.test.AbstractJCRTest;
 
 /**
  * Test cases for binary values.
  */
-public class BinaryValueTest extends TestCase {
+public class BinaryValueTest extends AbstractJCRTest {
 
     private static final byte[] DATA = "abc".getBytes();
 
@@ -31,17 +31,15 @@
         assertFalse(new BinaryValue(DATA).equals(null));
         assertFalse(new BinaryValue(DATA).equals(new Object()));
 
-        if (Boolean.getBoolean("JCR-320")) {
-            assertTrue(new BinaryValue(DATA).equals(new BinaryValue(DATA)));
-            assertTrue(new BinaryValue(DATA).equals(
-                    new BinaryValue(new ByteArrayInputStream(DATA))));
-            assertTrue(new BinaryValue(new ByteArrayInputStream(DATA)).equals(
-                    new BinaryValue(DATA)));
-            assertTrue(new BinaryValue(DATA).equals(
-                    new BinaryValue(new String(DATA))));
-            assertTrue(new BinaryValue(new String(DATA)).equals(
-                    new BinaryValue(DATA)));
-        }
+        assertTrue(new BinaryValue(DATA).equals(new BinaryValue(DATA)));
+        assertTrue(new BinaryValue(DATA).equals(
+                new BinaryValue(new ByteArrayInputStream(DATA))));
+        assertTrue(new BinaryValue(new ByteArrayInputStream(DATA)).equals(
+                new BinaryValue(DATA)));
+        assertTrue(new BinaryValue(DATA).equals(
+                new BinaryValue(new String(DATA))));
+        assertTrue(new BinaryValue(new String(DATA)).equals(
+                new BinaryValue(DATA)));
     }
 
 }