175
175
self.assertRaises(
176
176
errors.PathNotChild, request.translate_client_path, b'bar/')
177
177
self.assertEqual('./baz', request.translate_client_path(b'foo/baz'))
178
e_acute = u'\N{LATIN SMALL LETTER E WITH ACUTE}'.encode('utf-8')
179
self.assertEqual('./' + urlutils.escape(e_acute),
180
request.translate_client_path(b'foo/' + e_acute))
178
e_acute = u'\N{LATIN SMALL LETTER E WITH ACUTE}'
179
self.assertEqual(u'./' + urlutils.escape(e_acute),
180
request.translate_client_path(b'foo/' + e_acute.encode('utf-8')))
182
182
def test_translate_client_path_vfs(self):
183
183
"""VfsRequests receive escaped paths rather than raw UTF-8."""
184
184
transport = self.get_transport()
185
request = vfs.VfsRequest(transport, 'foo/')
186
e_acute = u'\N{LATIN SMALL LETTER E WITH ACUTE}'.encode('utf-8')
187
escaped = urlutils.escape('foo/' + e_acute)
188
self.assertEqual('./' + urlutils.escape(e_acute),
185
request = vfs.VfsRequest(transport, b'foo/')
186
e_acute = u'\N{LATIN SMALL LETTER E WITH ACUTE}'
187
escaped = urlutils.escape(u'foo/' + e_acute)
188
self.assertEqual(b'./' + urlutils.escape(e_acute).encode('utf-8'),
189
189
request.translate_client_path(escaped))
191
191
def test_transport_from_client_path(self):
924
924
request = smart_branch.SmartServerBranchGetConfigFile(backing)
925
925
branch = self.make_branch('.')
926
926
# there should be no file by default
928
928
self.assertEqual(smart_req.SmartServerResponse((b'ok', ), content),
929
929
request.execute(b''))
1104
1104
def test_set_null_to_null(self):
1105
1105
"""An empty branch can have its last revision set to 'null:'."""
1106
self.assertRequestSucceeds('null:', 0)
1106
self.assertRequestSucceeds(b'null:', 0)
1108
1108
def test_NoSuchRevision(self):
1109
1109
"""If the revision_id is not present, the verb returns NoSuchRevision.
1267
1267
smart_req.FailedSmartServerResponse((b'Diverged',)),
1268
1268
self.set_last_revision('child-1', 2))
1269
1269
# The branch tip was not changed.
1270
self.assertEqual('child-2', self.tree.branch.last_revision())
1270
self.assertEqual(b'child-2', self.tree.branch.last_revision())
1272
1272
def test_allow_diverged(self):
1273
1273
"""If allow_diverged is passed, then setting a divergent history
1486
1486
branch = self.make_branch('.')
1487
1487
root = self.get_transport().clone('/')
1488
1488
path = urlutils.relative_url(root.base, self.get_transport().base)
1489
response = request.execute(path)
1489
response = request.execute(path.encode('utf-8'))
1490
1490
error_name, lock_str, why_str = response.args
1491
1491
self.assertFalse(response.is_successful())
1492
self.assertEqual('LockFailed', error_name)
1492
self.assertEqual(b'LockFailed', error_name)
1495
1495
class TestSmartServerBranchRequestGetPhysicalLockStatus(TestLockedBranch):
1598
1598
write_group_tokens = tree.branch.repository.suspend_write_group()
1599
1599
self.assertEqual(None, request.execute(b'', write_token,
1600
1600
b'rev1', *write_group_tokens))
1601
response = request.do_body('somesignature')
1601
response = request.do_body(b'somesignature')
1602
1602
self.assertTrue(response.is_successful())
1603
1603
self.assertEqual(response.args[0], b'ok')
1604
1604
write_group_tokens = response.args[1:]
1605
1605
tree.branch.repository.resume_write_group(write_group_tokens)
1606
1606
tree.branch.repository.commit_write_group()
1608
self.assertEqual("somesignature",
1609
tree.branch.repository.get_signature_text("rev1"))
1608
self.assertEqual(b"somesignature",
1609
tree.branch.repository.get_signature_text(b"rev1"))
1612
1612
class TestSmartServerRepositoryAllRevisionIds(
1670
1670
# Note that it returns a body that is bzipped.
1671
1671
self.assertEqual(
1672
1672
smart_req.SuccessfulSmartServerResponse((b'ok', ), bz2.compress(b'')),
1673
request.do_body('\n\n0\n'))
1673
request.do_body(b'\n\n0\n'))
1675
1675
def test_trivial_include_missing(self):
1676
1676
backing = self.get_transport()
1702
1702
# order coming out of a dict, so sort both our test and response
1703
1703
lines = sorted([b' '.join([r2, r1]), r1])
1704
1704
response = request.execute(b'', b'')
1705
response.body = '\n'.join(sorted(response.body.split('\n')))
1705
response.body = b'\n'.join(sorted(response.body.split(b'\n')))
1707
1707
self.assertEqual(
1708
1708
smart_req.SmartServerResponse((b'ok', ), b'\n'.join(lines)), response)
1791
1791
tree = self.make_branch_and_memory_tree('.', format='2a')
1792
1792
tree.lock_write()
1794
tree.commit('1st commit', rev_id="rev1")
1795
tree.commit('2nd commit', rev_id="rev2")
1794
tree.commit('1st commit', rev_id=b"rev1")
1795
tree.commit('2nd commit', rev_id=b"rev2")
1798
1798
self.assertIs(None, request.execute(b''))
1799
response = request.do_body("rev1\nrev2")
1799
response = request.do_body(b"rev1\nrev2")
1800
1800
self.assertTrue(response.is_successful())
1801
1801
# Format 2a uses serializer format 10
1802
1802
self.assertEqual(response.args, (b"ok", b"10"))
1809
1809
contents = b"".join(response.body_stream)
1810
1810
self.assertTrue(contents in (
1811
"".join([entries[0], entries[1]]),
1812
"".join([entries[1], entries[0]])))
1811
b"".join([entries[0], entries[1]]),
1812
b"".join([entries[1], entries[0]])))
1814
1814
def test_missing(self):
1815
1815
backing = self.get_transport()
2676
2676
inv = repository.revision_tree(revid).root_inventory
2677
2677
inv_delta = inv._make_delta(base_inv)
2678
2678
serializer = inventory_delta.InventoryDeltaSerializer(True, False)
2679
return "".join(serializer.delta_to_lines(base_revid, revid, inv_delta))
2679
return b"".join(serializer.delta_to_lines(base_revid, revid, inv_delta))
2681
2681
def test_single(self):
2682
2682
backing = self.get_transport()