# HG changeset patch # User Patrick Mezard # Date 1226701104 21600 # Node ID 01e747937d35232a532706826bb9ca6b36da1809 # Parent 6c9b7cf1c5aa98e6b031f08d006d7b2a1a24b264 test_util: add commitchanges() to TestBase diff --git a/tests/test_push_dirs.py b/tests/test_push_dirs.py --- a/tests/test_push_dirs.py +++ b/tests/test_push_dirs.py @@ -1,11 +1,5 @@ -import os -import sys import unittest -from mercurial import context -from mercurial import hg -from mercurial import node - import test_util class TestPushDirectories(test_util.TestBase): @@ -15,45 +9,7 @@ class TestPushDirectories(test_util.Test self.repo_path, self.wc_path) - def _commitchanges(self, repo, changes): - parentctx = repo['tip'] - - changed, removed = [], [] - for source, dest, newdata in changes: - if dest is None: - removed.append(source) - else: - changed.append(dest) - - def filectxfn(repo, memctx, path): - if path in removed: - raise IOError() - entry = [e for e in changes if path == e[1]][0] - source, dest, newdata = entry - if newdata is None: - newdata = parentctx[source].data() - copied = None - if source != dest: - copied = source - return context.memfilectx(path=dest, - data=newdata, - islink=False, - isexec=False, - copied=copied) - - ctx = context.memctx(repo, - (parentctx.node(), node.nullid), - 'automated test', - changed + removed, - filectxfn, - 'an_author', - '2008-10-07 20:59:48 -0500') - nodeid = repo.commitctx(ctx) - repo = self.repo - hg.update(repo, nodeid) - return nodeid - - def test_push_dirs(self, commit=True): + def test_push_dirs(self): changes = [ # Single file in single directory ('d1/a', 'd1/a', 'a\n'), @@ -64,7 +20,7 @@ class TestPushDirectories(test_util.Test ('d31/d32/d33/d34/a', 'd31/d32/d33/d34/a', 'a\n'), ('d31/d32/a', 'd31/d32/a', 'a\n'), ] - self._commitchanges(self.repo, changes) + self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('trunk'), ['d1', 'd1/a', 'd2', 'd2/a', 'd2/b', 'd31', @@ -79,7 +35,7 @@ class TestPushDirectories(test_util.Test # Removing this file should remove one empty parent dir too ('d31/d32/d33/d34/a', None, None), ] - self._commitchanges(self.repo, changes) + self.commitchanges(changes) self.pushrevisions() self.assertEqual(self.svnls('trunk'), ['d2', 'd2/b', 'd31', 'd31/d32', 'd31/d32/a', 'd31/d32/d33']) diff --git a/tests/test_push_renames.py b/tests/test_push_renames.py --- a/tests/test_push_renames.py +++ b/tests/test_push_renames.py @@ -1,17 +1,6 @@ -import os import sys -import tempfile import unittest -from mercurial import context -from mercurial import commands -from mercurial import hg -from mercurial import node -from mercurial import ui -from mercurial import revlog - -import fetch_command -import push_cmd import test_util class TestPushRenames(test_util.TestBase): @@ -22,41 +11,6 @@ class TestPushRenames(test_util.TestBase self.wc_path, True) - def _commitchanges(self, repo, changes): - parentctx = repo['tip'] - - changed, removed = [], [] - for source, dest, newdata in changes: - if dest is None: - removed.append(source) - else: - changed.append(dest) - - def filectxfn(repo, memctx, path): - if path in removed: - raise IOError() - entry = [e for e in changes if path == e[1]][0] - source, dest, newdata = entry - if newdata is None: - newdata = parentctx[source].data() - copied = None - if source != dest: - copied = source - return context.memfilectx(path=dest, - data=newdata, - islink=False, - isexec=False, - copied=copied) - - ctx = context.memctx(repo, - (parentctx.node(), node.nullid), - 'automated test', - changed + removed, - filectxfn, - 'an_author', - '2008-10-07 20:59:48 -0500') - return repo.commitctx(ctx) - def _debug_print_copies(self, ctx): w = sys.stderr.write for f in ctx.files(): @@ -80,7 +34,7 @@ class TestPushRenames(test_util.TestBase copy = ctx[dest].renamed() self.assertEqual(copy[0], source) - def test_push_renames(self, commit=True): + def test_push_renames(self): repo = self.repo changes = [ @@ -102,12 +56,8 @@ class TestPushRenames(test_util.TestBase ('e', 'e3', 'e\ne3\n'), ('e', None, None), ] - self._commitchanges(repo, changes) - - hg.update(repo, repo['tip'].node()) - push_cmd.push_revisions_to_subversion( - ui.ui(), repo=self.repo, hg_repo_path=self.wc_path, - svn_url=test_util.fileurl(self.repo_path)) + self.commitchanges(changes) + self.pushrevisions() tip = self.repo['tip'] # self._debug_print_copies(tip) self.assertchanges(changes, tip) diff --git a/tests/test_util.py b/tests/test_util.py --- a/tests/test_util.py +++ b/tests/test_util.py @@ -7,8 +7,10 @@ import tempfile import unittest import urllib -from mercurial import ui +from mercurial import context from mercurial import hg +from mercurial import node +from mercurial import ui import fetch_command import push_cmd @@ -95,3 +97,53 @@ class TestBase(unittest.TestCase): entries = [e.strip('/') for e in stdout.splitlines()] entries.sort() return entries + + def commitchanges(self, changes): + """Commit changes to mercurial directory + + 'changes' is a sequence of tuples (source, dest, data). It can look + like: + - (source, source, data) to set source content to data + - (source, dest, None) to set dest content to source one, and mark it as + copied from source. + - (source, dest, data) to set dest content to data, and mark it as copied + from source. + - (source, None, None) to remove source. + """ + repo = self.repo + parentctx = repo['tip'] + + changed, removed = [], [] + for source, dest, newdata in changes: + if dest is None: + removed.append(source) + else: + changed.append(dest) + + def filectxfn(repo, memctx, path): + if path in removed: + raise IOError() + entry = [e for e in changes if path == e[1]][0] + source, dest, newdata = entry + if newdata is None: + newdata = parentctx[source].data() + copied = None + if source != dest: + copied = source + return context.memfilectx(path=dest, + data=newdata, + islink=False, + isexec=False, + copied=copied) + + ctx = context.memctx(repo, + (parentctx.node(), node.nullid), + 'automated test', + changed + removed, + filectxfn, + 'an_author', + '2008-10-07 20:59:48 -0500') + nodeid = repo.commitctx(ctx) + repo = self.repo + hg.update(repo, nodeid) + return nodeid