Augie Fackler | 12 May 2012 12:02

Re: [PATCH v3] fold test_startrev and test_verify into a new test; test_verify_and_startrev

queued

On May 12, 2012, at 11:14 AM, Dan Villiom Podlaski Christiansen wrote:

> # HG changeset patch
> # User Dan Villiom Podlaski Christiansen  <danchr@...>
> # Date 1336813977 -7200
> # Node ID d3ff5807f1bd12c0d233a9873aa5243e871a39b2
> # Parent  99a15c6a283c951e7a99008b74a9098736a94379
> fold test_startrev and test_verify into a new test; test_verify_and_startrev
> 
> diff --git a/tests/comprehensive/test_verify.py b/tests/comprehensive/test_verify_and_startrev.py
> rename from tests/comprehensive/test_verify.py
> rename to tests/comprehensive/test_verify_and_startrev.py
> --- a/tests/comprehensive/test_verify.py
> +++ b/tests/comprehensive/test_verify_and_startrev.py
>  <at>  <at>  -16,14 +16,45  <at>  <at>  from mercurial import ui
> 
> from hgsubversion import svncommands
> 
> +# these fixtures contain no files at HEAD and would result in empty clones
> +_skipshallow = set([
> +    'binaryfiles.svndump',
> +    'binaryfiles-broken.svndump',
> +    'emptyrepo.svndump',
> +])
> +
> def _do_case(self, name, stupid, layout):
>     subdir = test_util.subdir.get(name, '')
> -    repo = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid, layout=layout)
> +    repo, svnpath = self.load_and_fetch(name, subdir=subdir, stupid=stupid,
> +                                        layout=layout)
>     assert len(self.repo) > 0
>     for i in repo:
>         ctx = repo[i]
>         self.assertEqual(svncommands.verify(repo.ui, repo, rev=ctx.node()), 0)
> 
> +    # check a startrev clone
> +    if layout == 'single' and name not in _skipshallow:
> +        self.wc_path += '_shallow'
> +        shallowrepo = self.fetch(svnpath, subdir=subdir, stupid=stupid,
> +                                 layout='single', startrev='HEAD')
> +
> +        self.assertEqual(len(shallowrepo), 1,
> +                         "shallow clone should have just one revision, not %d"
> +                         % len(shallowrepo))
> +
> +        fulltip = repo['tip']
> +        shallowtip = shallowrepo['tip']
> +
> +        self.assertEqual(0, svncommands.verify(repo.ui, shallowrepo,
> +                                               rev=shallowtip.node()))
> +
> +        # viewing diff's of lists of files is easier on the eyes
> +        self.assertMultiLineEqual('\n'.join(fulltip), '\n'.join(shallowtip))
> +
> +        for f in fulltip:
> +            self.assertMultiLineEqual(fulltip[f].data(), shallowtip[f].data())
> +
> +
> def buildmethod(case, name, stupid, layout):
>     m = lambda self: self._do_case(case, stupid, layout)
>     m.__name__ = name
> diff --git a/tests/run.py b/tests/run.py
> --- a/tests/run.py
> +++ b/tests/run.py
>  <at>  <at>  -25,7 +25,6  <at>  <at>  def tests():
>     import test_push_eol
>     import test_rebuildmeta
>     import test_single_dir_clone
> -    import test_startrev
>     import test_svnwrap
>     import test_tags
>     import test_template_keywords
>  <at>  <at>  -37,7 +36,7  <at>  <at>  def tests():
>     sys.path.append(os.path.join(os.path.dirname(__file__), 'comprehensive'))
> 
>     import test_stupid_pull
> -    import test_verify
> +    import test_verify_and_startrev
> 
>     return locals()
> 
> diff --git a/tests/test_startrev.py b/tests/test_startrev.py
> deleted file mode 100644
> --- a/tests/test_startrev.py
> +++ /dev/null
>  <at>  <at>  -1,71 +0,0  <at>  <at> 
> -import test_util
> -
> -import os
> -import unittest
> -
> -def _do_case(self, name, subdir, stupid):
> -    wc_base = self.wc_path
> -    self.wc_path = wc_base + '_full'
> -    headclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid,
> -                                             layout='single', startrev='HEAD')
> -    self.wc_path = wc_base + '_head'
> -    fullclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid,
> -                                             layout='single')
> -
> -    fulltip = fullclone['tip']
> -    headtip = headclone['tip']
> -    # viewing diff's of lists of files is easier on the eyes
> -    self.assertMultiLineEqual('\n'.join(fulltip), '\n'.join(headtip))
> -
> -    for f in fulltip:
> -        self.assertMultiLineEqual(fulltip[f].data(), headtip[f].data())
> -
> -    self.assertNotEqual(len(fullclone), 0, "full clone shouldn't be empty")
> -    self.assertEqual(len(headclone), 1,
> -                     "shallow clone should have just one revision, not %d"
> -                     % len(headclone))
> -
> -def buildmethod(case, name, subdir, stupid):
> -    m = lambda self: self._do_case(case, subdir.strip('/'), stupid)
> -    m.__name__ = name
> -    m.__doc__ = ('Test clone with startrev on %s%s with %s replay.' %
> -                 (case, subdir, (stupid and 'stupid') or 'real'))
> -    return m
> -
> -
> -# these fixtures contain no files at HEAD and would result in empty clones
> -nofiles = set([
> -    'binaryfiles.svndump',
> -    'binaryfiles-broken.svndump',
> -    'emptyrepo.svndump',
> -])
> -
> -# these fixtures contain no files in trunk at HEAD and would result in an empty
> -# shallow clone if cloning trunk, so we use another subdirectory
> -subdirmap = {
> -    'commit-to-tag.svndump': '/branches/magic',
> -    'pushexternals.svndump': '',
> -    'tag_name_same_as_branch.svndump': '/branches/magic',
> -}
> -
> -attrs = {'_do_case': _do_case,
> -         }
> -
> -for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]:
> -    if case in nofiles:
> -        continue
> -
> -    subdir = test_util.subdir.get(case, '') + subdirmap.get(case, '/trunk')
> -
> -    bname = 'test_' + case[:-len('.svndump')]
> -    attrs[bname] = buildmethod(case, bname, subdir, False)
> -    name = bname + '_stupid'
> -    attrs[name] = buildmethod(case, name, subdir, True)
> -
> -StartRevTests = type('StartRevTests', (test_util.TestBase,), attrs)
> -
> -
> -def suite():
> -    all_tests = [unittest.TestLoader().loadTestsFromTestCase(StartRevTests),
> -          ]
> -    return unittest.TestSuite(all_tests)
> diff --git a/tests/test_util.py b/tests/test_util.py
> --- a/tests/test_util.py
> +++ b/tests/test_util.py
>  <at>  <at>  -297,15 +297,13  <at>  <at>  class TestBase(unittest.TestCase):
>         proc.communicate()
>         return path
> 
> -    def load_and_fetch(self, fixture_name, subdir=None, stupid=False,
> -                       layout='auto', startrev=0, externals=None,
> -                       noupdate=True):
> +    def fetch(self, repo_path, subdir=None, stupid=False, layout='auto', startrev=0,
> +              externals=None, noupdate=True, dest=None):
>         if layout == 'single':
>             if subdir is None:
>                 subdir = 'trunk'
>         elif subdir is None:
>             subdir = ''
> -        repo_path = self.load_svndump(fixture_name)
>         projectpath = repo_path
>         if subdir:
>             projectpath += '/' + subdir
>  <at>  <at>  -326,7 +324,12  <at>  <at>  class TestBase(unittest.TestCase):
> 
>         dispatch(cmd)
> 
> -        return hg.repository(testui(), self.wc_path), repo_path
> +        return hg.repository(testui(), self.wc_path)
> +
> +    def load_and_fetch(self, fixture_name, *args, **opts):
> +        repo_path = self.load_svndump(fixture_name)
> +
> +        return self.fetch(repo_path, *args, **opts), repo_path
> 
>     def _load_fixture_and_fetch(self, *args, **kwargs):
>         repo, repo_path = self.load_and_fetch(*args, **kwargs)
> 
> -- 
> You received this message because you are subscribed to the Google Groups "hgsubversion" group.
> To post to this group, send email to hgsubversion@...
> To unsubscribe from this group, send email to hgsubversion+unsubscribe@...
> For more options, visit this group at http://groups.google.com/group/hgsubversion?hl=en.
> 

--

-- 
You received this message because you are subscribed to the Google Groups "hgsubversion" group.
To post to this group, send email to hgsubversion@...
To unsubscribe from this group, send email to hgsubversion+unsubscribe@...
For more options, visit this group at http://groups.google.com/group/hgsubversion?hl=en.


Gmane