At http://people.canonical.com/~robertc/baz2.0/plugins/builddeb/trunk
------------------------------------------------------------ revno: 463 revision-id: [email protected] parent: [email protected] committer: Robert Collins <[email protected]> branch nick: trunk timestamp: Tue 2010-07-06 15:32:59 +1000 message: Happy path tests R us. bzrtools_import file id resolution fix tested. === modified file 'dh_make.py' --- a/dh_make.py 2010-05-05 07:20:17 +0000 +++ b/dh_make.py 2010-07-06 05:32:59 +0000 @@ -108,8 +108,17 @@ tree.add("debian/source/format") command = ["dh_make", "--addmissing", "--packagename", "%s_%s" % (package_name, version)] + if getattr(sys.stdin, 'fileno', None) is None: + # running in a test or something + stdin = subprocess.PIPE + input = "s\n\n" + else: + stdin = sys.stdin + input = None proc = subprocess.Popen(command, cwd=tree.basedir, - preexec_fn=util.subprocess_setup, stdin=sys.stdin) + preexec_fn=util.subprocess_setup, stdin=stdin) + if input: + proc.stdin.write(input) retcode = proc.wait() if retcode != 0: raise bzr_errors.BzrCommandError("dh_make failed.") === modified file 'tests/blackbox/test_merge_upstream.py' --- a/tests/blackbox/test_merge_upstream.py 2008-03-05 17:00:51 +0000 +++ b/tests/blackbox/test_merge_upstream.py 2010-07-06 05:32:59 +0000 @@ -18,12 +18,141 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -from bzrlib.plugins.builddeb.tests import BuilddebTestCase +import os.path + +import bzrlib.export + +from bzrlib.plugins.builddeb.tests import ( + BuilddebTestCase, + SourcePackageBuilder, + ) + + +class Fixture(object): + """A test fixture.""" + + def __init__(self): + pass + + def setUp(self, test_case): + test_case.addCleanup(self.tearDown) + + def tearDown(self): + pass + + +class Upstream(Fixture): + """An upstream. + + :ivar tree: The tree of the upstream. + """ + + def setUp(self, test_case): + Fixture.setUp(self, test_case) + treename = test_case.getUniqueString() + tree = test_case.make_branch_and_tree(treename) + filename = test_case.getUniqueString() + test_case.build_tree(["%s/%s" % (treename, filename)]) + tree.add([filename]) + tree.commit(test_case.getUniqueString()) + self.tree = tree + + +class ExportedTarball(Fixture): + """An exported tarball 'release'.""" + + def __init__(self, upstream, version): + self.upstream = upstream + self.version = version + + def setUp(self, test_case): + filename = "project-%s.tar.gz" % self.version + tree = self.upstream.tree.branch.repository.revision_tree( + self.upstream.tree.branch.last_revision()) + bzrlib.export.export(tree, filename) + self.tarball = filename + + +class DHMadePackage(Fixture): + """A package made via dh-make.""" + + def __init__(self, tar, upstream): + self.tar = tar + self.upstream = upstream + + def setUp(self, test_case): + branchpath = test_case.getUniqueString() + tree = self.upstream.tree.bzrdir.sprout(branchpath).open_workingtree() + # UGH: spews, because the subprocess output isn't captured. Be nicer to + # use closer to the metal functions here, but I'm overwhelmed by the + # API today, and there is a grue. + test_case.run_bzr(['dh-make', 'package', str(self.tar.version), + os.path.abspath(self.tar.tarball)], working_dir=branchpath) + tree.smart_add([tree.basedir]) + tree.commit('debianised.') # Honestly. + self.tree = tree + + +class FileMovedReplacedUpstream(Fixture): + """An upstream that has been changed by moving and replacing a file.""" + + def __init__(self, upstream): + self.upstream = upstream + + def setUp(self, test_case): + branchpath = test_case.getUniqueString() + tree = self.upstream.tree.bzrdir.sprout(branchpath).open_workingtree() + self.tree = tree + tree.lock_write() + try: + newpath = test_case.getUniqueString() + for child in tree.inventory.root.children.values(): + if child.kind == 'file': + oldpath = child.name + tree.rename_one(oldpath, newpath) + test_case.build_tree(["%s/%s" % (os.path.basename(tree.basedir), + oldpath)]) + tree.add([oldpath]) + tree.commit('yo, renaming and replacing') + finally: + tree.unlock() + class TestMergeUpstream(BuilddebTestCase): - def test_merge_upstream_available(self): - self.run_bzr('merge-upstream --help') - -# vim: ts=2 sts=2 sw=2 + def test_merge_upstream_available(self): + self.run_bzr('merge-upstream --help') + + def make_upstream(self): + result = Upstream() + result.setUp(self) + return result + + def release_upstream(self, upstream): + tar = ExportedTarball(upstream, version=self.getUniqueInteger()) + tar.setUp(self) + return tar + + def import_upstream(self, tar, upstream): + packaging = DHMadePackage(tar, upstream) + packaging.setUp(self) + return packaging + + def file_moved_replaced_upstream(self, upstream): + result = FileMovedReplacedUpstream(upstream) + result.setUp(self) + return result + + def test_smoke_renamed_file(self): + # When a file is renamed by upstream, it should still import ok. + upstream = self.make_upstream() + rel1 = self.release_upstream(upstream) + package = self.import_upstream(rel1, upstream) + changed_upstream = self.file_moved_replaced_upstream(upstream) + rel2 = self.release_upstream(changed_upstream) + self.run_bzr(['merge-upstream', '--version', str(rel2.version), + os.path.abspath(rel2.tarball), changed_upstream.tree.basedir], + working_dir=package.tree.basedir) + +# vim: ts=4 sts=4 sw=4 -- bazaar-commits mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/bazaar-commits
