From 29ffeae7d36c6e6c2a10dd230f8472226f51d955 Mon Sep 17 00:00:00 2001 From: Christophe Combelles Date: Wed, 19 May 2010 21:54:20 +0200 Subject: set-up infrastructure to write tests with a real http server, and reproduced issue 163. --HG-- branch : distribute extra : rebase_source : dc3a9fb1663500c66febacbc2ede43eaa96c190e --- setuptools/tests/server.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 setuptools/tests/server.py (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py new file mode 100644 index 00000000..00f4e07c --- /dev/null +++ b/setuptools/tests/server.py @@ -0,0 +1,39 @@ +"""Basic http server for tests to simulate PyPI or custom indexes +""" +import urllib2 +from threading import Thread +from BaseHTTPServer import HTTPServer +from SimpleHTTPServer import SimpleHTTPRequestHandler + +class IndexServer(HTTPServer): + """Basic single-threaded http server simulating a package index + + You can use this server in unittest like this:: + s = IndexServer() + s.start() + index_url = s.base_url() + 'mytestindex' + # do some test requests to the index + s.stop() + """ + def __init__(self): + HTTPServer.__init__(self, ('', 0), SimpleHTTPRequestHandler) + self._run = True + + def serve(self): + while True: + self.handle_request() + if not self._run: break + + def start(self): + self.thread = Thread(target=self.serve) + self.thread.start() + + def stop(self): + """self.shutdown is not supported on python < 2.6""" + self._run = False + urllib2.urlopen('http://127.0.0.1:%s/' % self.server_address[1]) + self.thread.join() + + def base_url(self): + port = self.server_address[1] + return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port -- cgit v1.2.1 From d7dc0ff754d8f3b3f2bf56087644a0a6d80c7061 Mon Sep 17 00:00:00 2001 From: Christophe Combelles Date: Tue, 25 May 2010 11:16:27 +0200 Subject: fixed issue 163 : don't include md5 when comparing two distributions, and scan index links before external page links. --HG-- branch : distribute extra : rebase_source : 21315f22104e090324f7fe243a4f16516c0a49fa --- setuptools/tests/server.py | 1 + 1 file changed, 1 insertion(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 00f4e07c..2f455e41 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -13,6 +13,7 @@ class IndexServer(HTTPServer): s.start() index_url = s.base_url() + 'mytestindex' # do some test requests to the index + # The index files should be located in setuptools/tests/indexes s.stop() """ def __init__(self): -- cgit v1.2.1 From 641afae67627f4c6fb3c52a318a6c86b50a33ee2 Mon Sep 17 00:00:00 2001 From: Christophe Combelles Date: Thu, 20 May 2010 00:02:46 +0200 Subject: Fix for python2.4 --HG-- branch : distribute extra : rebase_source : b4c2fb5521783c03bebcdb52e17c8e0063ab86aa --- setuptools/tests/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 2f455e41..5e5e3e61 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -32,9 +32,9 @@ class IndexServer(HTTPServer): def stop(self): """self.shutdown is not supported on python < 2.6""" self._run = False - urllib2.urlopen('http://127.0.0.1:%s/' % self.server_address[1]) + urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port) self.thread.join() def base_url(self): - port = self.server_address[1] + port = self.server_port return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port -- cgit v1.2.1 From e7a6afa8537161befb62ca5cd638f2bbc35a5842 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Thu, 10 Jun 2010 23:45:50 -0400 Subject: Fix race condition with the http server used in unittests --HG-- branch : distribute extra : rebase_source : e7093c7a63fe91ede0bdd52735e33ac780e95ec6 --- setuptools/tests/server.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 5e5e3e61..f116a3fd 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -32,7 +32,10 @@ class IndexServer(HTTPServer): def stop(self): """self.shutdown is not supported on python < 2.6""" self._run = False - urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port) + try: + urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port, None, 5) + except urllib2.URLError: + pass self.thread.join() def base_url(self): -- cgit v1.2.1 From 58a658b26d1c95b31d02050dcccd648d2e4ce27b Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Mon, 20 Jun 2011 22:55:16 +0100 Subject: Changes to support 2.x and 3.x in the same codebase. --HG-- branch : distribute extra : rebase_source : 7d3608edee54a43789f0574d702fb839628b5071 --- setuptools/tests/server.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index f4aaaa1c..c70fab7b 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -1,10 +1,9 @@ """Basic http server for tests to simulate PyPI or custom indexes """ -import urllib2 import sys from threading import Thread -from BaseHTTPServer import HTTPServer -from SimpleHTTPServer import SimpleHTTPRequestHandler +from setuptools.compat import (urllib2, URLError, HTTPServer, + SimpleHTTPRequestHandler) class IndexServer(HTTPServer): """Basic single-threaded http server simulating a package index @@ -39,7 +38,7 @@ class IndexServer(HTTPServer): None, 5) else: urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port) - except urllib2.URLError: + except URLError: pass self.thread.join() -- cgit v1.2.1 From 1ed3a1602e14450433663f5923972a73686379fd Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 1 Apr 2012 10:56:03 -0400 Subject: Cleaned up simulated index server, expanding documentation. --HG-- branch : distribute extra : rebase_source : b479cf805b766fa35c8e76c30c7725e93f56e6a2 --- setuptools/tests/server.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index f4aaaa1c..2dcbe5af 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -2,7 +2,7 @@ """ import urllib2 import sys -from threading import Thread +import threading from BaseHTTPServer import HTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler @@ -17,29 +17,36 @@ class IndexServer(HTTPServer): # The index files should be located in setuptools/tests/indexes s.stop() """ - def __init__(self): - HTTPServer.__init__(self, ('', 0), SimpleHTTPRequestHandler) + def __init__(self, server_address=('', 0), + RequestHandlerClass=SimpleHTTPRequestHandler, + bind_and_activate=True): + HTTPServer.__init__(self, server_address, RequestHandlerClass, + bind_and_activate) self._run = True def serve(self): - while True: + while self._run: self.handle_request() - if not self._run: break def start(self): - self.thread = Thread(target=self.serve) + self.thread = threading.Thread(target=self.serve) self.thread.start() def stop(self): - """self.shutdown is not supported on python < 2.6""" + "Stop the server" + + # self.shutdown is not supported on python < 2.6, so just + # set _run to false, and make a request, causing it to + # terminate. self._run = False + url = 'http://127.0.0.1:%(server_port)s/' % vars(self) try: - if sys.version > '2.6': - urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port, - None, 5) + if sys.version_info >= (2, 6): + urllib2.urlopen(url, timeout=5) else: - urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port) + urllib2.urlopen(url) except urllib2.URLError: + # ignore any errors; all that's important is the request pass self.thread.join() -- cgit v1.2.1 From fdc210e463688befd23e1a0e3ad1a599a891019d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 1 Apr 2012 11:26:34 -0400 Subject: Started work on a Mock server that doesn't require a file system to back it. --HG-- branch : distribute extra : rebase_source : feac8d802a8f574124fffab8c6c22d218b61987c --- setuptools/tests/server.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 2dcbe5af..870d3c8e 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -3,6 +3,7 @@ import urllib2 import sys import threading +import BaseHTTPServer from BaseHTTPServer import HTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler @@ -53,3 +54,19 @@ class IndexServer(HTTPServer): def base_url(self): port = self.server_port return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port + +class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): + def do_GET(self): + requests = vars(self.server).setdefault('requests', []) + requests.append(self) + self.send_response(200, 'OK') + +class MockServer(HTTPServer): + """ + A simple HTTP Server that records the requests made to it. + """ + def __init__(self, server_address=('', 0), + RequestHandlerClass=RequestRecorder, + bind_and_activate=True): + HTTPServer.__init__(self, server_address, RequestHandlerClass, + bind_and_activate) -- cgit v1.2.1 From ea977c0c8db023626f40f9b7c159549846f14a47 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 1 Apr 2012 15:28:56 -0400 Subject: Add test to capture issue 227 --HG-- branch : distribute extra : rebase_source : 6a829eb08499c0b7a83dd653fb039b8695620fb0 --- setuptools/tests/server.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 870d3c8e..e04dcca5 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -70,3 +70,12 @@ class MockServer(HTTPServer): bind_and_activate=True): HTTPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate) + self.threads = [] + + def handle_request_in_thread(self): + self.threads.append(threading.Thread(target = self.handle_request)) + # todo: ensure that threads are closed. + + def url(self): + return 'http://localhost:%(server_port)s/' % vars(self) + url = property(url) -- cgit v1.2.1 From dea4120fdc2cd90d9d68d3ffbc6e2118aadde125 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 7 Apr 2012 12:16:56 -0400 Subject: Improved the MockServer so it now more effectively handles multiple requests (as any index server really must). Test now more accurately captures the working scenario. --HG-- branch : distribute extra : rebase_source : 8ee0afdd95219047e4700b85356792f6128b1fd8 --- setuptools/tests/server.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index e04dcca5..8e06cc1d 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -61,7 +61,7 @@ class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): requests.append(self) self.send_response(200, 'OK') -class MockServer(HTTPServer): +class MockServer(HTTPServer, threading.Thread): """ A simple HTTP Server that records the requests made to it. """ @@ -70,11 +70,11 @@ class MockServer(HTTPServer): bind_and_activate=True): HTTPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate) - self.threads = [] + threading.Thread.__init__(self) + self.daemon = True - def handle_request_in_thread(self): - self.threads.append(threading.Thread(target = self.handle_request)) - # todo: ensure that threads are closed. + def run(self): + self.serve_forever() def url(self): return 'http://localhost:%(server_port)s/' % vars(self) -- cgit v1.2.1 From 6f830000f642af576434c52c7d229584ee0fdbd1 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 7 Apr 2012 13:52:20 -0400 Subject: Add requests to the instance, so it's always available even if no requests were made. --HG-- branch : distribute extra : rebase_source : b4bf42ec3470eda7ccef8e05aaf1944b450cf5e9 --- setuptools/tests/server.py | 1 + 1 file changed, 1 insertion(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 8e06cc1d..8a149d36 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -72,6 +72,7 @@ class MockServer(HTTPServer, threading.Thread): bind_and_activate) threading.Thread.__init__(self) self.daemon = True + self.requests = [] def run(self): self.serve_forever() -- cgit v1.2.1 From 94f0f93eb75b4ad956a1a1d602cfcc2405268b9d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 8 Apr 2012 00:22:47 +0000 Subject: Removed bind_and_activate parameters (not compatible with Python 2.4 --HG-- branch : distribute extra : rebase_source : bf2288bbb5fccc4aad0b8a09f5a444e0246c412e --- setuptools/tests/server.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 8a149d36..6b9fe6ac 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -19,10 +19,8 @@ class IndexServer(HTTPServer): s.stop() """ def __init__(self, server_address=('', 0), - RequestHandlerClass=SimpleHTTPRequestHandler, - bind_and_activate=True): - HTTPServer.__init__(self, server_address, RequestHandlerClass, - bind_and_activate) + RequestHandlerClass=SimpleHTTPRequestHandler): + HTTPServer.__init__(self, server_address, RequestHandlerClass) self._run = True def serve(self): @@ -66,10 +64,8 @@ class MockServer(HTTPServer, threading.Thread): A simple HTTP Server that records the requests made to it. """ def __init__(self, server_address=('', 0), - RequestHandlerClass=RequestRecorder, - bind_and_activate=True): - HTTPServer.__init__(self, server_address, RequestHandlerClass, - bind_and_activate) + RequestHandlerClass=RequestRecorder): + HTTPServer.__init__(self, server_address, RequestHandlerClass) threading.Thread.__init__(self) self.daemon = True self.requests = [] -- cgit v1.2.1 From 1b9b6071393b5b40921c0f6bbf95fcceed8029d4 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 8 Apr 2012 00:29:34 +0000 Subject: Fixed two issues for Python 2.4 compatibility. Tests now run again on Python 2.4 --HG-- branch : distribute extra : rebase_source : c6dc5ce8070ec42190d4d8eb6af28523d447f962 --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 6b9fe6ac..7b5cacb9 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -67,7 +67,7 @@ class MockServer(HTTPServer, threading.Thread): RequestHandlerClass=RequestRecorder): HTTPServer.__init__(self, server_address, RequestHandlerClass) threading.Thread.__init__(self) - self.daemon = True + self.setDaemon(True) self.requests = [] def run(self): -- cgit v1.2.1 From ea687a55fe5d94167a1bf1ff4a75a0c14b5407cd Mon Sep 17 00:00:00 2001 From: Lennart Regebro Date: Wed, 22 Aug 2012 17:36:10 +0200 Subject: Issue 315: --HG-- branch : distribute extra : rebase_source : c7ad76794ac6db2a4bc1abc88e646ddcd14550db --- setuptools/tests/server.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 7b5cacb9..daccaba9 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -2,6 +2,7 @@ """ import urllib2 import sys +import time import threading import BaseHTTPServer from BaseHTTPServer import HTTPServer @@ -34,6 +35,9 @@ class IndexServer(HTTPServer): def stop(self): "Stop the server" + # Let the server finish the last request adn wait for a new one. + time.sleep(0.1) + # self.shutdown is not supported on python < 2.6, so just # set _run to false, and make a request, causing it to # terminate. -- cgit v1.2.1 From f090838c3613065fd6505cd390511a96e08755c4 Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Wed, 22 Aug 2012 19:32:00 +0200 Subject: Fix a typo in a comment. --HG-- branch : distribute extra : rebase_source : 779baf947b6989f1275d99cff2044adad3dd7997 --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index daccaba9..b2ab7acc 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -35,7 +35,7 @@ class IndexServer(HTTPServer): def stop(self): "Stop the server" - # Let the server finish the last request adn wait for a new one. + # Let the server finish the last request and wait for a new one. time.sleep(0.1) # self.shutdown is not supported on python < 2.6, so just -- cgit v1.2.1 From 7cf9cd93c2fddb7f7f5fe6c1fcc140e9d6c93232 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Tue, 18 Jun 2013 13:54:35 -0500 Subject: Minor fix previously fixed in a merge --HG-- branch : distribute --- setuptools/tests/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index c7343340..0e7407bb 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -3,7 +3,7 @@ import sys import time import threading -import BaseHTTPServer +from setuptools.compat import BaseHTTPRequestHandler from setuptools.compat import (urllib2, URLError, HTTPServer, SimpleHTTPRequestHandler) @@ -56,7 +56,7 @@ class IndexServer(HTTPServer): port = self.server_port return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port -class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): +class RequestRecorder(BaseHTTPRequestHandler): def do_GET(self): requests = vars(self.server).setdefault('requests', []) requests.append(self) -- cgit v1.2.1 From 94fc39cb62df19e85b07658f2fa5d0b4a7bf9303 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Wed, 10 Oct 2012 10:49:54 +0100 Subject: Fixed some resource leaks. --HG-- branch : distribute extra : source : 98c929e25fee11a99eb125dd9a13521321d68dd3 --- setuptools/tests/server.py | 1 + 1 file changed, 1 insertion(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 0e7407bb..ae2381e3 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -51,6 +51,7 @@ class IndexServer(HTTPServer): # ignore any errors; all that's important is the request pass self.thread.join() + self.socket.close() def base_url(self): port = self.server_port -- cgit v1.2.1 From b49435397a5094f94678adf3549cc8941aa469b7 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 5 Jul 2014 15:06:51 -0400 Subject: Use six for Python 2 compatibility --HG-- branch : feature/issue-229 extra : source : 7b1997ececc5772798ce33a0f8e77387cb55a977 --- setuptools/tests/server.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index ae2381e3..099e8b19 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -3,11 +3,10 @@ import sys import time import threading -from setuptools.compat import BaseHTTPRequestHandler -from setuptools.compat import (urllib2, URLError, HTTPServer, - SimpleHTTPRequestHandler) -class IndexServer(HTTPServer): +from six.moves import BaseHTTPServer, SimpleHTTPServer, urllib + +class IndexServer(BaseHTTPServer.HTTPServer): """Basic single-threaded http server simulating a package index You can use this server in unittest like this:: @@ -19,8 +18,9 @@ class IndexServer(HTTPServer): s.stop() """ def __init__(self, server_address=('', 0), - RequestHandlerClass=SimpleHTTPRequestHandler): - HTTPServer.__init__(self, server_address, RequestHandlerClass) + RequestHandlerClass=SimpleHTTPServer.SimpleHTTPRequestHandler): + BaseHTTPServer.HTTPServer.__init__(self, server_address, + RequestHandlerClass) self._run = True def serve(self): @@ -44,10 +44,10 @@ class IndexServer(HTTPServer): url = 'http://127.0.0.1:%(server_port)s/' % vars(self) try: if sys.version_info >= (2, 6): - urllib2.urlopen(url, timeout=5) + urllib.request.urlopen(url, timeout=5) else: - urllib2.urlopen(url) - except URLError: + urllib.request.urlopen(url) + except urllib.error.URLError: # ignore any errors; all that's important is the request pass self.thread.join() @@ -57,19 +57,20 @@ class IndexServer(HTTPServer): port = self.server_port return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port -class RequestRecorder(BaseHTTPRequestHandler): +class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): def do_GET(self): requests = vars(self.server).setdefault('requests', []) requests.append(self) self.send_response(200, 'OK') -class MockServer(HTTPServer, threading.Thread): +class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): """ A simple HTTP Server that records the requests made to it. """ def __init__(self, server_address=('', 0), RequestHandlerClass=RequestRecorder): - HTTPServer.__init__(self, server_address, RequestHandlerClass) + BaseHTTPServer.HTTPServer.__init__(self, server_address, + RequestHandlerClass) threading.Thread.__init__(self) self.setDaemon(True) self.requests = [] -- cgit v1.2.1 From ed54215c1ca6be3874ad8d861b8514dc3009bbb4 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Thu, 1 Jan 2015 17:02:09 -0500 Subject: Use serve_forever and shutdown, now available. --- setuptools/tests/server.py | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index ae2381e3..266ee5bd 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -23,12 +23,8 @@ class IndexServer(HTTPServer): HTTPServer.__init__(self, server_address, RequestHandlerClass) self._run = True - def serve(self): - while self._run: - self.handle_request() - def start(self): - self.thread = threading.Thread(target=self.serve) + self.thread = threading.Thread(target=self.serve_forever) self.thread.start() def stop(self): @@ -37,19 +33,7 @@ class IndexServer(HTTPServer): # Let the server finish the last request and wait for a new one. time.sleep(0.1) - # self.shutdown is not supported on python < 2.6, so just - # set _run to false, and make a request, causing it to - # terminate. - self._run = False - url = 'http://127.0.0.1:%(server_port)s/' % vars(self) - try: - if sys.version_info >= (2, 6): - urllib2.urlopen(url, timeout=5) - else: - urllib2.urlopen(url) - except URLError: - # ignore any errors; all that's important is the request - pass + self.shutdown() self.thread.join() self.socket.close() -- cgit v1.2.1 From 9f6d874dfc15a4d695dbed3ffa9bd3ed56008350 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Thu, 1 Jan 2015 17:03:21 -0500 Subject: Use property --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 266ee5bd..b53168d1 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -61,6 +61,6 @@ class MockServer(HTTPServer, threading.Thread): def run(self): self.serve_forever() + @property def url(self): return 'http://localhost:%(server_port)s/' % vars(self) - url = property(url) -- cgit v1.2.1 From d4411774ba9ee79480c8128b4e8f610481a65cf3 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Thu, 1 Jan 2015 17:03:42 -0500 Subject: Remove unused imports --- setuptools/tests/server.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index b53168d1..6b214279 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -1,11 +1,10 @@ """Basic http server for tests to simulate PyPI or custom indexes """ -import sys + import time import threading from setuptools.compat import BaseHTTPRequestHandler -from setuptools.compat import (urllib2, URLError, HTTPServer, - SimpleHTTPRequestHandler) +from setuptools.compat import HTTPServer, SimpleHTTPRequestHandler class IndexServer(HTTPServer): """Basic single-threaded http server simulating a package index -- cgit v1.2.1 From 06872bb0bbbeb953e90bd0941444b0d499056557 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Thu, 31 Dec 2015 11:51:01 -0500 Subject: Update vendoring technique to match that used for packaging. Ref #229. --HG-- branch : feature/issue-229 --- setuptools/tests/server.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 1fee0563..ef5c8f62 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,7 +4,13 @@ import time import threading -from six.moves import BaseHTTPServer, SimpleHTTPServer +try: + from setuptools._vendor.six.moves import BaseHTTPServer, SimpleHTTPServer +except ImportError: + # fallback to naturally-installed version; allows system packagers to + # omit vendored packages. + from six.moves import BaseHTTPServer, SimpleHTTPServer + class IndexServer(BaseHTTPServer.HTTPServer): """Basic single-threaded http server simulating a package index -- cgit v1.2.1 From 952c1bafda1929c74c737646aa025e6ffad6632e Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Thu, 31 Dec 2015 16:30:47 -0500 Subject: Modeling after Astropy's technique for bundling libraries, the imports are now much cleaner. Thanks @embray. Ref #229. --HG-- branch : feature/issue-229 --- setuptools/tests/server.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index ef5c8f62..6a687937 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,12 +4,7 @@ import time import threading -try: - from setuptools._vendor.six.moves import BaseHTTPServer, SimpleHTTPServer -except ImportError: - # fallback to naturally-installed version; allows system packagers to - # omit vendored packages. - from six.moves import BaseHTTPServer, SimpleHTTPServer +from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer class IndexServer(BaseHTTPServer.HTTPServer): -- cgit v1.2.1 From 6d11e88f938f09ef16db4c6064b6e74acba4db1d Mon Sep 17 00:00:00 2001 From: stepshal Date: Tue, 12 Jul 2016 22:00:43 +0700 Subject: Fix quantity of blank lines after code object. --- setuptools/tests/server.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 6a687937..9e5fefb7 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -18,6 +18,7 @@ class IndexServer(BaseHTTPServer.HTTPServer): # The index files should be located in setuptools/tests/indexes s.stop() """ + def __init__(self, server_address=('', 0), RequestHandlerClass=SimpleHTTPServer.SimpleHTTPRequestHandler): BaseHTTPServer.HTTPServer.__init__(self, server_address, @@ -42,16 +43,20 @@ class IndexServer(BaseHTTPServer.HTTPServer): port = self.server_port return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port + class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): + def do_GET(self): requests = vars(self.server).setdefault('requests', []) requests.append(self) self.send_response(200, 'OK') + class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): """ A simple HTTP Server that records the requests made to it. """ + def __init__(self, server_address=('', 0), RequestHandlerClass=RequestRecorder): BaseHTTPServer.HTTPServer.__init__(self, server_address, -- cgit v1.2.1 From 31bd37c6ac8de9e8c1bacebc2d8e1215df91eb96 Mon Sep 17 00:00:00 2001 From: stepshal Date: Tue, 18 Oct 2016 20:24:35 +0700 Subject: Fix quantity of blank lines. --- setuptools/tests/server.py | 1 - 1 file changed, 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 9e5fefb7..35312120 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -45,7 +45,6 @@ class IndexServer(BaseHTTPServer.HTTPServer): class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): - def do_GET(self): requests = vars(self.server).setdefault('requests', []) requests.append(self) -- cgit v1.2.1 From ff371f18f0076bc63da05334f7e551c1cc29e10d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 1 Jan 2017 22:34:28 -0500 Subject: Strip out vendored packages and require them instead. Ref #581. --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 35312120..5cdde217 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,7 +4,7 @@ import time import threading -from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer +from six.moves import BaseHTTPServer, SimpleHTTPServer class IndexServer(BaseHTTPServer.HTTPServer): -- cgit v1.2.1 From 3d0cc355fb5e8012cb8c72f0e25042a5a44f31d6 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 24 Feb 2017 11:49:51 -0500 Subject: Revert "Merge pull request #933 from pypa/feature/581-depend-not-bundle" This reverts commit 089cdeb489a0fa94d11b7307b54210ef9aa40511, reversing changes made to aaec654d804cb78dbb6391afff721a63f26a71cd. --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 5cdde217..35312120 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,7 +4,7 @@ import time import threading -from six.moves import BaseHTTPServer, SimpleHTTPServer +from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer class IndexServer(BaseHTTPServer.HTTPServer): -- cgit v1.2.1 From 5cd86987530892bfb01f68ad5f1a2b997a3d01e7 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 26 Jan 2019 20:20:12 -0500 Subject: Feed the hobgoblins (delint). --- setuptools/tests/server.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 35312120..fc3a5975 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -19,10 +19,11 @@ class IndexServer(BaseHTTPServer.HTTPServer): s.stop() """ - def __init__(self, server_address=('', 0), + def __init__( + self, server_address=('', 0), RequestHandlerClass=SimpleHTTPServer.SimpleHTTPRequestHandler): - BaseHTTPServer.HTTPServer.__init__(self, server_address, - RequestHandlerClass) + BaseHTTPServer.HTTPServer.__init__( + self, server_address, RequestHandlerClass) self._run = True def start(self): @@ -56,10 +57,11 @@ class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): A simple HTTP Server that records the requests made to it. """ - def __init__(self, server_address=('', 0), + def __init__( + self, server_address=('', 0), RequestHandlerClass=RequestRecorder): - BaseHTTPServer.HTTPServer.__init__(self, server_address, - RequestHandlerClass) + BaseHTTPServer.HTTPServer.__init__( + self, server_address, RequestHandlerClass) threading.Thread.__init__(self) self.setDaemon(True) self.requests = [] -- cgit v1.2.1 From d6948c636f5e657ac56911b71b7a459d326d8389 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 29 Apr 2018 19:47:42 +0200 Subject: dist: re-implement `fetch_build_egg` to use pip --- setuptools/tests/server.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index fc3a5975..8b17b081 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -1,10 +1,13 @@ """Basic http server for tests to simulate PyPI or custom indexes """ +import os import time import threading from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer +from setuptools.extern.six.moves.urllib_parse import urljoin +from setuptools.extern.six.moves.urllib.request import pathname2url class IndexServer(BaseHTTPServer.HTTPServer): @@ -69,6 +72,20 @@ class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): def run(self): self.serve_forever() + @property + def netloc(self): + return 'localhost:%s' % self.server_port + @property def url(self): - return 'http://localhost:%(server_port)s/' % vars(self) + return 'http://%s/' % self.netloc + + +def path_to_url(path, authority=None): + """ Convert a path to a file: URL. """ + path = os.path.normpath(os.path.abspath(path)) + base = 'file:' + if authority is not None: + base += '//' + authority + url = urljoin(base, pathname2url(path)) + return url -- cgit v1.2.1 From fb7ab81a3d080422687bad71f9ae9d36eeefbee2 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 16 Aug 2020 00:29:24 -0400 Subject: Remove Python 2 compatibility --- setuptools/tests/server.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 8b17b081..7e213230 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -4,13 +4,12 @@ import os import time import threading +import http.server +import urllib.parse +import urllib.request -from setuptools.extern.six.moves import BaseHTTPServer, SimpleHTTPServer -from setuptools.extern.six.moves.urllib_parse import urljoin -from setuptools.extern.six.moves.urllib.request import pathname2url - -class IndexServer(BaseHTTPServer.HTTPServer): +class IndexServer(http.server.HTTPServer): """Basic single-threaded http server simulating a package index You can use this server in unittest like this:: @@ -24,8 +23,8 @@ class IndexServer(BaseHTTPServer.HTTPServer): def __init__( self, server_address=('', 0), - RequestHandlerClass=SimpleHTTPServer.SimpleHTTPRequestHandler): - BaseHTTPServer.HTTPServer.__init__( + RequestHandlerClass=http.server.SimpleHTTPRequestHandler): + http.server.HTTPServer.__init__( self, server_address, RequestHandlerClass) self._run = True @@ -48,14 +47,14 @@ class IndexServer(BaseHTTPServer.HTTPServer): return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port -class RequestRecorder(BaseHTTPServer.BaseHTTPRequestHandler): +class RequestRecorder(http.server.BaseHTTPRequestHandler): def do_GET(self): requests = vars(self.server).setdefault('requests', []) requests.append(self) self.send_response(200, 'OK') -class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): +class MockServer(http.server.HTTPServer, threading.Thread): """ A simple HTTP Server that records the requests made to it. """ @@ -63,7 +62,7 @@ class MockServer(BaseHTTPServer.HTTPServer, threading.Thread): def __init__( self, server_address=('', 0), RequestHandlerClass=RequestRecorder): - BaseHTTPServer.HTTPServer.__init__( + http.server.HTTPServer.__init__( self, server_address, RequestHandlerClass) threading.Thread.__init__(self) self.setDaemon(True) @@ -87,5 +86,5 @@ def path_to_url(path, authority=None): base = 'file:' if authority is not None: base += '//' + authority - url = urljoin(base, pathname2url(path)) + url = urllib.parse.urljoin(base, urllib.request.pathname2url(path)) return url -- cgit v1.2.1 From 87efb79effe2ed8a914a6e9f3855c4b925c52513 Mon Sep 17 00:00:00 2001 From: Karthikeyan Singaravelan Date: Sat, 17 Apr 2021 06:21:33 +0000 Subject: Set daemon attribute instead of using setDaemon method that was deprecated in Python 3.10 --- setuptools/tests/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'setuptools/tests/server.py') diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 7e213230..6717c053 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -65,7 +65,7 @@ class MockServer(http.server.HTTPServer, threading.Thread): http.server.HTTPServer.__init__( self, server_address, RequestHandlerClass) threading.Thread.__init__(self) - self.setDaemon(True) + self.daemon = True self.requests = [] def run(self): -- cgit v1.2.1