/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
3408.6.1 by Eric Holmberg
Fix for Bug #215426 in which bzr can cause a MemoryError in socket.recv while
1
# Copyright (C) 2008 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3408.6.1 by Eric Holmberg
Fix for Bug #215426 in which bzr can cause a MemoryError in socket.recv while
16
7479.2.1 by Jelmer Vernooij
Drop python2 support.
17
from io import BytesIO
6621.22.2 by Martin
Use BytesIO or StringIO from bzrlib.sixish
18
3408.6.1 by Eric Holmberg
Fix for Bug #215426 in which bzr can cause a MemoryError in socket.recv while
19
20
class FakeReadFile(object):
21
    """A file-like object that can be given predefined content and read
22
    like a file.  The maximum size and number of the reads is recorded."""
23
24
    def __init__(self, data):
25
        """Initialize the mock file object with the provided data."""
6621.22.2 by Martin
Use BytesIO or StringIO from bzrlib.sixish
26
        self.data = BytesIO(data)
3408.6.1 by Eric Holmberg
Fix for Bug #215426 in which bzr can cause a MemoryError in socket.recv while
27
        self.max_read_size = None
28
        self.read_count = 0
29
30
    def read(self, size=-1):
31
        """Reads size characters from the input (or the rest of the string if
32
        size is -1)."""
33
        data = self.data.read(size)
6632.1.2 by Martin
Fix tests for pump and send_all on Python 3
34
        self.max_read_size = max(self.max_read_size or 0, len(data))
3408.6.1 by Eric Holmberg
Fix for Bug #215426 in which bzr can cause a MemoryError in socket.recv while
35
        self.read_count += 1
36
        return data
37
38
    def get_max_read_size(self):
39
        """Returns the maximum read size or None if no reads have occured."""
40
        return self.max_read_size
41
42
    def get_read_count(self):
43
        """Returns the number of calls to read."""
44
        return self.read_count
45
46
    def reset_read_count(self):
47
        """Clears the read count."""
48
        self.read_count = 0