[Checkins]
SVN: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/
- add a local web server so we don't have to depend on
network access for
Benji York
benji at zope.com
Sat Sep 15 09:36:54 EDT 2007
Log message for revision 79674:
- add a local web server so we don't have to depend on network access for
real.txt
I /really/ want to rework the tests so the vast majority can be common between
the Zope 3 testbrowser, the "over-the-wire" testbrowser, and now the "real"
testbrowser. It should be doable while maintaining, or enhancing, the
"documentation" quality of the doctests.
Changed:
U zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.txt
U zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py
-=-
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.txt
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.txt 2007-09-15 12:57:59 UTC (rev 79673)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.txt 2007-09-15 13:36:53 UTC (rev 79674)
@@ -2,34 +2,35 @@
>>> browser = Browser()
- >>> browser.open('http://images.google.com/ncr')
- >>> browser.url
- 'http://images.google.com/'
- >>> browser.open('http://google.com/ncr')
- >>> browser.url
- 'http://www.google.com/'
+ >>> base_url = 'http://localhost:%s/' % TEST_PORT
+ >>> browser.open(base_url)
+ >>> browser.url == base_url
+ True
+ >>> browser.open(base_url + 'simple.html')
+
>>> browser.isHtml
True
>>> browser.title
- 'Google'
+ 'Simple Page'
>>> browser.contents
'<head>...</body>'
+ >>> url = browser.url
>>> browser.reload()
- >>> browser.url
- 'http://www.google.com/'
+ >>> browser.url == url
+ True
+
>>> browser.goBack()
- >>> browser.url
- 'http://images.google.com/'
+ >>> browser.url == base_url
+ True
- >>> browser.getLink('Preferences')
- <Link text='Preferences' url='http://images.google.com/preferences?hl=en'>
+ >>> browser.open(base_url + 'navigate.html')
- >>> browser.getLink(url='http://news.google.com/')
- <Link text='News' url='http://news.google.com/nwshp?tab=in'>
+ >>> browser.getLink('Link Text')
+ <Link text='Link Text' url='http://localhost:.../navigate.html?message=By+Link+Text'>
>>> browser.getLink(url='http://')
Traceback (most recent call last):
@@ -37,4 +38,5 @@
AmbiguityError: url 'http://'
>>> browser.getLink(url='http://', index=3)
- <Link text='Maps' url='http://maps.google.com/maps?tab=il'>
+ <Link text='By Anchor Name' url='http://localhost:.../navigate.html?message=By+Name'>
+
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py 2007-09-15 12:57:59 UTC (rev 79673)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py 2007-09-15 13:36:53 UTC (rev 79674)
@@ -21,15 +21,36 @@
from zope.app.testing.functional import FunctionalDocFileSuite
from zope.testbrowser import browser
from zope.testing import renormalizing, doctest
+import BaseHTTPServer
import httplib
import mechanize
-import os
+import os.path
+import random
import re
+import string
+import threading
import unittest
-import unittest
+import urllib
import urllib2
+web_server_base_path = os.path.join(os.path.split(__file__)[0], 'ftests')
+class TestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+
+ def do_GET(self):
+ try:
+ f = open(web_server_base_path + self.path)
+ except:
+ self.send_response(500)
+ return
+
+ self.send_response(200)
+ self.send_header('Content-type', 'text/html')
+ self.end_headers()
+ self.wfile.write(f.read())
+ f.close()
+
+
def set_next_response(body, headers=None, status='200', reason='OK'):
global next_response_body
global next_response_headers
@@ -380,8 +401,29 @@
os.path.join(os.path.split(__file__)[0], 'ftests/ftesting.zcml'),
__name__, 'TestBrowserLayer', allow_teardown=True)
+server_stop = False
+def serve_requests(server):
+ global server_stopped
+ while not server_stop:
+ server.handle_request()
+
+def setUpReadme(test):
+ port = random.randint(20000,30000)
+ test.globs['TEST_PORT'] = str(port)
+ server = BaseHTTPServer.HTTPServer(('localhost', port), TestHandler)
+ thread = threading.Thread(target=serve_requests, args=[server])
+ thread.setDaemon(True)
+ thread.start()
+ test.globs['web_server_thread'] = thread
+
+def tearDownReadme(test):
+ global server_stop
+ server_stop = True
+ # make a request, so the last call to `handle_one_request` will return
+ urllib.urlretrieve('http://localhost:%s/' % test.globs['TEST_PORT'])
+ test.globs['web_server_thread'].join()
+
def test_suite():
- from zope.testing import doctest
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
readme = FunctionalDocFileSuite('README.txt', optionflags=flags,
@@ -391,7 +433,8 @@
wire = doctest.DocFileSuite('over_the_wire.txt', optionflags=flags)
wire.level = 2
- real = doctest.DocFileSuite('real.txt', optionflags=flags)
+ real = doctest.DocFileSuite('real.txt', optionflags=flags,
+ checker=checker, setUp=setUpReadme, tearDown=tearDownReadme)
real.level = 3
screen_shots = doctest.DocFileSuite('screen-shots.txt', optionflags=flags)
@@ -402,4 +445,3 @@
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
-
More information about the Checkins
mailing list