diff -r 8f85262fbe8a Lib/nntplib.py --- a/Lib/nntplib.py Sun Jul 06 02:24:24 2014 -0400 +++ b/Lib/nntplib.py Sun Jul 13 11:45:28 2014 -0700 @@ -122,6 +122,9 @@ """Error in response data""" pass +class NNTPConnectError(NNTPError, EOFError): + """Error during connection establishment.""" + pass # Standard port used by NNTP servers NNTP_PORT = 119 @@ -365,7 +368,7 @@ if is_connected(): try: self.quit() - except (OSError, EOFError): + except (OSError, NNTPConnectError): pass finally: if is_connected(): @@ -435,7 +438,8 @@ raise NNTPDataError('line too long') if self.debugging > 1: print('*get*', repr(line)) - if not line: raise EOFError + if not line: + raise NNTPConnectError('Connection is closed.') if strip_crlf: if line[-2:] == _CRLF: line = line[:-2] diff -r 8f85262fbe8a Lib/test/test_nntplib.py --- a/Lib/test/test_nntplib.py Sun Jul 06 02:24:24 2014 -0400 +++ b/Lib/test/test_nntplib.py Sun Jul 13 11:45:28 2014 -0700 @@ -3,6 +3,7 @@ import datetime import textwrap import unittest +from io import StringIO import functools import contextlib from test import support @@ -260,13 +261,26 @@ # value setattr(cls, name, wrap_meth(meth)) + def test_NNTPConnectError(self): + server_obj = self.server.file + self.server.file = StringIO() + self.assertRaises(nntplib.NNTPConnectError, self.server._getresp) + self.server.file = server_obj + + def test_EOFError(self): + """Testing for backwards compatiblity""" + server_obj = self.server.file + self.server.file = StringIO() + self.assertRaises(EOFError, self.server._getresp) + self.server.file = server_obj + def test_with_statement(self): def is_connected(): if not hasattr(server, 'file'): return False try: server.help() - except (OSError, EOFError): + except (OSError, nntplib.NNTPConnectError): return False return True