Hi,
   Pl. find attached some improved tests for svn.wc python bindings.
   This patch is dependant on the import of shutil module which is also  
present in a patch I submitted earlier (but not committed, yet)...
        http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=116821
   So, that might have to be taken care of.
   Pl. note that there are two failing test cases, which are supposed to  
work as per the svn_wc.h documentation. so, I have kept them as-is (added  
comments tho). Am trying to figure out the best way to fix these  
issues/documentation and then would come back and fix these failures.
[[[
Improve existing tests for the svn.wc python binding.
* subversion/bindings/swig/python/tests/wc.py
   (global): import shutil.
   (test_check_wc): Add invalid-file case.
   (test_get_ancestry): Add invalid-file case.
   (test_status): Add cases with varying input.
   (test_is_normal_prop): Use failUnless instead of assert_.
   (test_is_wc_prop): Use failUnless instead of assert_.
   (test_is_entry_prop): Use failUnless instead of assert_.
   (test_get_pristine_copy_path): Add test for removal of text-base case.
]]]
Regards,
Madan.
Index: subversion/bindings/swig/python/tests/wc.py
===================================================================
--- subversion/bindings/swig/python/tests/wc.py	(revision 20154)
+++ subversion/bindings/swig/python/tests/wc.py	(working copy)
@@ -1,4 +1,5 @@
 import unittest, os, tempfile
+import shutil
 
 from svn import core, repos, wc, client
 from libsvn.core import SubversionException
@@ -74,37 +75,70 @@
 
   def test_check_wc(self):
       self.assert_(wc.check_wc(self.path) > 0)
+      self.assertRaises(SubversionException, wc.check_wc,
+                        os.path.join(self.path,"NONEXISTANTFILE"))
 
   def test_get_ancestry(self):
       self.assertEqual([self.repos_url, 12], 
                        wc.get_ancestry(self.path, self.wc))
+      self.assertRaises(SubversionException,
+                        wc.get_ancestry,
+                        os.path.join(self.path, "NONEXISTANTFILE"),
+                        self.wc)
 
   def test_status(self):
       wc.status2(self.path, self.wc)
 
+      # prepare for tests:remove a versioned file, add an unversioned file
+      removed_versioned_file = os.path.join(self.path, "trunk", "README.txt")
+      unversioned_file = os.path.join(self.path, "UNVERSIONEDFILE")
+      nonexistant_file = os.path.join(self.path, "NONEXISTANTFILE")
+      os.remove(removed_versioned_file)
+      open(unversioned_file, 'w').close()
+
+      # the first case fails now, but is expected to pass as per comment in
+      # subversion/include/svn_wc.h
+      self.assertEqual(wc.status2(removed_versioned_file, self.wc).text_status,
+                       wc.svn_wc_status_missing)
+      self.assertEqual(wc.status2(nonexistant_file, self.wc).text_status,
+                       wc.svn_wc_status_none)
+      self.assertEqual(wc.status2(unversioned_file, self.wc).text_status,
+                       wc.svn_wc_status_unversioned)
+
   def test_is_normal_prop(self):
       self.failIf(wc.is_normal_prop('svn:wc:foo:bar'))
       self.failIf(wc.is_normal_prop('svn:entry:foo:bar'))
-      self.assert_(wc.is_normal_prop('svn:foo:bar'))
-      self.assert_(wc.is_normal_prop('foreign:foo:bar'))
+      self.failUnless(wc.is_normal_prop('svn:foo:bar'))
+      self.failUnless(wc.is_normal_prop('foreign:foo:bar'))
 
   def test_is_wc_prop(self):
-      self.assert_(wc.is_wc_prop('svn:wc:foo:bar'))
+      self.failUnless(wc.is_wc_prop('svn:wc:foo:bar'))
       self.failIf(wc.is_wc_prop('svn:entry:foo:bar'))
       self.failIf(wc.is_wc_prop('svn:foo:bar'))
       self.failIf(wc.is_wc_prop('foreign:foo:bar'))
 
   def test_is_entry_prop(self):
-      self.assert_(wc.is_entry_prop('svn:entry:foo:bar'))
+      self.failUnless(wc.is_entry_prop('svn:entry:foo:bar'))
       self.failIf(wc.is_entry_prop('svn:wc:foo:bar'))
       self.failIf(wc.is_entry_prop('svn:foo:bar'))
       self.failIf(wc.is_entry_prop('foreign:foo:bar'))
 
   def test_get_pristine_copy_path(self):
+      text_base = os.path.join(self.path, wc.get_adm_dir(), 'text-base')
       self.assertEqual(
         wc.get_pristine_copy_path(os.path.join(self.path, 'foo')),
-        os.path.join(self.path, wc.get_adm_dir(), 'text-base', 'foo.svn-base'))
+        os.path.join(text_base, 'foo.svn-base'))
 
+      # now remove the text-base and test
+      # As of now, this fails, but should pass as per
+      # comment in subversion/include/svn_wc.h
+      if os.path.exists(text_base):
+        shutil.rmtree(text_base)
+
+      self.assertEqual(
+        wc.get_pristine_copy_path(os.path.join(self.path, 'NONEXISTANTFILE')),
+        None)
+
   def tearDown(self):
       wc.adm_close(self.wc)
 
Improve existing tests for the svn.wc python binding.
* subversion/bindings/swig/python/tests/wc.py
  (global): import shutil.
  (test_check_wc): Add invalid-file case.
  (test_get_ancestry): Add invalid-file case.
  (test_status): Add cases with varying input.
  (test_is_normal_prop): Use failUnless instead of assert_.
  (test_is_wc_prop): Use failUnless instead of assert_.
  (test_is_entry_prop): Use failUnless instead of assert_.
  (test_get_pristine_copy_path): Add test for removal of text-base case.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jun 17 10:54:02 2006