From 2e558b7e9d435216ff8c4c76df130fbf3936f803 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 24 Jun 2012 15:07:45 +1200 Subject: [PATCH] Fix disconnect, improve coverage, enable file value specifier. --- doc-src/pathoc.html | 3 ++- libpathod/pathod.py | 10 ++++++---- libpathod/rparse.py | 2 -- test/test_test.py | 18 +++++++++++++++++- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/doc-src/pathoc.html b/doc-src/pathoc.html index 38b153e71..6f25e19d0 100644 --- a/doc-src/pathoc.html +++ b/doc-src/pathoc.html @@ -5,5 +5,6 @@ +pathoc hostname get:/foo/bar:h"foo"="bar" get:/wah:b@1m - +pathoc --ssl hostname get:/foo/bar:h"foo"="bar" get:/wah:b@1m diff --git a/libpathod/pathod.py b/libpathod/pathod.py index aed956753..ef37d5ad6 100644 --- a/libpathod/pathod.py +++ b/libpathod/pathod.py @@ -26,7 +26,7 @@ class PathodHandler(tcp.BaseHandler): if path.startswith(self.server.prefix): spec = urllib.unquote(path)[len(self.server.prefix):] try: - presp = rparse.parse({}, spec) + presp = rparse.parse(self.server.request_settings, spec) except rparse.ParseException, v: presp = rparse.InternalResponse( 800, @@ -34,8 +34,7 @@ class PathodHandler(tcp.BaseHandler): ) ret = presp.serve(self.wfile) if ret["disconnect"]: - self.close() - + self.finish() ret["request"] = dict( path = path, method = method, @@ -65,6 +64,7 @@ class Pathod(tcp.TCPServer): def __init__(self, addr, ssloptions=None, prefix="/p/", staticdir=None, anchors=None): tcp.TCPServer.__init__(self, addr) self.ssloptions = ssloptions + self.staticdir = staticdir self.prefix = prefix self.app = app.app self.app.config["pathod"] = self @@ -73,7 +73,9 @@ class Pathod(tcp.TCPServer): @property def request_settings(self): - return {} + return dict( + staticdir = self.staticdir + ) def handle_connection(self, request, client_address): PathodHandler(request, client_address, self) diff --git a/libpathod/rparse.py b/libpathod/rparse.py index 92d0a54b8..8a4073883 100644 --- a/libpathod/rparse.py +++ b/libpathod/rparse.py @@ -2,8 +2,6 @@ import operator, string, random, mmap, os, time import contrib.pyparsing as pp from netlib import http_status -TESTING = False - class ParseException(Exception): def __init__(self, msg, s, col): Exception.__init__(self) diff --git a/test/test_test.py b/test/test_test.py index 36d77fd5f..7053bd730 100644 --- a/test/test_test.py +++ b/test/test_test.py @@ -44,12 +44,28 @@ class TestDaemon: def tearDownAll(self): self.d.shutdown() + def setUp(self): + self.d.clear_log() + + def get(self, spec): + return requests.get("http://localhost:%s/p/%s"%(self.d.port, spec)) + def test_info(self): assert tuple(self.d.info()["version"]) == version.IVERSION def test_logs(self): - rsp = requests.get("http://localhost:%s/p/202"%self.d.port) + rsp = self.get("202") assert len(self.d.log()) == 1 assert self.d.clear_log() assert len(self.d.log()) == 0 + def test_disconnect(self): + rsp = self.get("202:b@100k:d200") + assert len(rsp.content) < 200 + + def test_parserr(self): + rsp = self.get("400:msg,b:") + assert rsp.status_code == 800 + + +