def test_del_closes_socket(self): if PYPY: return timer = gevent.Timeout.start_new(0.5) def accept_once(listener): # delete/overwrite the original conn # object, only keeping the file object around # closing the file object should close everything try: conn, addr = listener.accept() conn = conn.makefile(mode='wb') conn.write(b'hello\n') conn.close() _write_to_closed(conn, b'a') finally: listener.close() server = tcp_listener(('0.0.0.0', 0)) gevent.spawn(accept_once, server) client = socket.create_connection(('127.0.0.1', server.getsockname()[1])) fd = client.makefile() client.close() assert fd.read() == 'hello\n' assert fd.read() == '' timer.cancel() if __name__ == '__main__': main()
acceptor.join() def get_port(): tempsock = socket.socket() tempsock.bind(('', 0)) port = tempsock.getsockname()[1] tempsock.close() return port class TestCreateConnection(greentest.TestCase): __timeout__ = 5 def test(self): try: socket.create_connection(('localhost', get_port()), timeout=30, source_address=('', get_port())) except socket.error as ex: if 'refused' not in str(ex).lower(): raise else: raise AssertionError( 'create_connection did not raise socket.error as expected') if __name__ == '__main__': greentest.main()
server.stop() def test_banner(self): banner = "Welcome stranger!" # native string server = backdoor.BackdoorServer(('127.0.0.1', 0), banner=banner) server.start() try: conn = create_connection(('127.0.0.1', server.server_port)) response = read_until(conn, b'>>> ') self.assertEqual(response[:len(banner)], banner, response) conn.close() finally: server.stop() def test_builtins(self): server = backdoor.BackdoorServer(('127.0.0.1', 0)) server.start() try: conn = create_connection(('127.0.0.1', server.server_port)) read_until(conn, b'>>> ') conn.sendall(b'locals()["__builtins__"]\r\n') response = read_until(conn, '>>> ') self.assertTrue(len(response) < 300, msg="locals() unusable: %s..." % response) finally: conn.close() server.stop() if __name__ == '__main__': greentest.main()
from greentest import walk_modules, BaseTestCase, main import six class TestExec(BaseTestCase): pass def make_exec_test(path, module): def test(self): #sys.stderr.write('%s %s\n' % (module, path)) f = open(path) src = f.read() f.close() six.exec_(src, {}) name = "test_" + module.replace(".", "_") test.__name__ = name setattr(TestExec, name, test) for path, module in walk_modules(): make_exec_test(path, module) if __name__ == '__main__': main()