1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-24 06:59:52 +01:00

enable bulk doctest testing via nosetests --with-doctest

as well as individual doctests
andd utils.enable_doctests() func which checks if executing
app is nosetests (is there a better a way?)
This commit is contained in:
Ilya Kreymer 2014-01-22 15:28:01 -08:00
parent 7722014a96
commit 2d0cb5745d
9 changed files with 51 additions and 31 deletions

View File

@ -138,8 +138,9 @@ class ReferRedirect:
return WbResponse.redir_response(final_url) return WbResponse.redir_response(final_url)
if __name__ == "__main__":
import doctest import utils
if __name__ == "__main__" or utils.enable_doctests():
def test_redir(matchHost, request_uri, referrer): def test_redir(matchHost, request_uri, referrer):
env = {'REL_REQUEST_URI': request_uri, 'HTTP_REFERER': referrer} env = {'REL_REQUEST_URI': request_uri, 'HTTP_REFERER': referrer}
@ -153,6 +154,7 @@ if __name__ == "__main__":
return rep.status_headers.getHeader('Location') return rep.status_headers.getHeader('Location')
import doctest
doctest.testmod() doctest.testmod()

View File

@ -372,8 +372,8 @@ class ChunkedLineReader(LineReader):
#================================================================= #=================================================================
if __name__ == "__main__": import utils
import doctest if __name__ == "__main__" or utils.enable_doctests():
import os import os
import pprint import pprint
@ -385,5 +385,6 @@ if __name__ == "__main__":
archive = testloader.load(path, offset, length) archive = testloader.load(path, offset, length)
pprint.pprint((archive.type, archive.rec_headers, archive.status_headers)) pprint.pprint((archive.type, archive.rec_headers, archive.status_headers))
import doctest
doctest.testmod() doctest.testmod()

View File

@ -115,8 +115,8 @@ class HeaderRewriter:
return (newHeaders, removedHeaderDict) return (newHeaders, removedHeaderDict)
if __name__ == "__main__": import utils
import doctest if __name__ == "__main__" or utils.enable_doctests():
import os import os
import pprint import pprint
import url_rewriter import url_rewriter
@ -129,5 +129,6 @@ if __name__ == "__main__":
rewritten = headerrewriter.rewrite(StatusAndHeaders(status, headers), urlrewriter) rewritten = headerrewriter.rewrite(StatusAndHeaders(status, headers), urlrewriter)
return vars(rewritten) return vars(rewritten)
import doctest
doctest.testmod() doctest.testmod()

View File

@ -309,8 +309,8 @@ class WBHtml(HTMLParser):
#print #print
#parser.feed(instr) #parser.feed(instr)
#print #print
if __name__ == "__main__": import utils
import doctest if __name__ == "__main__" or utils.enable_doctests():
url_rewriter = ArchivalUrlRewriter('/20131226101010/http://example.com/some/path/index.html', '/web/') url_rewriter = ArchivalUrlRewriter('/20131226101010/http://example.com/some/path/index.html', '/web/')
@ -318,6 +318,7 @@ if __name__ == "__main__":
parser = WBHtml(url_rewriter, headInsert = headInsert) parser = WBHtml(url_rewriter, headInsert = headInsert)
print parser.rewrite(data) + parser.close() print parser.rewrite(data) + parser.close()
import doctest
doctest.testmod() doctest.testmod()

View File

@ -9,16 +9,15 @@ from wbarchivalurl import ArchivalUrl
class RemoteCDXServer: class RemoteCDXServer:
""" """
>>> x = cdxserver.load('example.com', parse_cdx = True, limit = '2') >>> x = cdxserver.load('example.com', parse_cdx = True, limit = '2')
>>> pprint(x[0]) >>> pprint(x[0].items())
{'digest': 'HT2DYGA5UKZCPBSFVCV3JOBXGW2G5UUA', [('urlkey', 'com,example)/'),
'length': '1792', ('timestamp', '20020120142510'),
'mimetype': 'text/html', ('original', 'http://example.com:80/'),
'original': 'http://example.com:80/', ('mimetype', 'text/html'),
'statuscode': '200', ('statuscode', '200'),
'timestamp': '20020120142510', ('digest', 'HT2DYGA5UKZCPBSFVCV3JOBXGW2G5UUA'),
'urlkey': 'com,example)/'} ('length', '1792')]
"""
"""
def __init__(self, serverUrl, cookie = None): def __init__(self, serverUrl, cookie = None):
self.serverUrl = serverUrl self.serverUrl = serverUrl
@ -124,11 +123,11 @@ class CDXCaptureResult(OrderedDict):
# Testing # Testing
import utils
if __name__ == "__main__": if __name__ == "__main__" or utils.enable_doctests():
import doctest
from pprint import pprint from pprint import pprint
cdxserver = RemoteCDXServer('http://web.archive.org/cdx/search/cdx') cdxserver = RemoteCDXServer('http://web.archive.org/cdx/search/cdx')
import doctest
doctest.testmod() doctest.testmod()

View File

@ -214,10 +214,8 @@ class CSSRewriter(RegexRewriter):
(CSSRewriter.CSS_IMPORT_NO_URL_REGEX, RegexRewriter.archivalRewrite(rewriter), 1), (CSSRewriter.CSS_IMPORT_NO_URL_REGEX, RegexRewriter.archivalRewrite(rewriter), 1),
] ]
import utils
if __name__ == "__main__": if __name__ == "__main__" or utils.enable_doctests():
import doctest
arcrw = ArchivalUrlRewriter('/20131010im_/http://example.com/', '/web/') arcrw = ArchivalUrlRewriter('/20131010im_/http://example.com/', '/web/')
def test_js(string, extra = []): def test_js(string, extra = []):
@ -230,7 +228,7 @@ if __name__ == "__main__":
return CSSRewriter(arcrw).rewrite(string) return CSSRewriter(arcrw).rewrite(string)
import doctest
doctest.testmod() doctest.testmod()

View File

@ -196,7 +196,7 @@ class ReplayHandler(object):
#================================================================= #=================================================================
class RewritingReplayHandler(ReplayHandler): class RewritingReplayHandler(ReplayHandler):
def __init__(self, resolvers, archiveloader, headInsert = None, headerRewriter = None, redir_to_exact = True): def __init__(self, resolvers, archiveloader, headInsert = None, headerRewriter = None, redir_to_exact = True, buffer_response = False):
ReplayHandler.__init__(self, resolvers, archiveloader) ReplayHandler.__init__(self, resolvers, archiveloader)
self.headInsert = headInsert self.headInsert = headInsert
if not headerRewriter: if not headerRewriter:
@ -205,7 +205,7 @@ class RewritingReplayHandler(ReplayHandler):
self.redir_to_exact = redir_to_exact self.redir_to_exact = redir_to_exact
# buffer or stream rewritten response # buffer or stream rewritten response
self.buffer_response = False self.buffer_response = buffer_response
def _textContentType(self, contentType): def _textContentType(self, contentType):

View File

@ -3,6 +3,7 @@ import urlparse
from wbarchivalurl import ArchivalUrl from wbarchivalurl import ArchivalUrl
class ArchivalUrlRewriter: class ArchivalUrlRewriter:
""" """
>>> test_rewrite('other.html', '/20131010/http://example.com/path/page.html', 'https://web.archive.org/web/') >>> test_rewrite('other.html', '/20131010/http://example.com/path/page.html', 'https://web.archive.org/web/')
@ -112,11 +113,15 @@ class ArchivalUrlRewriter:
return url return url
if __name__ == "__main__":
import doctest
import utils
if __name__ == "__main__" or utils.enable_doctests():
def test_rewrite(rel_url, base_url, prefix, mod = None): def test_rewrite(rel_url, base_url, prefix, mod = None):
rewriter = ArchivalUrlRewriter(base_url, prefix) rewriter = ArchivalUrlRewriter(base_url, prefix)
return rewriter.rewrite(rel_url, mod) return rewriter.rewrite(rel_url, mod)
import doctest
doctest.testmod() doctest.testmod()

View File

@ -131,7 +131,20 @@ def rel_request_uri(environ, include_query=1):
return url return url
if __name__ == "__main__":
#============================================
# Support for bulk doctest testing via nose
# nosetests --with-doctest
import sys
is_in_nose = sys.argv[0].endswith('nosetests')
def enable_doctests():
return is_in_nose
#============================================
if __name__ == "__main__" or enable_doctests():
import doctest import doctest
doctest.testmod() doctest.testmod()