2018-01-03 22:51:20 +03:00
|
|
|
# no-check-code -- see T24862348
|
2018-01-17 14:23:44 +03:00
|
|
|
import test_hgsubversion_util
|
2010-07-14 17:39:18 +04:00
|
|
|
|
2008-12-23 06:20:10 +03:00
|
|
|
import os
|
2012-04-21 13:36:23 +04:00
|
|
|
import re
|
2008-12-12 05:24:48 +03:00
|
|
|
|
2009-04-14 06:51:12 +04:00
|
|
|
from hgext import rebase
|
2008-12-12 05:24:48 +03:00
|
|
|
from mercurial import hg
|
2008-12-23 06:20:10 +03:00
|
|
|
from mercurial import revlog
|
|
|
|
from mercurial import context
|
2008-12-24 20:12:23 +03:00
|
|
|
from mercurial import node
|
2009-05-22 17:12:31 +04:00
|
|
|
from mercurial import commands
|
2010-11-11 23:32:22 +03:00
|
|
|
from mercurial import util as hgutil
|
2008-12-12 05:24:48 +03:00
|
|
|
|
2018-01-11 03:20:54 +03:00
|
|
|
from hgext.hgsubversion import util
|
|
|
|
from hgext.hgsubversion import svncommands
|
|
|
|
from hgext.hgsubversion import verify
|
|
|
|
from hgext.hgsubversion import wrappers
|
|
|
|
from hgext.hgsubversion import compathacks
|
2008-12-12 05:24:48 +03:00
|
|
|
|
2009-01-03 00:54:07 +03:00
|
|
|
expected_info_output = '''URL: %(repourl)s/%(branch)s
|
|
|
|
Repository Root: %(repourl)s
|
2008-12-12 05:24:48 +03:00
|
|
|
Repository UUID: df2126f7-00ab-4d49-b42c-7e981dde0bcf
|
|
|
|
Revision: %(rev)s
|
|
|
|
Node Kind: directory
|
|
|
|
Last Changed Author: durin
|
|
|
|
Last Changed Rev: %(rev)s
|
|
|
|
Last Changed Date: %(date)s
|
|
|
|
'''
|
|
|
|
|
2012-04-19 20:29:28 +04:00
|
|
|
def repourl(repo_path):
|
2018-01-17 14:23:44 +03:00
|
|
|
return util.normalize_url(test_hgsubversion_util.fileurl(repo_path))
|
2009-05-15 21:18:43 +04:00
|
|
|
|
2018-01-17 14:23:44 +03:00
|
|
|
class UtilityTests(test_hgsubversion_util.TestBase):
|
2013-08-10 01:46:02 +04:00
|
|
|
stupid_mode_tests = True
|
|
|
|
|
2013-08-27 03:40:31 +04:00
|
|
|
def test_info_output(self, custom=False):
|
|
|
|
if custom:
|
|
|
|
config = {
|
|
|
|
'hgsubversionbranch.default': 'trunk',
|
|
|
|
'hgsubversionbranch.the_branch': 'branches/the_branch',
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
config = {}
|
|
|
|
repo, repo_path = self.load_and_fetch('two_heads.svndump', config=config)
|
2008-12-12 05:24:48 +03:00
|
|
|
hg.update(self.repo, 'the_branch')
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.info(u, self.repo)
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2008-12-12 05:24:48 +03:00
|
|
|
expected = (expected_info_output %
|
|
|
|
{'date': '2008-10-08 01:39:05 +0000 (Wed, 08 Oct 2008)',
|
2012-04-19 20:29:28 +04:00
|
|
|
'repourl': repourl(repo_path),
|
2008-12-12 05:24:48 +03:00
|
|
|
'branch': 'branches/the_branch',
|
|
|
|
'rev': 5,
|
|
|
|
})
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(actual, expected)
|
2008-12-12 05:24:48 +03:00
|
|
|
hg.update(self.repo, 'default')
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.info(u, self.repo)
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2008-12-12 05:24:48 +03:00
|
|
|
expected = (expected_info_output %
|
|
|
|
{'date': '2008-10-08 01:39:29 +0000 (Wed, 08 Oct 2008)',
|
2012-04-19 20:29:28 +04:00
|
|
|
'repourl': repourl(repo_path),
|
2008-12-12 05:24:48 +03:00
|
|
|
'branch': 'trunk',
|
|
|
|
'rev': 6,
|
|
|
|
})
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(actual, expected)
|
2009-12-11 00:04:57 +03:00
|
|
|
hg.update(self.repo, 'default')
|
|
|
|
u.pushbuffer()
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.info(u, self.repo, rev=3)
|
2009-12-11 00:04:57 +03:00
|
|
|
actual = u.popbuffer()
|
|
|
|
expected = (expected_info_output %
|
|
|
|
{'date': '2008-10-08 01:39:05 +0000 (Wed, 08 Oct 2008)',
|
2012-04-19 20:29:28 +04:00
|
|
|
'repourl': repourl(repo_path),
|
2009-12-11 00:04:57 +03:00
|
|
|
'branch': 'branches/the_branch',
|
|
|
|
'rev': 5,
|
|
|
|
})
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(actual, expected)
|
2012-08-02 00:08:56 +04:00
|
|
|
destpath = self.wc_path + '_clone'
|
2018-01-17 14:23:44 +03:00
|
|
|
test_hgsubversion_util.hgclone(u, self.repo, destpath)
|
2012-08-02 00:08:56 +04:00
|
|
|
repo2 = hg.repository(u, destpath)
|
|
|
|
repo2.ui.setconfig('paths', 'default-push',
|
|
|
|
self.repo.ui.config('paths', 'default'))
|
|
|
|
hg.update(repo2, 'default')
|
|
|
|
svncommands.rebuildmeta(u, repo2, [])
|
|
|
|
u.pushbuffer()
|
|
|
|
svncommands.info(u, repo2)
|
|
|
|
actual = u.popbuffer()
|
|
|
|
expected = (expected_info_output %
|
|
|
|
{'date': '2008-10-08 01:39:29 +0000 (Wed, 08 Oct 2008)',
|
|
|
|
'repourl': repourl(repo_path),
|
|
|
|
'branch': 'trunk',
|
|
|
|
'rev': 6,
|
|
|
|
})
|
|
|
|
self.assertMultiLineEqual(actual, expected)
|
2008-12-12 05:24:48 +03:00
|
|
|
|
2013-08-27 03:40:31 +04:00
|
|
|
def test_info_output_custom(self):
|
|
|
|
self.test_info_output(custom=True)
|
|
|
|
|
|
|
|
def test_info_single(self, custom=False):
|
|
|
|
if custom:
|
|
|
|
subdir=None
|
|
|
|
config = {
|
|
|
|
'hgsubversionbranch.default': 'trunk/'
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
subdir='trunk'
|
|
|
|
config = {}
|
|
|
|
repo, repo_path = self.load_and_fetch('two_heads.svndump',
|
|
|
|
subdir=subdir,
|
|
|
|
config=config)
|
2010-02-06 19:57:58 +03:00
|
|
|
hg.update(self.repo, 'tip')
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2010-02-06 19:57:58 +03:00
|
|
|
u.pushbuffer()
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.info(u, self.repo)
|
2010-02-06 19:57:58 +03:00
|
|
|
actual = u.popbuffer()
|
|
|
|
expected = (expected_info_output %
|
|
|
|
{'date': '2008-10-08 01:39:29 +0000 (Wed, 08 Oct 2008)',
|
2012-04-19 20:29:28 +04:00
|
|
|
'repourl': repourl(repo_path),
|
2010-02-06 19:57:58 +03:00
|
|
|
'branch': 'trunk',
|
|
|
|
'rev': 6,
|
|
|
|
})
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(expected, actual)
|
2010-02-06 19:57:58 +03:00
|
|
|
|
2013-08-27 03:40:31 +04:00
|
|
|
def test_info_custom_single(self):
|
|
|
|
self.test_info_single(custom=True)
|
|
|
|
|
2010-11-18 16:03:26 +03:00
|
|
|
def test_missing_metadata(self):
|
|
|
|
self._load_fixture_and_fetch('two_heads.svndump')
|
2017-05-10 01:20:16 +03:00
|
|
|
os.remove(self.repo.vfs.join('svn/branch_info'))
|
2012-12-01 21:52:00 +04:00
|
|
|
svncommands.updatemeta(self.ui(), self.repo, [])
|
|
|
|
|
2018-01-17 14:23:44 +03:00
|
|
|
test_hgsubversion_util.rmtree(self.repo.vfs.join('svn'))
|
2010-11-18 16:03:26 +03:00
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
self.repo.svnmeta)
|
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
svncommands.info,
|
|
|
|
self.ui(), repo=self.repo, args=[])
|
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
svncommands.genignore,
|
|
|
|
self.ui(), repo=self.repo, args=[])
|
|
|
|
|
2017-05-10 01:20:16 +03:00
|
|
|
os.remove(self.repo.vfs.join('hgrc'))
|
2010-11-18 16:03:26 +03:00
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
self.repo.svnmeta)
|
2010-11-11 23:32:22 +03:00
|
|
|
self.assertRaises(hgutil.Abort,
|
2010-11-18 16:03:26 +03:00
|
|
|
svncommands.info,
|
|
|
|
self.ui(), repo=self.repo, args=[])
|
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
svncommands.genignore,
|
|
|
|
self.ui(), repo=self.repo, args=[])
|
|
|
|
|
2010-11-11 23:32:22 +03:00
|
|
|
self.assertRaises(hgutil.Abort,
|
2010-11-18 16:03:26 +03:00
|
|
|
svncommands.rebuildmeta,
|
|
|
|
self.ui(), repo=self.repo, args=[])
|
2010-11-11 23:32:22 +03:00
|
|
|
|
2008-12-24 20:12:23 +03:00
|
|
|
def test_parent_output(self):
|
|
|
|
self._load_fixture_and_fetch('two_heads.svndump')
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2011-10-12 11:35:25 +04:00
|
|
|
parents = (self.repo['the_branch'].node(), revlog.nullid,)
|
2008-12-24 20:12:23 +03:00
|
|
|
def filectxfn(repo, memctx, path):
|
2014-06-03 04:55:32 +04:00
|
|
|
return compathacks.makememfilectx(repo,
|
2017-12-20 01:29:55 +03:00
|
|
|
memctx=memctx,
|
2014-06-03 04:55:32 +04:00
|
|
|
path=path,
|
|
|
|
data='added',
|
|
|
|
islink=False,
|
|
|
|
isexec=False,
|
|
|
|
copied=False)
|
2017-10-29 04:34:52 +03:00
|
|
|
lr = self.repo
|
|
|
|
ctx = context.memctx(lr,
|
2008-12-24 20:12:23 +03:00
|
|
|
parents,
|
|
|
|
'automated test',
|
|
|
|
['added_bogus_file', 'other_added_file', ],
|
|
|
|
filectxfn,
|
|
|
|
'testy',
|
|
|
|
'2008-12-21 16:32:00 -0500',
|
|
|
|
{'branch': 'localbranch', })
|
2017-10-29 04:34:52 +03:00
|
|
|
new = lr.commitctx(ctx)
|
2008-12-24 20:12:23 +03:00
|
|
|
hg.update(self.repo, new)
|
2009-06-10 14:06:31 +04:00
|
|
|
wrappers.parents(lambda x, y: None, u, self.repo, svn=True)
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2010-02-26 16:50:22 +03:00
|
|
|
self.assertEqual(actual, '3:4e256962fc5d\n')
|
2009-04-11 03:47:18 +04:00
|
|
|
|
2008-12-24 20:12:23 +03:00
|
|
|
hg.update(self.repo, 'default')
|
2010-02-26 16:50:22 +03:00
|
|
|
|
2009-04-11 03:47:18 +04:00
|
|
|
# Make sure styles work
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2009-06-10 14:06:31 +04:00
|
|
|
wrappers.parents(lambda x, y: None, u, self.repo, svn=True, style='compact')
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2010-02-26 16:50:22 +03:00
|
|
|
self.assertEqual(actual, '4:1083037b18d8\n')
|
|
|
|
|
2009-04-11 03:47:18 +04:00
|
|
|
# custom templates too
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2009-06-10 14:06:31 +04:00
|
|
|
wrappers.parents(lambda x, y: None, u, self.repo, svn=True, template='{node}\n')
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
|
|
|
self.assertEqual(actual, '1083037b18d85cd84fa211c5adbaeff0fea2cd9f\n')
|
2009-04-11 03:47:18 +04:00
|
|
|
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2009-06-10 14:06:31 +04:00
|
|
|
wrappers.parents(lambda x, y: None, u, self.repo, svn=True)
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2010-02-26 16:50:22 +03:00
|
|
|
self.assertEqual(actual, '4:1083037b18d8\n')
|
2008-12-24 20:12:23 +03:00
|
|
|
|
|
|
|
def test_outgoing_output(self):
|
2012-04-19 20:29:28 +04:00
|
|
|
repo, repo_path = self.load_and_fetch('two_heads.svndump')
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2011-10-12 11:35:25 +04:00
|
|
|
parents = (self.repo['the_branch'].node(), revlog.nullid,)
|
2008-12-24 20:12:23 +03:00
|
|
|
def filectxfn(repo, memctx, path):
|
2014-06-03 04:55:32 +04:00
|
|
|
return compathacks.makememfilectx(repo,
|
2017-12-20 01:29:55 +03:00
|
|
|
memctx=memctx,
|
2014-06-03 04:55:32 +04:00
|
|
|
path=path,
|
|
|
|
data='added',
|
|
|
|
islink=False,
|
|
|
|
isexec=False,
|
|
|
|
copied=False)
|
2017-10-29 04:34:52 +03:00
|
|
|
lr = self.repo
|
|
|
|
ctx = context.memctx(lr,
|
2008-12-24 20:12:23 +03:00
|
|
|
parents,
|
|
|
|
'automated test',
|
|
|
|
['added_bogus_file', 'other_added_file', ],
|
|
|
|
filectxfn,
|
|
|
|
'testy',
|
|
|
|
'2008-12-21 16:32:00 -0500',
|
|
|
|
{'branch': 'localbranch', })
|
2017-10-29 04:34:52 +03:00
|
|
|
new = lr.commitctx(ctx)
|
2008-12-24 20:12:23 +03:00
|
|
|
hg.update(self.repo, new)
|
2009-05-22 17:12:31 +04:00
|
|
|
u.pushbuffer()
|
2012-04-19 20:29:28 +04:00
|
|
|
commands.outgoing(u, self.repo, repourl(repo_path))
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2009-05-22 17:12:31 +04:00
|
|
|
self.assertTrue(node.hex(self.repo['localbranch'].node())[:8] in actual)
|
2010-02-26 16:50:22 +03:00
|
|
|
self.assertEqual(actual.strip(), '5:6de15430fa20')
|
2008-12-24 20:12:23 +03:00
|
|
|
hg.update(self.repo, 'default')
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2012-04-19 20:29:28 +04:00
|
|
|
commands.outgoing(u, self.repo, repourl(repo_path))
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2010-02-26 16:50:22 +03:00
|
|
|
self.assertEqual(actual, '')
|
2008-12-12 05:41:57 +03:00
|
|
|
|
2008-12-23 06:20:10 +03:00
|
|
|
def test_rebase(self):
|
|
|
|
self._load_fixture_and_fetch('two_revs.svndump')
|
2011-10-12 11:35:25 +04:00
|
|
|
parents = (self.repo[0].node(), revlog.nullid,)
|
2008-12-23 06:20:10 +03:00
|
|
|
def filectxfn(repo, memctx, path):
|
2014-06-03 04:55:32 +04:00
|
|
|
return compathacks.makememfilectx(repo,
|
2017-12-20 01:29:55 +03:00
|
|
|
memctx=memctx,
|
2014-06-03 04:55:32 +04:00
|
|
|
path=path,
|
|
|
|
data='added',
|
|
|
|
islink=False,
|
|
|
|
isexec=False,
|
|
|
|
copied=False)
|
2017-10-29 04:34:52 +03:00
|
|
|
lr = self.repo
|
|
|
|
ctx = context.memctx(lr,
|
2008-12-23 06:20:10 +03:00
|
|
|
parents,
|
|
|
|
'automated test',
|
|
|
|
['added_bogus_file', 'other_added_file', ],
|
|
|
|
filectxfn,
|
|
|
|
'testy',
|
|
|
|
'2008-12-21 16:32:00 -0500',
|
|
|
|
{'branch': 'localbranch', })
|
2017-10-29 04:34:52 +03:00
|
|
|
lr.commitctx(ctx)
|
2008-12-23 06:20:10 +03:00
|
|
|
self.assertEqual(self.repo['tip'].branch(), 'localbranch')
|
|
|
|
beforerebasehash = self.repo['tip'].node()
|
|
|
|
hg.update(self.repo, 'tip')
|
2010-02-26 16:50:22 +03:00
|
|
|
wrappers.rebase(rebase.rebase, self.ui(), self.repo, svn=True)
|
2008-12-23 06:20:10 +03:00
|
|
|
self.assertEqual(self.repo['tip'].branch(), 'localbranch')
|
|
|
|
self.assertEqual(self.repo['tip'].parents()[0].parents()[0], self.repo[0])
|
|
|
|
self.assertNotEqual(beforerebasehash, self.repo['tip'].node())
|
|
|
|
|
2013-08-27 03:40:31 +04:00
|
|
|
def test_genignore(self, layout='auto'):
|
2009-05-15 21:18:43 +04:00
|
|
|
""" Test generation of .hgignore file. """
|
2013-08-27 03:40:31 +04:00
|
|
|
if layout == 'custom':
|
|
|
|
config = {
|
|
|
|
'hgsubversionbranch.default': 'trunk',
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
config = {}
|
|
|
|
repo = self._load_fixture_and_fetch('ignores.svndump',
|
|
|
|
layout=layout,
|
|
|
|
noupdate=False,
|
|
|
|
config=config)
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2012-04-19 20:29:25 +04:00
|
|
|
svncommands.genignore(u, repo, self.wc_path)
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(open(os.path.join(self.wc_path, '.hgignore')).read(),
|
2009-02-24 23:30:21 +03:00
|
|
|
'.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n')
|
|
|
|
|
2010-02-06 20:13:55 +03:00
|
|
|
def test_genignore_single(self):
|
2013-08-27 03:40:31 +04:00
|
|
|
self.test_genignore(layout='single')
|
|
|
|
|
|
|
|
def test_genignore_custom(self):
|
|
|
|
self.test_genignore(layout='custom')
|
2010-02-06 20:13:55 +03:00
|
|
|
|
2009-04-08 06:15:22 +04:00
|
|
|
def test_list_authors(self):
|
2012-04-19 20:29:28 +04:00
|
|
|
repo_path = self.load_svndump('replace_trunk_with_branch.svndump')
|
2010-02-26 16:50:22 +03:00
|
|
|
u = self.ui()
|
2009-05-15 21:18:43 +04:00
|
|
|
u.pushbuffer()
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.listauthors(u,
|
2018-01-17 14:23:44 +03:00
|
|
|
args=[test_hgsubversion_util.fileurl(repo_path)],
|
2009-04-11 01:09:59 +04:00
|
|
|
authors=None)
|
2009-05-15 21:18:43 +04:00
|
|
|
actual = u.popbuffer()
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(actual, 'Augie\nevil\n')
|
2009-04-08 06:15:22 +04:00
|
|
|
|
|
|
|
def test_list_authors_map(self):
|
2012-04-19 20:29:28 +04:00
|
|
|
repo_path = self.load_svndump('replace_trunk_with_branch.svndump')
|
|
|
|
author_path = os.path.join(repo_path, 'authors')
|
2010-02-26 17:00:15 +03:00
|
|
|
svncommands.listauthors(self.ui(),
|
2018-01-17 14:23:44 +03:00
|
|
|
args=[test_hgsubversion_util.fileurl(repo_path)],
|
2012-04-19 20:29:28 +04:00
|
|
|
authors=author_path)
|
2010-11-11 23:30:31 +03:00
|
|
|
self.assertMultiLineEqual(open(author_path).read(), 'Augie=\nevil=\n')
|
2009-04-11 03:47:18 +04:00
|
|
|
|
2013-08-10 01:46:02 +04:00
|
|
|
def test_svnverify(self):
|
2012-04-21 13:36:23 +04:00
|
|
|
repo, repo_path = self.load_and_fetch('binaryfiles.svndump',
|
2013-08-10 01:46:02 +04:00
|
|
|
noupdate=False)
|
|
|
|
ret = verify.verify(self.ui(), repo, [], rev=1)
|
2012-04-21 13:36:23 +04:00
|
|
|
self.assertEqual(0, ret)
|
|
|
|
repo_path = self.load_svndump('binaryfiles-broken.svndump')
|
|
|
|
u = self.ui()
|
|
|
|
u.pushbuffer()
|
2018-01-17 14:23:44 +03:00
|
|
|
ret = verify.verify(u, repo, [test_hgsubversion_util.fileurl(repo_path)],
|
2013-08-10 01:46:02 +04:00
|
|
|
rev=1)
|
2012-04-21 13:36:23 +04:00
|
|
|
output = u.popbuffer()
|
|
|
|
self.assertEqual(1, ret)
|
|
|
|
output = re.sub(r'file://\S+', 'file://', output)
|
2012-05-12 13:58:19 +04:00
|
|
|
self.assertMultiLineEqual("""\
|
2012-04-21 13:36:23 +04:00
|
|
|
verifying d51f46a715a1 against file://
|
2011-12-14 03:07:58 +04:00
|
|
|
difference in: binary2
|
|
|
|
unexpected file: binary1
|
|
|
|
missing file: binary3
|
2012-04-21 13:36:23 +04:00
|
|
|
""", output)
|
2008-12-24 02:45:34 +03:00
|
|
|
|
2013-08-10 01:46:02 +04:00
|
|
|
def test_corruption(self):
|
2011-12-14 03:07:58 +04:00
|
|
|
SUCCESS = 0
|
|
|
|
FAILURE = 1
|
|
|
|
|
|
|
|
repo, repo_path = self.load_and_fetch('correct.svndump', layout='single',
|
2013-08-10 01:46:02 +04:00
|
|
|
subdir='')
|
2011-12-14 03:07:58 +04:00
|
|
|
|
|
|
|
ui = self.ui()
|
|
|
|
|
2013-08-10 01:46:02 +04:00
|
|
|
self.assertEqual(SUCCESS, verify.verify(ui, self.repo, rev='tip'))
|
2011-12-14 03:07:58 +04:00
|
|
|
|
2018-01-17 14:23:44 +03:00
|
|
|
corrupt_source = test_hgsubversion_util.fileurl(self.load_svndump('corrupt.svndump'))
|
2011-12-14 03:07:58 +04:00
|
|
|
|
|
|
|
repo.ui.setconfig('paths', 'default', corrupt_source)
|
|
|
|
|
|
|
|
ui.pushbuffer()
|
2012-05-13 17:36:45 +04:00
|
|
|
code = verify.verify(ui, repo, rev='tip')
|
2011-12-14 03:07:58 +04:00
|
|
|
actual = ui.popbuffer()
|
|
|
|
|
|
|
|
actual = actual.replace(corrupt_source, '$REPO')
|
|
|
|
actual = set(actual.splitlines())
|
|
|
|
|
|
|
|
expected = set([
|
|
|
|
'verifying 78e965230a13 against $REPO@1',
|
|
|
|
'missing file: missing-file',
|
|
|
|
'wrong flags for: executable-file',
|
|
|
|
'wrong flags for: symlink',
|
|
|
|
'wrong flags for: regular-file',
|
|
|
|
'difference in: another-regular-file',
|
|
|
|
'difference in: regular-file',
|
|
|
|
'unexpected file: empty-file',
|
|
|
|
])
|
|
|
|
|
|
|
|
self.assertEqual((FAILURE, expected), (code, actual))
|
|
|
|
|
2012-06-26 11:23:37 +04:00
|
|
|
def test_svnrebuildmeta(self):
|
|
|
|
otherpath = self.load_svndump('binaryfiles-broken.svndump')
|
2018-01-17 14:23:44 +03:00
|
|
|
otherurl = test_hgsubversion_util.fileurl(otherpath)
|
2012-06-26 11:23:37 +04:00
|
|
|
self.load_and_fetch('replace_trunk_with_branch.svndump')
|
|
|
|
# rebuildmeta with original repo
|
|
|
|
svncommands.rebuildmeta(self.ui(), repo=self.repo, args=[])
|
|
|
|
# rebuildmeta with unrelated repo
|
|
|
|
self.assertRaises(hgutil.Abort,
|
|
|
|
svncommands.rebuildmeta,
|
|
|
|
self.ui(), repo=self.repo, args=[otherurl])
|
|
|
|
# rebuildmeta --unsafe-skip-uuid-check with unrelated repo
|
|
|
|
svncommands.rebuildmeta(self.ui(), repo=self.repo, args=[otherurl],
|
|
|
|
unsafe_skip_uuid_check=True)
|
2018-01-17 14:23:44 +03:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import silenttestrunner
|
|
|
|
silenttestrunner.main(__name__)
|
|
|
|
|