[Pkg-bazaar-commits] ./bzr-builddeb/trunk r204: Don't eat the first two characters of a filename when the prefix is '.'

James Westby jw+debian at jameswestby.net
Thu May 15 13:29:36 UTC 2008


------------------------------------------------------------
revno: 204
committer: James Westby <jw+debian at jameswestby.net>
branch nick: trunk
timestamp: Fri 2008-01-25 15:15:03 +0000
message:
  Don't eat the first two characters of a filename when the prefix is '.'
modified:
  import_dsc.py
  tests/test_import_dsc.py
-------------- next part --------------
=== modified file 'import_dsc.py'
--- a/import_dsc.py	2008-01-25 13:32:52 +0000
+++ b/import_dsc.py	2008-01-25 15:15:03 +0000
@@ -48,7 +48,7 @@
 from bzrlib.transport import get_transport
 from bzrlib.workingtree import WorkingTree
 
-from bzrlib.plugins.bzrtools.upstream_import import (common_directory,
+from bzrlib.plugins.bzrtools.upstream_import import (
                                                      names_of_files,
                                                      add_implied_parents,
                                                      )
@@ -97,6 +97,35 @@
       return True
 
 
+def top_directory(path):
+    """Return the top directory given in a path."""
+    append = ''
+    if path.endswith('/'):
+      append = '/'
+    dirname = os.path.dirname(osutils.normpath(path) + append)
+    last_dirname = dirname
+    while True:
+        dirname = os.path.dirname(dirname)
+        if dirname == '' or dirname == last_dirname:
+            return last_dirname
+        last_dirname = dirname
+
+
+def common_directory(names):
+    """Determine a single directory prefix from a list of names"""
+    possible_prefix = None
+    for name in names:
+        name_top = top_directory(name)
+        if name_top == '':
+            return None
+        if possible_prefix is None:
+            possible_prefix = name_top
+        else:
+            if name_top != possible_prefix:
+                return None
+    return possible_prefix
+
+
 def import_archive(tree, archive_file, file_ids_from=None):
     prefix = common_directory(names_of_files(archive_file))
     tt = TreeTransform(tree)

=== modified file 'tests/test_import_dsc.py'
--- a/tests/test_import_dsc.py	2008-01-25 13:32:52 +0000
+++ b/tests/test_import_dsc.py	2008-01-25 15:15:03 +0000
@@ -1069,6 +1069,24 @@
     DscImporter([self.native_dsc_1]).import_dsc(self.target)
     self.failUnlessExists(self.target)
 
+  def test_import_dot_prefix(self):
+    write_to_file('README', 'hello\n')
+    write_to_file('NEWS', 'bye bye\n')
+    tar = tarfile.open(self.native_1, 'w:gz')
+    try:
+      tar.addfile(_TarInfo('./'))
+      tar.addfile(_TarInfo('./README'))
+      tar.addfile(_TarInfo('./NEWS'))
+    finally:
+      tar.close()
+      os.unlink('README')
+      os.unlink('NEWS')
+    self.make_dsc(self.native_dsc_1, '0.1', self.native_1)
+    DscImporter([self.native_dsc_1]).import_dsc(self.target)
+    self.failUnlessExists(self.target)
+    self.failIfExists(os.path.join(self.target, 'ADME'))
+    self.failUnlessExists(os.path.join(self.target, 'README'))
+
   def test_import_with_rcs(self):
     write_to_file('README', 'hello\n')
     write_to_file('README,v', 'bye bye\n')



More information about the Pkg-bazaar-commits mailing list