You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by jp...@apache.org on 2010/07/14 00:52:24 UTC

svn commit: r963897 - in /incubator/chemistry/cmislib/trunk: ./ .project .pydevproject PKG-INFO setup.cfg setup.py src/cmislib.egg-info/PKG-INFO src/cmislib.egg-info/SOURCES.txt src/cmislib/model.py src/doc/ src/tests/cmislibtest.py src/tests/settings.py

Author: jpotts
Date: Tue Jul 13 22:52:23 2010
New Revision: 963897

URL: http://svn.apache.org/viewvc?rev=963897&view=rev
Log:
Fixes for CMIS-229 (test path expects trailing slash), CMIS-231 (setContentStream sets mimetype incorrectly), CMIS-233 (certain tests should check PWCUpdatable capability), CMIS-234 (remove testSimpleSelect from default test suite), CMIS-235 (ACLTest.testApplyACL uses hardcoded principal), CMIS-237 (includeRelationships should default to 'none'). 

Added:
    incubator/chemistry/cmislib/trunk/.project
Removed:
    incubator/chemistry/cmislib/trunk/PKG-INFO
Modified:
    incubator/chemistry/cmislib/trunk/   (props changed)
    incubator/chemistry/cmislib/trunk/.pydevproject
    incubator/chemistry/cmislib/trunk/setup.cfg
    incubator/chemistry/cmislib/trunk/setup.py
    incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/PKG-INFO
    incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt
    incubator/chemistry/cmislib/trunk/src/cmislib/model.py
    incubator/chemistry/cmislib/trunk/src/doc/   (props changed)
    incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py
    incubator/chemistry/cmislib/trunk/src/tests/settings.py

Propchange: incubator/chemistry/cmislib/trunk/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jul 13 22:52:23 2010
@@ -0,0 +1,2 @@
+build
+dist

Added: incubator/chemistry/cmislib/trunk/.project
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/.project?rev=963897&view=auto
==============================================================================
--- incubator/chemistry/cmislib/trunk/.project (added)
+++ incubator/chemistry/cmislib/trunk/.project Tue Jul 13 22:52:23 2010
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>cmislib</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>

Modified: incubator/chemistry/cmislib/trunk/.pydevproject
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/.pydevproject?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/.pydevproject (original)
+++ incubator/chemistry/cmislib/trunk/.pydevproject Tue Jul 13 22:52:23 2010
@@ -6,5 +6,5 @@
 <path>/cmislib/src</path>
 </pydev_pathproperty>
 <pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
 </pydev_project>

Modified: incubator/chemistry/cmislib/trunk/setup.cfg
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/setup.cfg?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/setup.cfg (original)
+++ incubator/chemistry/cmislib/trunk/setup.cfg Tue Jul 13 22:52:23 2010
@@ -1,2 +1,2 @@
 [egg_info]
-tag_build =
\ No newline at end of file
+tag_build = dev
\ No newline at end of file

Modified: incubator/chemistry/cmislib/trunk/setup.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/setup.py?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/setup.py (original)
+++ incubator/chemistry/cmislib/trunk/setup.py Tue Jul 13 22:52:23 2010
@@ -1,6 +1,10 @@
+import os
 from setuptools import setup, find_packages
 
-version = '0.3'
+version = '0.4'
+
+def read(fname):
+    return open(os.path.join(os.path.dirname(__file__), fname)).read()
 
 setup(
     name = "cmislib",
@@ -13,4 +17,12 @@ setup(
     package_dir = {'':'src'},
     packages = find_packages("src"),
     include_package_data = True,
+    long_description = read('README.txt'),
+    classifiers = [
+        "Development Status :: 4 - Beta",
+        "Intended Audience :: Developers",
+        "License :: OSI Approved :: Apache Software License",
+        "Operating System :: OS Independent",
+        "Topic :: Software Development :: Libraries",
+        ],
 )

Modified: incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/PKG-INFO
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/PKG-INFO?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/PKG-INFO (original)
+++ incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/PKG-INFO Tue Jul 13 22:52:23 2010
@@ -1,10 +1,42 @@
 Metadata-Version: 1.0
 Name: cmislib
-Version: 0.3
+Version: 0.4dev
 Summary: CMIS client library for Python
 Home-page: http://code.google.com/p/cmislib/
 Author: Jeff Potts
 Author-email: jeffpotts01@gmail.com
 License: Apache
-Description: UNKNOWN
+Description: ABOUT
+        
+        Thanks for using cmislib, the CMIS client library for Python.
+        
+        The goal of this library is to provide an interoperable API to CMIS
+        repositories such as Alfresco, Nuxeo, KnowledgeTree, MS SharePoint,
+        EMC Documentum, and any other content repository that is CMIS-compliant.
+        
+        More info on CMIS can be found at:
+        http://www.oasis-open.org/committees/cmis
+        
+        SOURCE
+        
+        The source code for this project lives at http://code.google.com/p/cmislib.
+        
+        TESTS
+        
+        There are unit tests available in the tests directory. They require access
+        to a CMIS provider. There are many freely-available CMIS repositories
+        available to run locally or that are hosted.
+        
+        DOC
+        
+        Documentation that tells you what this is all about can be found in the doc
+        directory. Please see the doc for dependencies, required CMIS version level,
+        required Python version, etc.
+        
+        
 Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: OS Independent
+Classifier: Topic :: Software Development :: Libraries

Modified: incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt (original)
+++ incubator/chemistry/cmislib/trunk/src/cmislib.egg-info/SOURCES.txt Tue Jul 13 22:52:23 2010
@@ -2,6 +2,7 @@
 .pydevproject
 LICENSE.txt
 MANIFEST.in
+PKG-INFO
 README.txt
 setup.cfg
 setup.py
@@ -14,7 +15,6 @@ src/cmislib.egg-info/PKG-INFO
 src/cmislib.egg-info/SOURCES.txt
 src/cmislib.egg-info/dependency_links.txt
 src/cmislib.egg-info/top_level.txt
-src/data/acl.alfresco.xml
 src/data/checkedout.alfresco.xml
 src/data/checkedout.filenet.xml
 src/data/checkedout2.filenet.xml
@@ -22,7 +22,6 @@ src/data/children.xml
 src/data/document.nuxeo.xml
 src/data/document.xml
 src/data/folder.xml
-src/data/repositoryInfo.alfresco.xml
 src/data/repositoryInfo.chemistry.xml
 src/data/repositoryInfo.filenet.xml
 src/data/repositoryInfo.nuxeo.xml
@@ -93,5 +92,4 @@ src/tests/250px-Cmis_logo.png
 src/tests/__init__.py
 src/tests/cmislibtest.py
 src/tests/sample-a.pdf
-src/tests/settings.py
-src/tests/tester.py
\ No newline at end of file
+src/tests/settings.py
\ No newline at end of file

Modified: incubator/chemistry/cmislib/trunk/src/cmislib/model.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/cmislib/model.py?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/cmislib/model.py (original)
+++ incubator/chemistry/cmislib/trunk/src/cmislib/model.py Tue Jul 13 22:52:23 2010
@@ -918,12 +918,12 @@ class Repository(object):
               '{filter}': '',
               '{includeAllowableActions}': 'false',
               '{includePolicyIds}': 'false',
-              '{includeRelationships}': 'false',
+              '{includeRelationships}': '',
               '{includeACL}': 'false',
               '{renditionFilter}': ''}
 
         options = {}
-        addOptions = {} # args specified, but not in the template
+        addOptions = {}  # args specified, but not in the template
         for k, v in kwargs.items():
             pKey = "{" + k + "}"
             if template.find(pKey) >= 0:
@@ -1614,12 +1614,12 @@ class CmisObject(object):
               '{filter}': '',
               '{includeAllowableActions}': 'false',
               '{includePolicyIds}': 'false',
-              '{includeRelationships}': 'false',
+              '{includeRelationships}': '',
               '{includeACL}': 'false',
               '{renditionFilter}': ''}
 
         options = {}
-        addOptions = {} # args specified, but not in the template
+        addOptions = {}  # args specified, but not in the template
         for k, v in self._kwargs.items():
             pKey = "{" + k + "}"
             if template.find(pKey) >= 0:
@@ -2495,7 +2495,7 @@ class Document(CmisObject):
             if contentElements[0].childNodes:
                 return contentElements[0].childNodes[0].data
 
-    def setContentStream(self, contentFile):
+    def setContentStream(self, contentFile, contentType=None):
 
         """
         See CMIS specification document 2.2.4.16 setContentStream
@@ -2518,11 +2518,16 @@ class Document(CmisObject):
         # set the content stream when that is the case
         assert(srcUrl), 'Unable to determine content stream URL.'
 
-        # build the Atom entry
-        #xmlDoc = self._getEntryXmlDoc(contentFile=contentFile)
+        # need to determine the mime type
+        mimetype = contentType
+        if not mimetype and hasattr(contentFile, 'name'):
+            mimetype, encoding = mimetypes.guess_type(contentFile.name)
 
-        # post the Atom entry
-        result = self._cmisClient.put(srcUrl, contentFile.read(), ATOM_XML_TYPE)
+        if not mimetype:
+            mimetype = 'application/binary'
+
+        # put the content file
+        result = self._cmisClient.put(srcUrl, contentFile.read(), mimetype)
         if type(result) == HTTPError:
             raise CmisException(result.code)
 

Propchange: incubator/chemistry/cmislib/trunk/src/doc/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jul 13 22:52:23 2010
@@ -0,0 +1 @@
+build

Modified: incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py (original)
+++ incubator/chemistry/cmislib/trunk/src/tests/cmislibtest.py Tue Jul 13 22:52:23 2010
@@ -18,6 +18,7 @@
 Unit tests for cmislib
 '''
 import unittest
+from unittest import TestSuite, TestLoader
 from cmislib.model import CmisClient, ACE
 from cmislib.exceptions import \
                           ObjectNotFoundException, \
@@ -28,6 +29,11 @@ import os
 from time import sleep, time
 import settings
 
+if (settings.TEST_ROOT_PATH == "/"):
+    TEST_ROOT_PATH = ""
+else:
+    TEST_ROOT_PATH = settings.TEST_ROOT_PATH
+
 
 class CmisTestBase(unittest.TestCase):
 
@@ -37,7 +43,7 @@ class CmisTestBase(unittest.TestCase):
         """ Create a root test folder for the test. """
         self._cmisClient = CmisClient(settings.REPOSITORY_URL, settings.USERNAME, settings.PASSWORD)
         self._repo = self._cmisClient.getDefaultRepository()
-        self._rootFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH)
+        self._rootFolder = self._repo.getObjectByPath(TEST_ROOT_PATH)
         self._folderName = " ".join(['cmislib', self.__class__.__name__, str(time())])
         self._testFolder = self._rootFolder.createFolder(self._folderName)
 
@@ -259,12 +265,12 @@ class RepositoryTest(CmisTestBase):
         doc10 = self._testFolder.createDocument(settings.TEST_BINARY_1, contentFile=f)
         doc10Id = doc10.getObjectId()
         pwc = doc10.checkout()
-        doc11 = pwc.checkin(major='false') # checkin a minor version, 1.1
+        doc11 = pwc.checkin(major='false')  # checkin a minor version, 1.1
         pwc = doc11.checkout()
-        doc20 = pwc.checkin() # checkin a major version, 2.0
+        doc20 = pwc.checkin()  # checkin a major version, 2.0
         doc20Id = doc20.getObjectId()
         pwc = doc20.checkout()
-        doc21 = pwc.checkin(major='false') # checkin a minor version, 2.1
+        doc21 = pwc.checkin(major='false')  # checkin a minor version, 2.1
         doc21Id = doc21.getObjectId()
 
         docLatest = self._repo.getObject(doc10Id, returnVersion='latest')
@@ -295,16 +301,16 @@ class RepositoryTest(CmisTestBase):
         # create the folder structure
         parentFolder = self._testFolder.createFolder(parentFolderName)
         subFolder = parentFolder.createFolder(subFolderName)
-        searchFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + "/".join([testFolderName, parentFolderName, subFolderName]))
+        searchFolder = self._repo.getObjectByPath("/".join([TEST_ROOT_PATH, testFolderName, parentFolderName, subFolderName]))
         self.assertEquals(subFolder.getObjectId(), searchFolder.getObjectId())
 
         # create a test doc
         doc = subFolder.createDocument(docName)
-        searchDoc = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + "/".join([testFolderName, parentFolderName, subFolderName, docName]))
+        searchDoc = self._repo.getObjectByPath("/".join([TEST_ROOT_PATH, testFolderName, parentFolderName, subFolderName, docName]))
         self.assertEquals(doc.getObjectId(), searchDoc.getObjectId())
 
         # get the subfolder by path, then ask for its children
-        subFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + "/".join([testFolderName, parentFolderName, subFolderName]))
+        subFolder = self._repo.getObjectByPath("/".join([TEST_ROOT_PATH, testFolderName, parentFolderName, subFolderName]))
         self.assertEquals(len(subFolder.getChildren().getResults()), 1)
 
     def testGetUnfiledDocs(self):
@@ -394,7 +400,7 @@ class FolderTest(CmisTestBase):
         self.assertTrue(isInResultSet(resultSet, grandChild))
 
         # test getting descendants with depth=-1
-        resultSet = self._testFolder.getDescendants() #-1 is the default depth
+        resultSet = self._testFolder.getDescendants()  # -1 is the default depth
         self.assert_(resultSet != None)
         self.assertEquals(3, len(resultSet.getResults()))
         self.assertTrue(isInResultSet(resultSet, childFolder1))
@@ -483,8 +489,8 @@ class FolderTest(CmisTestBase):
         # should be filtered if the server chooses to do so.
 
         # test when used with getObjectByPath
-        searchFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + \
-                        "/".join([testFolderName, parentFolderName, subFolderName]), \
+        searchFolder = self._repo.getObjectByPath( \
+                        "/".join([TEST_ROOT_PATH, testFolderName, parentFolderName, subFolderName]), \
                         filter='cmis:objectId,cmis:objectTypeId,cmis:baseTypeId')
         self.assertEquals(subFolder.getObjectId(), searchFolder.getObjectId())
         self.assertTrue(searchFolder.getProperties().has_key('cmis:objectId'))
@@ -492,8 +498,8 @@ class FolderTest(CmisTestBase):
         self.assertTrue(searchFolder.getProperties().has_key('cmis:baseTypeId'))
 
         # test when used with getObjectByPath + reload
-        searchFolder = self._repo.getObjectByPath(settings.TEST_ROOT_PATH + \
-                        "/".join([testFolderName, parentFolderName, subFolderName]), \
+        searchFolder = self._repo.getObjectByPath( \
+                        "/".join([TEST_ROOT_PATH, testFolderName, parentFolderName, subFolderName]), \
                         filter='cmis:objectId,cmis:objectTypeId,cmis:baseTypeId')
         searchFolder.reload()
         self.assertEquals(subFolder.getObjectId(), searchFolder.getObjectId())
@@ -721,6 +727,10 @@ class DocumentTest(CmisTestBase):
 
     def testCheckinAfterGetPWC(self):
         '''Create a document in a test folder, check it out, call getPWC, then checkin'''
+        if not self._repo.getCapabilities()['PWCUpdatable'] == True:
+            print 'Repository does not support PWCUpdatable, skipping'
+            return
+
         testFilename = settings.TEST_BINARY_1
         contentFile = open(testFilename, 'rb')
         testDoc = self._testFolder.createDocument(testFilename, contentFile=contentFile)
@@ -771,12 +781,12 @@ class DocumentTest(CmisTestBase):
         f = open(settings.TEST_BINARY_1, 'rb')
         doc10 = self._testFolder.createDocument(settings.TEST_BINARY_1, contentFile=f)
         pwc = doc10.checkout()
-        doc11 = pwc.checkin(major='false') # checkin a minor version, 1.1
+        doc11 = pwc.checkin(major='false')  # checkin a minor version, 1.1
         pwc = doc11.checkout()
-        doc20 = pwc.checkin() # checkin a major version, 2.0
+        doc20 = pwc.checkin()  # checkin a major version, 2.0
         doc20Id = doc20.getObjectId()
         pwc = doc20.checkout()
-        doc21 = pwc.checkin(major='false') # checkin a minor version, 2.1
+        doc21 = pwc.checkin(major='false')  # checkin a minor version, 2.1
         doc21Id = doc21.getObjectId()
 
         docLatest = doc10.getLatestVersion()
@@ -790,12 +800,12 @@ class DocumentTest(CmisTestBase):
         f = open(settings.TEST_BINARY_1, 'rb')
         doc10 = self._testFolder.createDocument(settings.TEST_BINARY_1, contentFile=f)
         pwc = doc10.checkout()
-        doc11 = pwc.checkin(major='false') # checkin a minor version, 1.1
+        doc11 = pwc.checkin(major='false')  # checkin a minor version, 1.1
         pwc = doc11.checkout()
-        doc20 = pwc.checkin() # checkin a major version, 2.0
+        doc20 = pwc.checkin()  # checkin a major version, 2.0
         doc20Label = doc20.getProperties()['cmis:versionLabel']
         pwc = doc20.checkout()
-        doc21 = pwc.checkin(major='false') # checkin a minor version, 2.1
+        doc21 = pwc.checkin(major='false')  # checkin a minor version, 2.1
         doc21Label = doc21.getProperties()['cmis:versionLabel']
 
         propsLatest = doc10.getPropertiesOfLatestVersion()
@@ -877,6 +887,36 @@ class DocumentTest(CmisTestBase):
         self.assertEquals(testFile2Size, os.path.getsize(exportFile2))
         os.remove(exportFile2)
 
+    def testSetContentStreamPWCMimeType(self):
+        '''Check the mimetype after the PWC checkin'''
+        if self._repo.getCapabilities()['ContentStreamUpdatability'] == 'none':
+            print 'This repository does not allow content stream updates, skipping'
+            return
+
+        testFile1 = settings.TEST_BINARY_1
+
+        # create a test document
+        contentFile = open(testFile1, 'rb')
+        newDoc = self._testFolder.createDocument(testFile1, contentFile=contentFile)
+        origMimeType = newDoc.properties['cmis:contentStreamMimeType']
+        contentFile.close()
+
+        # checkout the file
+        pwc = newDoc.checkout()
+
+        # update the PWC with a new file
+        f = open(testFile1, 'rb')
+        pwc.setContentStream(f)
+        f.close()
+
+        # checkin the PWC
+        newDoc = pwc.checkin()
+
+        # CMIS-231 the checked in doc should have the same mime type as
+        # the original document
+        self.assertEquals(origMimeType, \
+                          newDoc.properties['cmis:contentStreamMimeType'])
+
     def testSetContentStreamDoc(self):
         '''Set the content stream on a doc that's not checked out'''
         if self._repo.getCapabilities()['ContentStreamUpdatability'] != 'anytime':
@@ -928,6 +968,9 @@ class DocumentTest(CmisTestBase):
         if self._repo.getCapabilities()['ContentStreamUpdatability'] == 'none':
             print 'This repository does not allow content stream updates, skipping'
             return
+        if not self._repo.getCapabilities()['PWCUpdatable'] == True:
+            print 'Repository does not support PWCUpdatable, skipping'
+            return
 
         # create a test document
         contentFile = open(settings.TEST_BINARY_1, 'rb')
@@ -993,9 +1036,9 @@ class DocumentTest(CmisTestBase):
         '''Get all versions of an object'''
         testDoc = self._testFolder.createDocument('testdoc')
         pwc = testDoc.checkout()
-        doc = pwc.checkin() # 2.0
+        doc = pwc.checkin()  # 2.0
         pwc = doc.checkout()
-        doc = pwc.checkin() # 3.0
+        doc = pwc.checkin()  # 3.0
         self.assertEquals('3.0', doc.getProperties()['cmis:versionLabel'])
         rs = doc.getAllVersions()
         self.assertEquals(3, len(rs.getResults()))
@@ -1128,12 +1171,12 @@ class ACLTest(CmisTestBase):
             print 'Repository needs to support either both or basic permissions for this test'
             return
         acl = self._testFolder.getACL()
-        acl.addEntry(ACE('jpotts', 'cmis:write', 'true'))
+        acl.addEntry(ACE(settings.TEST_PRINCIPAL_ID, 'cmis:write', 'true'))
         acl = self._testFolder.applyACL(acl)
         # would be good to check that the permission we get back is what we set
         # but at least one server (Alf) appears to map the basic perm to a
         # repository-specific perm
-        self.assertTrue(acl.getEntries().has_key('jpotts'))
+        self.assertTrue(acl.getEntries().has_key(settings.TEST_PRINCIPAL_ID))
 
 
 def isInCollection(collection, targetDoc):
@@ -1170,4 +1213,24 @@ def isInResultSet(resultSet, targetDoc):
             done = True
 
 if __name__ == "__main__":
-    unittest.main()
+    #unittest.main()
+    tts = TestSuite()
+    tts.addTests(TestLoader().loadTestsFromTestCase(CmisClientTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(RepositoryTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(FolderTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(DocumentTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(TypeTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(ACLTest))
+    tts.addTests(TestLoader().loadTestsFromTestCase(ChangeEntryTest))
+
+    # WARNING: Potentially long-running tests
+
+    # Query tests
+    #tts.addTests(TestLoader().loadTestsFromTestCase(QueryTest))
+    #tts.addTest(QueryTest('testPropertyMatch'))
+    #tts.addTest(QueryTest('testFullText'))
+    #tts.addTest(QueryTest('testScore'))
+    #tts.addTest(QueryTest('testWildcardPropertyMatch'))
+    #tts.addTest(QueryTest('testSimpleSelect'))
+
+    unittest.TextTestRunner().run(tts)

Modified: incubator/chemistry/cmislib/trunk/src/tests/settings.py
URL: http://svn.apache.org/viewvc/incubator/chemistry/cmislib/trunk/src/tests/settings.py?rev=963897&r1=963896&r2=963897&view=diff
==============================================================================
--- incubator/chemistry/cmislib/trunk/src/tests/settings.py (original)
+++ incubator/chemistry/cmislib/trunk/src/tests/settings.py Tue Jul 13 22:52:23 2010
@@ -4,28 +4,34 @@
 # CMIS repository's service URL
 #REPOSITORY_URL = 'http://cmis.alfresco.com/s/cmis'
 #REPOSITORY_URL = 'http://localhost:8080/cmis/repository' # Apache Chemistry
-REPOSITORY_URL = 'http://cmis.dnsdojo.com:8080/p8cmis/resources/DaphneA/Service'
-#REPOSITORY_URL = 'http://localhost:8080/alfresco/s/cmis'
+#REPOSITORY_URL = 'http://cmis.dnsdojo.com:8080/p8cmis/resources/DaphneA/Service'
+REPOSITORY_URL = 'http://localhost:8080/alfresco/s/cmis'  # Alfresco
 #REPOSITORY_URL = 'http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository'
-#REPOSITORY_URL = 'http://localhost:8080/opencmis/atom' # OpenCMIS from the OpenText guys
+#REPOSITORY_URL = 'http://localhost:8080/opencmis/atom'  # OpenCMIS from the OpenText guys
 #REPOSITORY_URL = 'http://ec2-174-129-218-67.compute-1.amazonaws.com/cmis/atom' #OpenText on Amazon
+#REPOSITORY_URL = 'http://localhost:8080/chemistry/atom'  # Apache Chemistry OpenCMIS
+
 # CMIS repository credentials
 USERNAME = 'admin'
 PASSWORD = 'admin'
-#USERNAME = 'Administrator' # Nuxeo
-#PASSWORD = 'Administrator' # Nuxeo
+#USERNAME = 'Administrator'  # Nuxeo
+#PASSWORD = 'Administrator'  # Nuxeo
 #USERNAME = 'cmisuser'
 #PASSWORD = 'otcmis'
 # Absolute path to a directory where test folders can be created, including
 # the trailing slash.
-#TEST_ROOT_PATH = '/default-domain/jeff test/' # REMEMBER TRAILING SLASH
-TEST_ROOT_PATH = '/cmislib test/' # REMEMBER TRAILING SLASH
+#TEST_ROOT_PATH = '/default-domain/jeff test'  # No trailing slash
+TEST_ROOT_PATH = '/cmislib test'  # No trailing slash
 #TEST_ROOT_PATH = '/'
 # Binary test files. Assumed to exist in the same dir as this python script
 TEST_BINARY_1 = '250px-Cmis_logo.png'
 TEST_BINARY_2 = 'sample-a.pdf'
+# For repositories that support setting an ACL, the name of an existing
+# principal ID to add to the ACL of a test object. Some repositories care
+# if this ID doesn't exist. Some repositories don't.
+TEST_PRINCIPAL_ID = 'tuser1'
 # For repositories that may index test content asynchronously, the number of
 # times a query is retried before giving up.
 MAX_FULL_TEXT_TRIES = 10
 # The number of seconds the test should sleep between tries.
-FULL_TEXT_WAIT = 10
\ No newline at end of file
+FULL_TEXT_WAIT = 10