[Pkg-bazaar-commits] ./bzr/unstable r601: - whitebox tests for branch path handling

Martin Pool mbp at sourcefrog.net
Fri Apr 10 08:20:25 UTC 2009


------------------------------------------------------------
revno: 601
committer: Martin Pool <mbp at sourcefrog.net>
timestamp: Mon 2005-05-30 16:47:35 +1000
message:
  - whitebox tests for branch path handling
added:
  bzrlib/whitebox.py
-------------- next part --------------
=== added file 'bzrlib/whitebox.py'
--- a/bzrlib/whitebox.py	1970-01-01 00:00:00 +0000
+++ b/bzrlib/whitebox.py	2005-05-30 06:47:35 +0000
@@ -0,0 +1,78 @@
+#! /usr/bin/python
+
+from bzrlib.branch import ScratchBranch
+from bzrlib.errors import NotBranchError
+from unittest import TestCase
+import os, unittest
+
+def Reporter(TestResult):
+    def startTest(self, test):
+        super(Reporter, self).startTest(test)
+        print test.id(),
+
+    def stopTest(self, test):
+        print
+
+class BranchPathTestCase(TestCase):
+    """test for branch path lookups
+
+    Branch.relpath and bzrlib.branch._relpath do a simple but subtle
+    job: given a path (either relative to cwd or absolute), work out
+    if it is inside a branch and return the path relative to the base.
+    """
+    
+    def runTest(self):
+        from bzrlib.branch import _relpath
+        import tempfile, shutil
+        
+        savedir = os.getcwdu()
+        dtmp = tempfile.mkdtemp()
+
+        def rp(p):
+            return _relpath(dtmp, p)
+        
+        try:
+            # check paths inside dtmp while standing outside it
+            self.assertEqual(rp(os.path.join(dtmp, 'foo')), 'foo')
+
+            # root = nothing
+            self.assertEqual(rp(dtmp), '')
+
+            self.assertRaises(NotBranchError,
+                              rp,
+                              '/etc')
+
+            # now some near-miss operations -- note that
+            # os.path.commonprefix gets these wrong!
+            self.assertRaises(NotBranchError,
+                              rp,
+                              dtmp.rstrip('\\/') + '2')
+
+            self.assertRaises(NotBranchError,
+                              rp,
+                              dtmp.rstrip('\\/') + '2/foo')
+
+            # now operations based on relpath of files in current
+            # directory, or nearby
+            os.chdir(dtmp)
+
+            self.assertEqual(rp('foo/bar/quux'), 'foo/bar/quux')
+
+            self.assertEqual(rp('foo'), 'foo')
+
+            self.assertEqual(rp('./foo'), 'foo')
+
+            self.assertEqual(rp(os.path.abspath('foo')), 'foo')
+
+            self.assertRaises(NotBranchError,
+                              rp, '../foo')
+
+        finally:
+            os.chdir(savedir)
+            shutil.rmtree(dtmp)
+
+
+                              
+if __name__ == '__main__':
+    unittest.main()
+    



More information about the Pkg-bazaar-commits mailing list