diff -r 045c9e8db0d8 -r 1121af239761 tests/get-with-headers.py --- a/tests/get-with-headers.py Wed Sep 08 15:19:35 2010 +0200 +++ b/tests/get-with-headers.py Wed Sep 08 15:11:35 2010 +0200 @@ -12,18 +12,40 @@ except ImportError: pass -headers = [h.lower() for h in sys.argv[3:]] -conn = httplib.HTTPConnection(sys.argv[1]) -conn.request("GET", sys.argv[2]) -response = conn.getresponse() -print response.status, response.reason -for h in headers: - if response.getheader(h, None) is not None: - print "%s: %s" % (h, response.getheader(h)) -print -data = response.read() -sys.stdout.write(data) +twice = False +if '--twice' in sys.argv: + sys.argv.remove('--twice') + twice = True + +tag = None +def request(host, path, show): + + global tag + headers = {} + if tag: + headers['If-None-Match'] = tag -if 200 <= response.status <= 299: + conn = httplib.HTTPConnection(host) + conn.request("GET", path, None, headers) + response = conn.getresponse() + print response.status, response.reason + for h in [h.lower() for h in show]: + if response.getheader(h, None) is not None: + print "%s: %s" % (h, response.getheader(h)) + + print + data = response.read() + sys.stdout.write(data) + + if twice and response.getheader('ETag', None): + tag = response.getheader('ETag') + + return response.status + +status = request(sys.argv[1], sys.argv[2], sys.argv[3:]) +if twice: + status = request(sys.argv[1], sys.argv[2], sys.argv[3:]) + +if 200 <= status <= 305: sys.exit(0) sys.exit(1)