/usr/lib/python2.7/test/test_nntplib.py is in libpython2.7-testsuite 2.7.11-7ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import socket
import nntplib
import time
import unittest
try:
import threading
except ImportError:
threading = None
from unittest import TestCase
from test import test_support
HOST = test_support.HOST
def server(evt, serv, evil=False):
serv.listen(5)
try:
conn, addr = serv.accept()
except socket.timeout:
pass
else:
if evil:
conn.send("1 I'm too long response" * 3000 + "\n")
else:
conn.send("1 I'm OK response\n")
conn.close()
finally:
serv.close()
evt.set()
class BaseServerTest(TestCase):
def setUp(self):
self.evt = threading.Event()
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(3)
self.port = test_support.bind_port(self.sock)
threading.Thread(
target=server,
args=(self.evt, self.sock, self.evil)).start()
time.sleep(.1)
def tearDown(self):
self.evt.wait()
@unittest.skipUnless(threading, 'threading required')
class ServerTests(BaseServerTest):
evil = False
def test_basic_connect(self):
nntp = nntplib.NNTP('localhost', self.port)
nntp.sock.close()
@unittest.skipUnless(threading, 'threading required')
class EvilServerTests(BaseServerTest):
evil = True
def test_too_long_line(self):
self.assertRaises(nntplib.NNTPDataError,
nntplib.NNTP, 'localhost', self.port)
def test_main(verbose=None):
test_support.run_unittest(EvilServerTests)
test_support.run_unittest(ServerTests)
if __name__ == '__main__':
test_main()
|