コード例 #1
0
 def test_filter_boring(self):
     self.assertEqual(
         RemoteGitError('foo bar'),
         parse_git_hangup(
             'http://', HangupException([b'=======', b'foo bar',
                                         b'======'])))
     self.assertEqual(
         RemoteGitError('foo bar'),
         parse_git_hangup(
             'http://',
             HangupException([
                 b'remote: =======', b'remote: foo bar', b'remote: ======'
             ])))
コード例 #2
0
ファイル: protocol.py プロジェクト: timmy61109/dulwich
    def read_pkt_line(self):
        """Reads a pkt-line from the remote git process.

        This method may read from the readahead buffer; see unread_pkt_line.

        Returns: The next string from the stream, without the length prefix, or
            None for a flush-pkt ('0000').
        """
        if self._readahead is None:
            read = self.read
        else:
            read = self._readahead.read
            self._readahead = None

        try:
            sizestr = read(4)
            if not sizestr:
                raise HangupException()
            size = int(sizestr, 16)
            if size == 0:
                if self.report_activity:
                    self.report_activity(4, "read")
                return None
            if self.report_activity:
                self.report_activity(size, "read")
            pkt_contents = read(size - 4)
        except socket.error as e:
            raise GitProtocolError(e)
        else:
            if len(pkt_contents) + 4 != size:
                raise GitProtocolError(
                    "Length of pkt read %04x does not match length prefix %04x"
                    % (len(pkt_contents) + 4, size))
            return pkt_contents
コード例 #3
0
ファイル: protocol.py プロジェクト: zbal/dulwich
    def read_pkt_line(self):
        """Reads a pkt-line from the remote git process.

        This method may read from the readahead buffer; see unread_pkt_line.

        :return: The next string from the stream, without the length prefix, or
            None for a flush-pkt ('0000').
        """
        if self._readahead is None:
            read = self.read
        else:
            read = self._readahead.read
            self._readahead = None

        try:
            sizestr = read(4)
            if not sizestr:
                raise HangupException()
            size = int(sizestr, 16)
            if size == 0:
                if self.report_activity:
                    self.report_activity(4, 'read')
                return None
            if self.report_activity:
                self.report_activity(size, 'read')
            return read(size - 4)
        except socket.error as e:
            raise GitProtocolError(e)
コード例 #4
0
ファイル: test_server.py プロジェクト: tgalal/dulwich
 def read_pkt_line(self):
     if self._output:
         data = self._output.pop(0)
         if data is not None:
             return data.rstrip() + b'\n'
         else:
             # flush-pkt ('0000').
             return None
     else:
         raise HangupException()
コード例 #5
0
 def test_permission_denied(self):
     self.assertEqual(
         PermissionDenied(
             'http://',
             'You are not allowed to push code to this project.'),
         parse_git_hangup(
             'http://',
             HangupException([
                 '=======',
                 'You are not allowed to push code to this project.', '',
                 '======'
             ])))
コード例 #6
0
 def test_notbrancherror_yet(self):
     self.assertEqual(
         NotBranchError(
             'http://',
             'A repository for this project does not exist yet.'),
         parse_git_hangup(
             'http://',
             HangupException([
                 b'=======', b'',
                 b'A repository for this project does not exist yet.', b'',
                 b'======'
             ])))
コード例 #7
0
    def read_pkt_line(self):
        """
        Reads a 'pkt line' from the remote git process

        :return: The next string from the stream
        """
        try:
            sizestr = self.read(4)
            if not sizestr:
                raise HangupException()
            size = int(sizestr, 16)
            if size == 0:
                if self.report_activity:
                    self.report_activity(4, 'read')
                return None
            if self.report_activity:
                self.report_activity(size, 'read')
            return self.read(size - 4)
        except socket.error, e:
            raise GitProtocolError(e)
コード例 #8
0
 def test_multi_lines(self):
     self.assertEqual(
         RemoteGitError('foo bar\nbla bla'),
         parse_git_hangup('http://', HangupException(['foo bar',
                                                      'bla bla'])))
コード例 #9
0
 def test_single_line(self):
     self.assertEqual(
         RemoteGitError('foo bar'),
         parse_git_hangup('http://', HangupException(['foo bar'])))
コード例 #10
0
 def test_not_set(self):
     self.assertIsInstance(parse_git_hangup('http://', HangupException()),
                           HangupException)
コード例 #11
0
 def setUp(self):
     super(ParseHangupTests, self).setUp()
     try:
         HangupException(['foo'])
     except TypeError:
         self.skipTest('dulwich version too old')