Procházet zdrojové kódy

Fix location parsing issue with short paths

Jonas Borgström před 12 roky
rodič
revize
9630714fac
2 změnil soubory, kde provedl 14 přidání a 6 odebrání
  1. 4 4
      darc/helpers.py
  2. 10 2
      darc/testsuite/helpers.py

+ 4 - 4
darc/helpers.py

@@ -245,17 +245,17 @@ def group2gid(group):
         return None
         return None
 
 
 
 
-class Location(object):
+class Location:
     """Object representing a repository / archive location
     """Object representing a repository / archive location
     """
     """
     proto = user = host = port = path = archive = None
     proto = user = host = port = path = archive = None
     ssh_re = re.compile(r'(?P<proto>ssh)://(?:(?P<user>[^@]+)@)?'
     ssh_re = re.compile(r'(?P<proto>ssh)://(?:(?P<user>[^@]+)@)?'
                         r'(?P<host>[^:/#]+)(?::(?P<port>\d+))?'
                         r'(?P<host>[^:/#]+)(?::(?P<port>\d+))?'
-                        r'(?P<path>[^:]*)(?:::(?P<archive>.+))?')
+                        r'(?P<path>[^:]+)(?:::(?P<archive>.+))?')
     file_re = re.compile(r'(?P<proto>file)://'
     file_re = re.compile(r'(?P<proto>file)://'
-                         r'(?P<path>[^:]*)(?:::(?P<archive>.+))?')
+                         r'(?P<path>[^:]+)(?:::(?P<archive>.+))?')
     scp_re = re.compile(r'((?:(?P<user>[^@]+)@)?(?P<host>[^:/]+):)?'
     scp_re = re.compile(r'((?:(?P<user>[^@]+)@)?(?P<host>[^:/]+):)?'
-                        r'(?P<path>[^:]*)(?:::(?P<archive>.+))?')
+                        r'(?P<path>[^:]+)(?:::(?P<archive>.+))?')
 
 
     def __init__(self, text):
     def __init__(self, text):
         self.orig = text
         self.orig = text

+ 10 - 2
darc/testsuite/helpers.py

@@ -19,8 +19,16 @@ class LocationTestCase(DarcTestCase):
             "Location(proto='ssh', user='user', host='host', port=22, path='/some/path', archive='archive')"
             "Location(proto='ssh', user='user', host='host', port=22, path='/some/path', archive='archive')"
         )
         )
         self.assert_equal(
         self.assert_equal(
-            repr(Location('/some/path::archive')),
-            "Location(proto='file', user=None, host=None, port=None, path='/some/path', archive='archive')"
+            repr(Location('mybackup.darc::archive')),
+            "Location(proto='file', user=None, host=None, port=None, path='mybackup.darc', archive='archive')"
+        )
+        self.assert_equal(
+            repr(Location('/some/absolute/path::archive')),
+            "Location(proto='file', user=None, host=None, port=None, path='/some/absolute/path', archive='archive')"
+        )
+        self.assert_equal(
+            repr(Location('some/relative/path::archive')),
+            "Location(proto='file', user=None, host=None, port=None, path='some/relative/path', archive='archive')"
         )
         )