[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