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: ======' ])))
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
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)
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()
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.', '', '======' ])))
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'======' ])))
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)
def test_multi_lines(self): self.assertEqual( RemoteGitError('foo bar\nbla bla'), parse_git_hangup('http://', HangupException(['foo bar', 'bla bla'])))
def test_single_line(self): self.assertEqual( RemoteGitError('foo bar'), parse_git_hangup('http://', HangupException(['foo bar'])))
def test_not_set(self): self.assertIsInstance(parse_git_hangup('http://', HangupException()), HangupException)
def setUp(self): super(ParseHangupTests, self).setUp() try: HangupException(['foo']) except TypeError: self.skipTest('dulwich version too old')