38
38
from bzrlib.plugins.svn.mapping import (
39
39
estimate_bzr_ancestors,
41
generate_revision_metadata,
41
generate_revision_metadata,
42
42
get_roundtrip_ancestor_revids,
43
43
is_bzr_revision_fileprops,
44
44
is_bzr_revision_revprops,
46
46
parse_merge_property,
47
parse_revision_metadata,
47
parse_revision_metadata,
48
48
parse_revid_property,
66
66
class MetadataMarshallerTests(TestCase):
67
68
def test_generate_revision_metadata_none(self):
69
70
generate_revision_metadata(None, None, None, None))
71
72
def test_generate_revision_metadata_committer(self):
72
self.assertEquals("committer: bla\n",
73
self.assertEquals("committer: bla\n",
73
74
generate_revision_metadata(None, None, "bla", None))
75
76
def test_generate_revision_metadata_timestamp(self):
76
self.assertEquals("timestamp: 2005-06-30 17:38:52.350850105 +0000\n",
77
generate_revision_metadata(1120153132.350850105, 0,
77
self.assertEquals("timestamp: 2005-06-30 17:38:52.350850105 +0000\n",
78
generate_revision_metadata(1120153132.350850105, 0,
80
81
def test_generate_revision_metadata_properties(self):
81
self.assertEquals("properties: \n" +
82
self.assertEquals("properties: \n" +
82
83
"\tpropbla: bloe\n" +
83
84
"\tpropfoo: bla\n",
84
85
generate_revision_metadata(None, None,
85
86
None, {"propbla": "bloe", "propfoo": "bla"}))
87
88
def test_generate_revision_metadata_properties_newline(self):
88
self.assertEquals("properties: \n" +
89
self.assertEquals("properties: \n" +
89
90
"\tpropbla: bloe\n" +
90
91
"\tpropbla: bla\n",
91
92
generate_revision_metadata(None, None,
119
120
def test_parse_revision_metadata_properties(self):
120
121
rev = Revision('someid')
121
parse_revision_metadata("properties: \n" +
122
parse_revision_metadata("properties: \n" +
123
124
"\tha: ha\n", rev)
124
125
self.assertEquals({"foo": "bar", "ha": "ha"}, rev.properties)
126
127
def test_parse_revision_metadata_properties_newline(self):
127
128
rev = Revision('someid')
128
parse_revision_metadata("properties: \n" +
129
parse_revision_metadata("properties: \n" +
130
131
"\tfoo: bar2\n" +
131
132
"\tha: ha\n", rev)
132
133
self.assertEquals({"foo": "bar\nbar2", "ha": "ha"}, rev.properties)
134
135
def test_parse_revision_metadata_no_colon(self):
135
136
rev = Revision('someid')
136
self.assertRaises(InvalidPropertyValue,
137
self.assertRaises(InvalidPropertyValue,
137
138
lambda: parse_revision_metadata("bla", rev))
139
140
def test_parse_revision_metadata_specialchar(self):
153
154
self.assertEquals((42, "bloe bla"), parse_revid_property("42 bloe bla"))
155
156
def test_parse_revid_property_invalid(self):
156
self.assertRaises(InvalidPropertyValue,
157
self.assertRaises(InvalidPropertyValue,
157
158
lambda: parse_revid_property("blabla"))
159
160
def test_parse_revid_property_empty_revid(self):
160
self.assertRaises(InvalidPropertyValue,
161
self.assertRaises(InvalidPropertyValue,
161
162
lambda: parse_revid_property("2 "))
163
164
def test_parse_revid_property_newline(self):
164
self.assertRaises(InvalidPropertyValue,
165
self.assertRaises(InvalidPropertyValue,
165
166
lambda: parse_revid_property("foo\nbar"))
199
200
class ParseRevisionIdTests(TestCase):
201
202
def test_v4(self):
202
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv4()),
203
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv4()),
203
204
mapping_registry.parse_revision_id("svn-v4:uuid:trunk:1"))
205
206
def test_v3(self):
206
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
207
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
207
208
mapping_registry.parse_revision_id("svn-v3-trunk0:uuid:trunk:1"))
209
210
def test_v3_undefined(self):
210
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
211
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
211
212
mapping_registry.parse_revision_id("svn-v3-undefined:uuid:trunk:1"))
213
214
def test_v2(self):
214
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv2(TrunkLayout())),
215
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv2(TrunkLayout())),
215
216
mapping_registry.parse_revision_id("svn-v2:1@uuid-trunk"))
217
218
def test_v1(self):
218
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv1(TrunkLayout())),
219
self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv1(TrunkLayout())),
219
220
mapping_registry.parse_revision_id("svn-v1:1@uuid-trunk"))
221
222
def test_except(self):
222
self.assertRaises(KeyError,
223
self.assertRaises(KeyError,
223
224
mapping_registry.parse_revision_id, "svn-v0:1@uuid-trunk")
225
226
def test_except_nonsvn(self):
226
self.assertRaises(InvalidRevisionId,
227
self.assertRaises(InvalidRevisionId,
227
228
mapping_registry.parse_revision_id, "blah")
230
231
class EscapeTest(TestCase):
231
def test_escape_svn_path_none(self):
233
def test_escape_svn_path_none(self):
232
234
self.assertEqual("", escape_svn_path(""))
234
236
def test_escape_svn_path_simple(self):
293
295
class RoundTripAncestorRevids(TestCase):
295
297
def test_none(self):
296
298
self.assertEquals([], list(get_roundtrip_ancestor_revids({})))
298
300
def test_simple(self):
299
self.assertEquals([("arevid", 42, "v42-scheme")],
301
self.assertEquals([("arevid", 42, "v42-scheme")],
300
302
list(get_roundtrip_ancestor_revids({mapping.SVN_PROP_BZR_REVISION_ID+"v42-scheme": "42 arevid\n"})))
302
304
def test_multiple(self):
303
self.assertEquals(set([("arevid", 42, "v42-scheme"), ("brevid", 50, "v90-ll")]),
305
self.assertEquals(set([("arevid", 42, "v42-scheme"), ("brevid", 50, "v90-ll")]),
304
306
set(get_roundtrip_ancestor_revids({
305
307
mapping.SVN_PROP_BZR_REVISION_ID+"v42-scheme": "42 arevid\n",
306
308
mapping.SVN_PROP_BZR_REVISION_ID+"v90-ll": "50 brevid\n",
313
315
def test_import_revision_svnprops(self):
314
316
rev = Revision(None)
315
mapping.parse_svn_revprops({"svn:log": "A log msg",
316
"svn:author": "Somebody",
317
"svn:date": "2008-11-03T09:33:00.716938Z"}, rev)
317
revprops = {"svn:log": "A log msg", "svn:author": "Somebody",
318
"svn:date": "2008-11-03T09:33:00.716938Z"}
319
mapping.parse_svn_revprops(revprops, rev)
318
320
self.assertEquals("Somebody", rev.committer)
319
321
self.assertEquals("A log msg", rev.message)
320
322
self.assertEquals({}, rev.properties)
321
self.assertEquals(1225701180.716938, rev.timestamp)
322
323
self.assertEquals(0.0, rev.timezone)
324
self.assertEquals(1225704780.716938, rev.timestamp,
325
"parsing %s" % revprops["svn:date"])