diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_commands.py | 19 | ||||
-rw-r--r-- | tests/test_exporter.py | 35 |
2 files changed, 54 insertions, 0 deletions
diff --git a/tests/test_commands.py b/tests/test_commands.py index 282cfc3..5729660 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -80,6 +80,25 @@ class TestFastExport(ExternalBase): except AttributeError: # bzr < 2.4 self.failUnlessExists("br.fi") + def test_tag_rewriting(self): + tree = self.make_branch_and_tree("br") + tree.commit("pointless") + self.assertTrue(tree.branch.supports_tags()) + rev_id = tree.branch.dotted_revno_to_revision_id((1,)) + tree.branch.tags.set_tag("goodTag", rev_id) + tree.branch.tags.set_tag("bad Tag", rev_id) + + # first check --no-rewrite-tag-names + data = self.run_bzr("fast-export --plain --no-rewrite-tag-names br")[0] + self.assertNotEqual(-1, data.find("reset refs/tags/goodTag")) + self.assertEqual(data.find("reset refs/tags/"), data.rfind("reset refs/tags/")) + + # and now with --rewrite-tag-names + data = self.run_bzr("fast-export --plain --rewrite-tag-names br")[0] + self.assertNotEqual(-1, data.find("reset refs/tags/goodTag")) + # "bad Tag" should be exported as bad_Tag + self.assertNotEqual(-1, data.find("reset refs/tags/bad_Tag")) + simple_fast_import_stream = """commit refs/heads/master mark :1 diff --git a/tests/test_exporter.py b/tests/test_exporter.py index c2a8442..f1c9530 100644 --- a/tests/test_exporter.py +++ b/tests/test_exporter.py @@ -24,6 +24,7 @@ from bzrlib import tests from bzrlib.plugins.fastimport.exporter import ( _get_output_stream, check_ref_format, + sanitize_ref_name_for_git ) from bzrlib.plugins.fastimport.tests import ( @@ -79,11 +80,45 @@ class CheckRefFormatTests(tests.TestCase): def test_invalid(self): self.assertFalse(check_ref_format('foo')) + self.assertFalse(check_ref_format('foo/.bar')) self.assertFalse(check_ref_format('heads/foo/')) + self.assertFalse(check_ref_format('heads/foo.')) self.assertFalse(check_ref_format('./foo')) self.assertFalse(check_ref_format('.refs/foo')) self.assertFalse(check_ref_format('heads/foo..bar')) self.assertFalse(check_ref_format('heads/foo?bar')) self.assertFalse(check_ref_format('heads/foo.lock')) self.assertFalse(check_ref_format('heads/v@{ation')) + self.assertFalse(check_ref_format('heads/foo\\bar')) self.assertFalse(check_ref_format('heads/foo\bar')) + self.assertFalse(check_ref_format('heads/foo bar')) + self.assertFalse(check_ref_format('heads/foo\020bar')) + self.assertFalse(check_ref_format('heads/foo\177bar')) + + +class CheckRefnameRewriting(tests.TestCase): + """Tests for sanitize_ref_name_for_git function""" + + def test_passthrough_valid(self): + self.assertEqual(sanitize_ref_name_for_git('heads/foo'), 'heads/foo') + self.assertEqual(sanitize_ref_name_for_git('foo/bar/baz'), 'foo/bar/baz') + self.assertEqual(sanitize_ref_name_for_git('refs///heads/foo'), 'refs///heads/foo') + self.assertEqual(sanitize_ref_name_for_git('foo./bar'), 'foo./bar') + self.assertEqual(sanitize_ref_name_for_git('heads/foo@bar'), 'heads/foo@bar') + self.assertEqual(sanitize_ref_name_for_git('heads/fix.lock.error'), 'heads/fix.lock.error') + + def test_rewrite_invalid(self): + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('foo./bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo/'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo.'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('./foo'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('.refs/foo'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo..bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo?bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo.lock'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/v@{ation'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo\bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo\\bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo\020bar'))) + self.assertTrue(check_ref_format(sanitize_ref_name_for_git('heads/foo\177bar'))) |