]> granicus.if.org Git - python/commitdiff
Issue #9850: Fixed macpath.join() for empty first component. Patch by
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 27 Sep 2014 15:53:23 +0000 (18:53 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Sat, 27 Sep 2014 15:53:23 +0000 (18:53 +0300)
Oleg Oshmyan.

Lib/macpath.py
Lib/test/test_macpath.py
Misc/NEWS

index d34f9e944cc8bf11835fbb467345b0eb85c779bf..5ca00977c6dc12d9b4e0536f2880f44da58f88c9 100644 (file)
@@ -53,7 +53,7 @@ def join(s, *p):
     colon = _get_colon(s)
     path = s
     for t in p:
-        if (not s) or isabs(t):
+        if (not path) or isabs(t):
             path = t
             continue
         if t[:1] == colon:
index ae4e5640fa92daf94bb01b557bdc8989f108c6ae..22f84919bb9c2d597dd1080005705172664e79b9 100644 (file)
@@ -49,16 +49,40 @@ class MacPathTestCase(unittest.TestCase):
     def test_join(self):
         join = macpath.join
         self.assertEqual(join('a', 'b'), ':a:b')
+        self.assertEqual(join(':a', 'b'), ':a:b')
+        self.assertEqual(join(':a:', 'b'), ':a:b')
+        self.assertEqual(join(':a::', 'b'), ':a::b')
+        self.assertEqual(join(':a', '::b'), ':a::b')
+        self.assertEqual(join('a', ':'), ':a:')
+        self.assertEqual(join('a:', ':'), 'a:')
+        self.assertEqual(join('a', ''), ':a:')
+        self.assertEqual(join('a:', ''), 'a:')
+        self.assertEqual(join('', ''), '')
         self.assertEqual(join('', 'a:b'), 'a:b')
+        self.assertEqual(join('', 'a', 'b'), ':a:b')
         self.assertEqual(join('a:b', 'c'), 'a:b:c')
         self.assertEqual(join('a:b', ':c'), 'a:b:c')
         self.assertEqual(join('a', ':b', ':c'), ':a:b:c')
+        self.assertEqual(join('a', 'b:'), 'b:')
+        self.assertEqual(join('a:', 'b:'), 'b:')
 
         self.assertEqual(join(b'a', b'b'), b':a:b')
+        self.assertEqual(join(b':a', b'b'), b':a:b')
+        self.assertEqual(join(b':a:', b'b'), b':a:b')
+        self.assertEqual(join(b':a::', b'b'), b':a::b')
+        self.assertEqual(join(b':a', b'::b'), b':a::b')
+        self.assertEqual(join(b'a', b':'), b':a:')
+        self.assertEqual(join(b'a:', b':'), b'a:')
+        self.assertEqual(join(b'a', b''), b':a:')
+        self.assertEqual(join(b'a:', b''), b'a:')
+        self.assertEqual(join(b'', b''), b'')
         self.assertEqual(join(b'', b'a:b'), b'a:b')
+        self.assertEqual(join(b'', b'a', b'b'), b':a:b')
         self.assertEqual(join(b'a:b', b'c'), b'a:b:c')
         self.assertEqual(join(b'a:b', b':c'), b'a:b:c')
         self.assertEqual(join(b'a', b':b', b':c'), b':a:b:c')
+        self.assertEqual(join(b'a', b'b:'), b'b:')
+        self.assertEqual(join(b'a:', b'b:'), b'b:')
 
     def test_splitext(self):
         splitext = macpath.splitext
index 2f3d9d127ce5c141bbcdf69fa6f1ed25147d4ee9..0b8ba0c1054cd49cb1666ff746f10d0be20e68be 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #9850: Fixed macpath.join() for empty first component.  Patch by
+  Oleg Oshmyan.
+
 - Issue #22427: TemporaryDirectory no longer attempts to clean up twice when
   used in the with statement in generator.