Example #1
0
 def test_only_wraps_once(self):
     # get_readonly_transport just returns the given transport if its
     # already readonly.
     transport = MemoryTransport()
     readonly_transport = get_readonly_transport(transport)
     double_readonly = get_readonly_transport(readonly_transport)
     self.assertIs(readonly_transport, double_readonly)
Example #2
0
 def test_escaped_uppercase(self):
     """Uppercase letters are escaped for safety on Windows"""
     my_store = store.TransportStore(MemoryTransport(),
                                     prefixed=True,
                                     escaped=True)
     # a particularly perverse file-id! :-)
     self.assertEquals(my_store._relpath('C:<>'), 'be/%2543%253a%253c%253e')
Example #3
0
 def test___iter__no_suffix(self):
     my_store = TextStore(MemoryTransport(),
                          prefixed=False,
                          compressed=False)
     stream = StringIO("content")
     my_store.add(stream, "foo")
     self.assertEqual(set(['foo']), set(my_store.__iter__()))
Example #4
0
 def test_iter_files_recursive(self):
     transport = MemoryTransport()
     transport.mkdir('dir')
     transport.put_bytes('dir/foo', 'content')
     transport.put_bytes('dir/bar', 'content')
     transport.put_bytes('bar', 'content')
     paths = set(transport.iter_files_recursive())
     self.assertEqual(set(['dir/foo', 'dir/bar', 'bar']), paths)
Example #5
0
    def test_list_dir(self):
        transport = MemoryTransport()
        transport.put_bytes('foo', 'content')
        transport.mkdir('dir')
        transport.put_bytes('dir/subfoo', 'content')
        transport.put_bytes('dirlike', 'content')

        self.assertEquals(['dir', 'dirlike', 'foo'],
                          sorted(transport.list_dir('.')))
        self.assertEquals(['subfoo'], sorted(transport.list_dir('dir')))
 def setUp(self):
     frontend = InMemoryFrontend()
     self.factory = frontend.getLaunchpadObjectFactory()
     codehosting_api = frontend.getCodehostingEndpoint()
     self.requester = self.factory.makePerson()
     self.backing_transport = MemoryTransport()
     self.server = self.getServer(codehosting_api, self.requester.id,
                                  self.backing_transport)
     self.server.start_server()
     self.addCleanup(self.server.stop_server)
Example #7
0
 def test_copy_suffixes(self):
     from_store = self.get_populated_store()
     to_store = TextStore(MemoryTransport(), prefixed=True, compressed=True)
     to_store.register_suffix('sig')
     to_store.copy_all_ids(from_store)
     self.assertEqual(1, len(to_store))
     self.assertEqual(set(['foo']), set(to_store.__iter__()))
     self.assertEqual('content', to_store.get('foo').read())
     self.assertEqual('signature', to_store.get('foo', 'sig').read())
     self.assertRaises(KeyError, to_store.get, 'missing', 'sig')
 def test___iter__escaped(self):
     self.vfstore = VersionedFileStore(MemoryTransport(),
         prefixed=True, escaped=True, versionedfile_class=WeaveFile)
     self.vfstore.get_scope = self.get_scope
     self._transaction = transactions.WriteTransaction()
     vf = self.vfstore.get_weave_or_empty(' ', self._transaction)
     vf.add_lines('a', [], [])
     del vf
     self._transaction.finish()
     self.assertEqual([' '], list(self.vfstore))
 def setUp(self):
     super(TestFilesystem, self).setUp()
     self.disable_directory_isolation()
     frontend = InMemoryFrontend()
     self.factory = frontend.getLaunchpadObjectFactory()
     endpoint = XMLRPCWrapper(frontend.getCodehostingEndpoint())
     self.requester = self.factory.makePerson()
     self._server = LaunchpadServer(
         endpoint, self.requester.id, MemoryTransport())
     self._server.start_server()
     self.addCleanup(self._server.stop_server)
 def setUp(self):
     super(TestBranchChangedNotification, self).setUp()
     self._server = None
     self._branch_changed_log = []
     frontend = InMemoryFrontend()
     self.factory = frontend.getLaunchpadObjectFactory()
     self.codehosting_api = frontend.getCodehostingEndpoint()
     self.codehosting_api.branchChanged = self._replacement_branchChanged
     self.requester = self.factory.makePerson()
     self.backing_transport = MemoryTransport()
     self.disable_directory_isolation()
Example #11
0
 def get_populated_store(self, prefixed=False,
         store_class=TextStore, compressed=False):
     my_store = store_class(MemoryTransport(), prefixed,
                            compressed=compressed)
     my_store.register_suffix('sig')
     stream = StringIO("signature")
     my_store.add(stream, "foo", 'sig')
     stream = StringIO("content")
     my_store.add(stream, "foo")
     stream = StringIO("signature for missing base")
     my_store.add(stream, "missing", 'sig')
     return my_store
Example #12
0
    def test_openDirectoryMemory(self):
        """openDirectory works on MemoryTransport."""
        transport = MemoryTransport()
        transport.put_bytes('hello', 'hello')
        sftp_server = TransportSFTPServer(AsyncTransport(transport))
        deferred = sftp_server.openDirectory('.')

        def check_directory(directory):
            with closing(directory):
                names = [entry[0] for entry in directory]
            self.assertEqual(['hello'], names)

        return deferred.addCallback(check_directory)
    def setUp(self):
        super(TestBranchChangedErrorHandling, self).setUp()
        self._server = None
        frontend = InMemoryFrontend()
        self.factory = frontend.getLaunchpadObjectFactory()
        self.codehosting_api = frontend.getCodehostingEndpoint()
        self.codehosting_api.branchChanged = self._replacement_branchChanged
        self.requester = self.factory.makePerson()
        self.backing_transport = MemoryTransport()
        self.disable_directory_isolation()

        # Trap stderr.
        self.addCleanup(setattr, sys, 'stderr', sys.stderr)
        self._real_stderr = sys.stderr
        sys.stderr = codecs.getwriter('utf8')(StringIO())

        # To record generated oopsids
        self.generated_oopsids = []
Example #14
0
    def test__format_directory_entries_with_MemoryStat(self):
        """format_directory_entries works with MemoryStat.

        MemoryStat lacks many fields, but format_directory_entries works
        around that.
        """
        t = MemoryTransport()
        stat_result = t.stat('.')
        entries = self.sftp_server._format_directory_entries(
            [stat_result], ['filename'])
        self.assertEqual(list(entries), [
            ('filename', 'drwxr-xr-x    0 0        0               0 '
             'Jan 01  1970 filename',
             {'atime': 0,
              'gid': 0,
              'mtime': 0,
              'permissions': 16877,
              'size': 0,
              'uid': 0})])
        self.assertIs(None, getattr(stat_result, 'st_mtime', None))
Example #15
0
 def _populate_from_branch(self):
     """Populate the in-tree state from the branch."""
     self._set_basis()
     if self._branch_revision_id == _mod_revision.NULL_REVISION:
         self._parent_ids = []
     else:
         self._parent_ids = [self._branch_revision_id]
     self._inventory = Inventory(None, self._basis_tree.get_revision_id())
     self._file_transport = MemoryTransport()
     # TODO copy the revision trees content, or do it lazy, or something.
     inventory_entries = self._basis_tree.iter_entries_by_dir()
     for path, entry in inventory_entries:
         self._inventory.add(entry.copy())
         if path == '':
             continue
         if entry.kind == 'directory':
             self._file_transport.mkdir(path)
         elif entry.kind == 'file':
             self._file_transport.put_file(
                 path, self._basis_tree.get_file(entry.file_id))
         else:
             raise NotImplementedError(self._populate_from_branch)
Example #16
0
 def test_parameters(self):
     transport = MemoryTransport()
     self.assertEqual(True, transport.listable())
     self.assertEqual(False, transport.is_readonly())
Example #17
0
 def test_put_without_dir_fails(self):
     transport = MemoryTransport()
     self.assertRaises(NoSuchFile, transport.put_file, 'dir/path',
                       StringIO('content'))
 def setUp(self):
     super(TestDirectDatabaseLaunchpadServer, self).setUp()
     self.requester = self.factory.makePerson()
     self.server = DirectDatabaseLaunchpadServer('lp-test://',
                                                 MemoryTransport())
Example #19
0
 def test_get_missing(self):
     transport = MemoryTransport()
     self.assertRaises(NoSuchFile, transport.get, 'foo')
 def getLaunchpadServer(self, codehosting_api, user_id):
     return LaunchpadServer(XMLRPCWrapper(codehosting_api), user_id,
                            MemoryTransport())
 def getLaunchpadServer(self, codehosting_api, user_id):
     return LaunchpadInternalServer('lp-test:///',
                                    XMLRPCWrapper(codehosting_api),
                                    MemoryTransport())
Example #22
0
 def test_has_present(self):
     transport = MemoryTransport()
     transport.append_bytes('foo', 'content')
     self.assertEquals(True, transport.has('foo'))
Example #23
0
 def test_has_missing(self):
     transport = MemoryTransport()
     self.assertEquals(False, transport.has('foo'))
Example #24
0
 def test_tearDown(self):
     backing_transport = MemoryTransport()
     server = ChrootServer(backing_transport)
     server.setUp()
     server.tearDown()
     self.assertFalse(server.scheme in _get_protocol_handlers().keys())
Example #25
0
 def test_get_url(self):
     backing_transport = MemoryTransport()
     server = ChrootServer(backing_transport)
     server.setUp()
     self.assertEqual('chroot-%d:///' % id(server), server.get_url())
     server.tearDown()
Example #26
0
 def test_construct(self):
     backing_transport = MemoryTransport()
     server = ChrootServer(backing_transport)
     self.assertEqual(backing_transport, server.backing_transport)
Example #27
0
 def test_stat(self):
     transport = MemoryTransport()
     transport.put_bytes('foo', 'content')
     transport.put_bytes('bar', 'phowar')
     self.assertEqual(7, transport.stat('foo').st_size)
     self.assertEqual(6, transport.stat('bar').st_size)
Example #28
0
 def test_mkdir(self):
     transport = MemoryTransport()
     transport.mkdir('dir')
     transport.append_bytes('dir/path', 'content')
     self.assertEqual(transport.get('dir/path').read(), 'content')
Example #29
0
 def test_mkdir_missing_parent(self):
     transport = MemoryTransport()
     self.assertRaises(NoSuchFile, transport.mkdir, 'dir/dir')
Example #30
0
 def test_mkdir_twice(self):
     transport = MemoryTransport()
     transport.mkdir('dir')
     self.assertRaises(FileExists, transport.mkdir, 'dir')