431
434
'some text for the\nthird file created\n'
432
435
'some garbage\nto put in three\n')
434
def test_get_partial(self):
435
t = self.get_transport()
439
'here is some text\nand a bit more\n'
440
'adding more\ntext to two\n'),
442
'this is a string\nand some more stuff\n'
443
'appending to\none\n'),
445
'some text for the\nthird file created\n'
446
'some garbage\nto put in three\n')
449
for f, val in contents:
450
open(f, 'wb').write(val)
452
t.put_multi(contents)
454
self.assertRaises(NoSuchFile,
455
t.get_partial, 'a-missing-file', 20)
456
self.assertRaises(NoSuchFile,
457
t.get_partial, 'another-missing-file', 20, 30)
458
f = t.get_partial('f1', 33)
459
self.assertEqual(f.read(),
460
'adding more\ntext to two\n')
461
f = t.get_partial('f1', 33, 10)
462
self.assertEqual(f.read(10),
467
offsets = [('f2', 37), ('f3', 20, 10), ('f1', 10, 20)]
468
values = ['appending to\none\n',
470
'me text\nand a bit mo'
472
contents_f = t.get_partial_multi(offsets)
474
for f, val in zip(contents_f, values):
476
self.assertEqual(val, f.read(len(val)))
477
# Make sure we saw all values, and no extra
478
self.assertEqual(len(values), count)
479
self.assertEqual(list(contents_f), [])
481
# Do the same thing with an iterator
482
offsets = iter([('f2', 34), ('f3', 18, 10), ('f1', 15, 15)])
483
values = ['ff\nappending to\none\n',
487
contents_f = t.get_partial_multi(offsets)
489
for f, val in zip(contents_f, values):
491
self.assertEqual(val, f.read(len(val)))
492
self.assertEqual(len(values), count)
493
self.assertEqual(list(contents_f), [])
496
437
def test_delete(self):
497
438
# TODO: Test Transport.delete
501
442
# TODO: Test Transport.move
504
446
class LocalTransportTest(TestCaseInTempDir, TestTransportMixIn):
505
447
def get_transport(self):
506
448
from bzrlib.transport.local import LocalTransport
507
449
return LocalTransport('.')
509
452
class HttpTransportTest(TestCaseWithWebserver, TestTransportMixIn):
511
456
def get_transport(self):
512
457
from bzrlib.transport.http import HttpTransport
513
458
url = self.get_remote_url('.')
514
459
return HttpTransport(url)
462
class TestMemoryTransport(TestCase):
464
def test_get_transport(self):
465
memory.MemoryTransport()
467
def test_clone(self):
468
transport = memory.MemoryTransport()
469
self.failUnless(transport.clone() is transport)
471
def test_abspath(self):
472
transport = memory.MemoryTransport()
473
self.assertEqual("in-memory:relpath", transport.abspath('relpath'))
475
def test_relpath(self):
476
transport = memory.MemoryTransport()
478
def test_append_and_get(self):
479
transport = memory.MemoryTransport()
480
transport.append('path', StringIO('content'))
481
self.assertEqual(transport.get('path').read(), 'content')
482
transport.append('path', StringIO('content'))
483
self.assertEqual(transport.get('path').read(), 'contentcontent')
485
def test_put_and_get(self):
486
transport = memory.MemoryTransport()
487
transport.put('path', StringIO('content'))
488
self.assertEqual(transport.get('path').read(), 'content')
489
transport.put('path', StringIO('content'))
490
self.assertEqual(transport.get('path').read(), 'content')
492
def test_append_without_dir_fails(self):
493
transport = memory.MemoryTransport()
494
self.assertRaises(NoSuchFile,
495
transport.append, 'dir/path', StringIO('content'))
497
def test_put_without_dir_fails(self):
498
transport = memory.MemoryTransport()
499
self.assertRaises(NoSuchFile,
500
transport.put, 'dir/path', StringIO('content'))
502
def test_get_missing(self):
503
transport = memory.MemoryTransport()
504
self.assertRaises(NoSuchFile, transport.get, 'foo')
506
def test_has_missing(self):
507
transport = memory.MemoryTransport()
508
self.assertEquals(False, transport.has('foo'))
510
def test_has_present(self):
511
transport = memory.MemoryTransport()
512
transport.append('foo', StringIO('content'))
513
self.assertEquals(True, transport.has('foo'))
515
def test_mkdir(self):
516
transport = memory.MemoryTransport()
517
transport.mkdir('dir')
518
transport.append('dir/path', StringIO('content'))
519
self.assertEqual(transport.get('dir/path').read(), 'content')
521
def test_mkdir_missing_parent(self):
522
transport = memory.MemoryTransport()
523
self.assertRaises(NoSuchFile,
524
transport.mkdir, 'dir/dir')
526
def test_mkdir_twice(self):
527
transport = memory.MemoryTransport()
528
transport.mkdir('dir')
529
self.assertRaises(FileExists, transport.mkdir, 'dir')
531
def test_parameters(self):
532
transport = memory.MemoryTransport()
533
self.assertEqual(True, transport.listable())
534
self.assertEqual(False, transport.should_cache())
536
def test_iter_files_recursive(self):
537
transport = memory.MemoryTransport()
538
transport.mkdir('dir')
539
transport.put('dir/foo', StringIO('content'))
540
transport.put('dir/bar', StringIO('content'))
541
transport.put('bar', StringIO('content'))
542
paths = set(transport.iter_files_recursive())
543
self.assertEqual(set(['dir/foo', 'dir/bar', 'bar']), paths)
546
transport = memory.MemoryTransport()
547
transport.put('foo', StringIO('content'))
548
transport.put('bar', StringIO('phowar'))
549
self.assertEqual(7, transport.stat('foo').st_size)
550
self.assertEqual(6, transport.stat('bar').st_size)