[Pkg-bazaar-commits] r115 ./bzr-builddeb/people/jdw/merge_upstream: Make sure that the source tarball exists.
James Westby
jw+debian at jameswestby.net
Fri Jun 22 17:19:50 UTC 2007
------------------------------------------------------------
revno: 115
committer: James Westby <jw+debian at jameswestby.net>
branch nick: merge-upstream.siretart
timestamp: Fri 2007-06-22 17:39:09 +0100
message:
Make sure that the source tarball exists.
Also refactor the tests a little.
modified:
merge_upstream.py
tests/test_merge_upstream.py
-------------- next part --------------
=== modified file 'merge_upstream.py'
--- a/merge_upstream.py 2007-06-22 16:04:56 +0000
+++ b/merge_upstream.py 2007-06-22 16:39:09 +0000
@@ -54,6 +54,8 @@
"""
if tree.changes_from(tree.basis_tree()).has_changed():
raise BzrCommandError("Working tree has uncommitted changes.")
+ if not os.path.exists(source):
+ raise BzrCommandError("%s does not exists" % source)
current_revision = tree.last_revision()
revno, rev_id = old_revision.in_branch(tree.branch)
tree.revert([], tree.branch.repository.revision_tree(rev_id))
=== modified file 'tests/test_merge_upstream.py'
--- a/tests/test_merge_upstream.py 2007-06-22 16:04:56 +0000
+++ b/tests/test_merge_upstream.py 2007-06-22 16:39:09 +0000
@@ -38,40 +38,53 @@
finally:
f.close()
+def make_revspec(rev_id):
+ """Turn the rev_id passed in to a revision spec."""
+ return RevisionSpec.from_string('revid:' + rev_id)
+
class TestSimpleMergeUpstreamNormal(TestCaseWithTransport):
"""Test that builddeb can merge upstream in normal mode"""
+ upstream_rev_id_1 = 'upstream-1'
+ upstream_tarball = '../package-0.2.tar.gz'
+
+ def make_first_upstream_commit(self):
+ self.wt = self.make_branch_and_tree('.')
+ self.build_tree(['README', 'CHANGELOG'])
+ self.wt.add(['README', 'CHANGELOG'], ['README-id', 'CHANGELOG-id'])
+ self.wt.commit('upstream version 1', rev_id=self.upstream_rev_id_1)
+
+ def make_first_debian_commit(self):
+ self.build_tree(['debian/', 'debian/changelog'])
+ self.wt.add(['debian/', 'debian/changelog'],
+ ['debian-id', 'debian-changelog-id'])
+ self.wt.commit('debian version 1-1', rev_id='debian-1-1')
+
+ def make_new_upstream_tarball(self):
+ self.build_tree(['package-0.2/', 'package-0.2/README-NEW',
+ 'package-0.2/CHANGELOG'])
+ write_to_file('package-0.2/CHANGELOG', 'version 2\n')
+ tar = tarfile.open(self.upstream_tarball, 'w:gz')
+ try:
+ tar.add('package-0.2')
+ finally:
+ tar.close()
+ shutil.rmtree('package-0.2')
+
def perform_upstream_merge(self):
"""Perform a simple upstream merge.
:returns: the working tree after the merge.
:rtype: WorkingTree
"""
- wt = self.make_branch_and_tree('.')
- # create the original upstream import
- self.build_tree(['README', 'CHANGELOG'])
- wt.add(['README', 'CHANGELOG'], ['README-id', 'CHANGELOG-id'])
- wt.commit('upstream version 1', rev_id='upstream-1')
- old_upstream_revision = wt.branch.last_revision()
- # create the debian branch on top
- self.build_tree(['debian/', 'debian/changelog'])
- wt.add(['debian/', 'debian/changelog'],
- ['debian-id', 'debian-changelog-id'])
- wt.commit('debian version 1-1', rev_id='debian-1-1')
- # create the new upstream release to import
- self.build_tree(['package-0.2/', 'package-0.2/README-NEW',
- 'package-0.2/CHANGELOG'])
- write_to_file('package-0.2/CHANGELOG', 'version 2\n')
- tar = tarfile.open('../package-0.2.tar.gz', 'w:gz')
- try:
- tar.add('package-0.2')
- finally:
- tar.close()
- shutil.rmtree('package-0.2')
- merge_upstream(wt, '../package-0.2.tar.gz',
- RevisionSpec.from_string("revid:" + old_upstream_revision))
- os.unlink('../package-0.2.tar.gz')
- return wt
+ self.make_first_upstream_commit()
+ old_upstream_revision = self.wt.branch.last_revision()
+ self.make_first_debian_commit()
+ self.make_new_upstream_tarball()
+ merge_upstream(self.wt, self.upstream_tarball,
+ make_revspec(old_upstream_revision))
+ os.unlink(self.upstream_tarball)
+ return self.wt
def test_merge_upstream_gives_correct_tree(self):
"""Check that a merge leaves the tree as expected."""
@@ -112,7 +125,7 @@
wt = self.perform_upstream_merge()
rh = wt.branch.revision_history()
self.assertEqual(len(rh), 2)
- self.assertEqual(rh[0], 'upstream-1')
+ self.assertEqual(rh[0], self.upstream_rev_id_1)
self.assertEqual(wt.branch.repository.get_revision(rh[1]).message,
'import upstream from package-0.2.tar.gz')
@@ -122,6 +135,13 @@
wt.add(['file'])
self.assertRaises(BzrCommandError, merge_upstream, wt, 'source', 1)
+ def test_merge_upstream_handles_no_source(self):
+ self.make_first_upstream_commit()
+ old_upstream_revision = self.wt.branch.last_revision()
+ self.make_first_debian_commit()
+ self.assertRaises(BzrCommandError, merge_upstream, self.wt, 'source',
+ make_revspec(old_upstream_revision))
+
class TestConflictMergeUpstreamNormal(TestCaseWithTransport):
"""Test merge upstream with conflicts in the new version."""
@@ -155,7 +175,7 @@
tar.close()
shutil.rmtree('package-0.2')
merge_upstream(wt, 'package-0.2.tar.gz',
- RevisionSpec.from_string("revid:" + old_upstream_revision))
+ make_revspec(old_upstream_revision))
os.unlink('package-0.2.tar.gz')
return wt
More information about the Pkg-bazaar-commits
mailing list