Mercurial > hgsubversion
view tests/test_fetch_command_regexes.py @ 1365:89997a5fc181 stable 1.8.4
stupid: self-disable if svn bindings are too new to work with stupid mode
Subversion 1.9 enhanced the diff format slightly in a way that we
can't parse. We're collectively weary in hgsubversion of parsing diffs
to emulate replay given that ra_replay was new in Subversion 1.5,
which is now 7.5 years old. Rather than try to adapt to the diff
format changes, we'll disable stupid mode for 1.9 bindings and see if
anyone actually bothers to email the list and tell us they saw the
message. I figure if we don't see anything by mid 2016 or so we can
rip out stupid mode entirely.
Disable all tests that use stupid mode when 1.9 is in play. This
should actually be a nice runtime win on the testsuite since we'll be
running many hundreds fewer tests overall.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 31 Dec 2015 12:06:58 -0500 |
parents | d741f536f23a |
children |
line wrap: on
line source
import unittest import test_util from hgsubversion import stupid two_empties = """Index: __init__.py =================================================================== Index: bar/__init__.py =================================================================== Index: bar/test_muhaha.py =================================================================== --- bar/test_muhaha.py (revision 0) +++ bar/test_muhaha.py (revision 1) @@ -0,0 +1,2 @@ + +blah blah blah, I'm a fake patch \ No newline at end of file """ binary_delta = """Index: trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures_fixtures.pyc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures_fixtures.pyc ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures.rst =================================================================== """ special_delta = """Index: delta =================================================================== --- delta(revision 0) +++ delta(revision 9) @@ -0,0 +1 @@ +link alpha \ No newline at end of file Property changes on: delta ___________________________________________________________________ Name: svn:special + * """ class RegexTests(unittest.TestCase): def test_empty_file_re(self): changed = stupid.parsediff(two_empties) self.assertEqual(3, len(changed)) self.assertEqual('__init__.py', changed[0].name) self.assert_(changed[0].isempty()) self.assertEqual('bar/__init__.py', changed[1].name) self.assert_(changed[1].isempty()) self.assertEqual('bar/test_muhaha.py', changed[2].name) self.assert_(not changed[2].isempty()) def test_any_matches_just_one(self): pat = '''Index: trunk/django/contrib/admin/urls/__init__.py =================================================================== ''' changed = stupid.parsediff(pat) self.assertEqual(['trunk/django/contrib/admin/urls/__init__.py'], [f.name for f in changed]) def test_special_re(self): changed = stupid.parsediff(special_delta) self.assertEqual(1, len(changed)) self.assert_(changed[0].symlink) def test_any_file_re(self): changed = stupid.parsediff(two_empties) self.assertEqual(['__init__.py', 'bar/__init__.py', 'bar/test_muhaha.py'], [f.name for f in changed]) def test_binary_file_re(self): changed = stupid.parsediff(binary_delta) binaries = [f.name for f in changed if f.binary] self.assertEqual(['trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures_fixtures.pyc'], binaries) def test_diff16(self): data = """Index: d3/d =================================================================== --- d3/d (revision 0) +++ d3/d (revision 6) @@ -0,0 +1 @@ +d Property changes on: d3 ___________________________________________________________________ Added: svn:externals + ^/trunk/common/ext ext3 Property changes on: . ___________________________________________________________________ Added: svn:mergeinfo Merged /branches/branch:r4-5 """ changed = stupid.parsediff(data) self.assertEqual(['d3/d', 'd3', '.'], [f.name for f in changed]) data = """Property changes on: empty1 ___________________________________________________________________ Deleted: svn:executable - * Property changes on: empty2 ___________________________________________________________________ Added: svn:executable + * Property changes on: binary1 ___________________________________________________________________ Deleted: svn:executable - * Property changes on: text1 ___________________________________________________________________ Deleted: svn:executable - * Property changes on: binary2 ___________________________________________________________________ Added: svn:executable + * Property changes on: text2 ___________________________________________________________________ Added: svn:executable + * """ changed = stupid.parsediff(data) self.assertEqual(['empty1', 'empty2', 'binary1', 'text1', 'binary2', 'text2'], [f.name for f in changed])