47
47
class TestRevidConversionV1(tests.TestCase):
49
49
def test_simple_git_to_bzr_revision_id(self):
50
self.assertEqual("git-v1:"
51
"c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
50
self.assertEqual(b"git-v1:"
51
b"c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
52
52
BzrGitMappingv1().revision_id_foreign_to_bzr(
53
"c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))
53
b"c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))
55
55
def test_simple_bzr_to_git_revision_id(self):
56
self.assertEqual(("c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
56
self.assertEqual((b"c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
57
57
BzrGitMappingv1()),
58
58
BzrGitMappingv1().revision_id_bzr_to_foreign(
60
"c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))
60
b"c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))
62
62
def test_is_control_file(self):
63
63
mapping = BzrGitMappingv1()
69
69
def test_generate_file_id(self):
70
70
mapping = BzrGitMappingv1()
71
self.assertIsInstance(mapping.generate_file_id("la"), str)
72
self.assertIsInstance(mapping.generate_file_id(u"é"), str)
71
self.assertIsInstance(mapping.generate_file_id("la"), bytes)
72
self.assertIsInstance(mapping.generate_file_id(u"é"), bytes)
75
75
class FileidTests(tests.TestCase):
77
77
def test_escape_space(self):
78
self.assertEqual("bla_s", escape_file_id("bla "))
78
self.assertEqual(b"bla_s", escape_file_id(b"bla "))
80
80
def test_escape_control_l(self):
81
self.assertEqual("bla_c", escape_file_id("bla\x0c"))
81
self.assertEqual(b"bla_c", escape_file_id(b"bla\x0c"))
83
83
def test_unescape_control_l(self):
84
self.assertEqual("bla\x0c", unescape_file_id("bla_c"))
84
self.assertEqual(b"bla\x0c", unescape_file_id(b"bla_c"))
86
86
def test_escape_underscore(self):
87
self.assertEqual("bla__", escape_file_id("bla_"))
87
self.assertEqual(b"bla__", escape_file_id(b"bla_"))
89
89
def test_escape_underscore_space(self):
90
self.assertEqual("bla___s", escape_file_id("bla_ "))
90
self.assertEqual(b"bla___s", escape_file_id(b"bla_ "))
92
92
def test_unescape_underscore(self):
93
self.assertEqual("bla ", unescape_file_id("bla_s"))
93
self.assertEqual(b"bla ", unescape_file_id(b"bla_s"))
95
95
def test_unescape_underscore_space(self):
96
self.assertEqual("bla _", unescape_file_id("bla_s__"))
96
self.assertEqual(b"bla _", unescape_file_id(b"bla_s__"))
99
99
class TestImportCommit(tests.TestCase):
101
101
def test_commit(self):
103
c.tree = "cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
104
c.message = "Some message"
105
c.committer = "Committer"
103
c.tree = b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
104
c.message = b"Some message"
105
c.committer = b"Committer"
106
106
c.commit_time = 4
107
107
c.author_time = 5
108
108
c.commit_timezone = 60 * 5
109
109
c.author_timezone = 60 * 3
111
111
mapping = BzrGitMappingv1()
112
112
rev, roundtrip_revid, verifiers = mapping.import_commit(c,
113
113
mapping.revision_id_foreign_to_bzr)
114
114
self.assertEqual(None, roundtrip_revid)
115
115
self.assertEqual({}, verifiers)
116
self.assertEqual("Some message", rev.message)
117
self.assertEqual("Committer", rev.committer)
118
self.assertEqual("Author", rev.properties['author'])
116
self.assertEqual(u"Some message", rev.message)
117
self.assertEqual(u"Committer", rev.committer)
118
self.assertEqual(u"Author", rev.properties[u'author'])
119
119
self.assertEqual(300, rev.timezone)
120
120
self.assertEqual((), rev.parent_ids)
121
self.assertEqual("5", rev.properties['author-timestamp'])
122
self.assertEqual("180", rev.properties['author-timezone'])
123
self.assertEqual("git-v1:" + c.id, rev.revision_id)
121
self.assertEqual("5", rev.properties[u'author-timestamp'])
122
self.assertEqual("180", rev.properties[u'author-timezone'])
123
self.assertEqual(b"git-v1:" + c.id, rev.revision_id)
125
125
def test_explicit_encoding(self):
127
c.tree = "cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
128
c.message = "Some message"
129
c.committer = "Committer"
127
c.tree = b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
128
c.message = b"Some message"
129
c.committer = b"Committer"
130
130
c.commit_time = 4
131
131
c.author_time = 5
132
132
c.commit_timezone = 60 * 5
133
133
c.author_timezone = 60 * 3
134
134
c.author = u"Authér".encode("iso8859-1")
135
c.encoding = "iso8859-1"
135
c.encoding = b"iso8859-1"
136
136
mapping = BzrGitMappingv1()
137
137
rev, roundtrip_revid, verifiers = mapping.import_commit(c,
138
138
mapping.revision_id_foreign_to_bzr)
139
139
self.assertEqual(None, roundtrip_revid)
140
140
self.assertEqual({}, verifiers)
141
self.assertEqual(u"Authér", rev.properties['author'])
142
self.assertEqual("iso8859-1", rev.properties["git-explicit-encoding"])
143
self.assertTrue("git-implicit-encoding" not in rev.properties)
141
self.assertEqual(u"Authér", rev.properties[u'author'])
142
self.assertEqual("iso8859-1", rev.properties[u"git-explicit-encoding"])
143
self.assertTrue(u"git-implicit-encoding" not in rev.properties)
145
145
def test_implicit_encoding_fallback(self):
147
c.tree = "cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
148
c.message = "Some message"
149
c.committer = "Committer"
147
c.tree = b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
148
c.message = b"Some message"
149
c.committer = b"Committer"
150
150
c.commit_time = 4
151
151
c.author_time = 5
152
152
c.commit_timezone = 60 * 5
157
157
mapping.revision_id_foreign_to_bzr)
158
158
self.assertEqual(None, roundtrip_revid)
159
159
self.assertEqual({}, verifiers)
160
self.assertEqual(u"Authér", rev.properties['author'])
161
self.assertEqual("latin1", rev.properties["git-implicit-encoding"])
162
self.assertTrue("git-explicit-encoding" not in rev.properties)
160
self.assertEqual(u"Authér", rev.properties[u'author'])
161
self.assertEqual("latin1", rev.properties[u"git-implicit-encoding"])
162
self.assertTrue(u"git-explicit-encoding" not in rev.properties)
164
164
def test_implicit_encoding_utf8(self):
166
c.tree = "cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
167
c.message = "Some message"
168
c.committer = "Committer"
166
c.tree = b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
167
c.message = b"Some message"
168
c.committer = b"Committer"
169
169
c.commit_time = 4
170
170
c.author_time = 5
171
171
c.commit_timezone = 60 * 5
226
226
self._lookup_parent = self._parent_map.__getitem__
228
228
def assertRoundtripRevision(self, orig_rev):
229
commit = self.mapping.export_commit(orig_rev, "mysha",
230
self._lookup_parent, True, "testamentsha")
229
commit = self.mapping.export_commit(orig_rev, b"mysha",
230
self._lookup_parent, True, b"testamentsha")
231
231
rev, roundtrip_revid, verifiers = self.mapping.import_commit(
232
232
commit, self.mapping.revision_id_foreign_to_bzr)
233
233
self.assertEqual(rev.revision_id,
234
234
self.mapping.revision_id_foreign_to_bzr(commit.id))
235
235
if self.mapping.roundtripping:
236
self.assertEqual({"testament3-sha1": "testamentsha"} , verifiers)
236
self.assertEqual({"testament3-sha1": b"testamentsha"} , verifiers)
237
237
self.assertEqual(orig_rev.revision_id, roundtrip_revid)
238
238
self.assertEqual(orig_rev.properties, rev.properties)
239
239
self.assertEqual(orig_rev.committer, rev.committer)