[Checkins] SVN: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/ Make the README.txt doctest run with a "real" testbrowser instance (at a higher

Benji York benji at zope.com
Mon Sep 17 08:47:52 EDT 2007


Log message for revision 79717:
  Make the README.txt doctest run with a "real" testbrowser instance (at a higher
  level, use --all); when those tests pass, the "real" should be ready for alpha
  

Changed:
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
  U   zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py

-=-
Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt	2007-09-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/README.txt	2007-09-17 12:47:51 UTC (rev 79717)
@@ -21,7 +21,7 @@
 
     >>> import zope.testbrowser.interfaces
     >>> from zope.interface.verify import verifyObject
-    >>> verifyObject(zope.testbrowser.interfaces.IBrowser, browser)
+    >>> zope.testbrowser.interfaces.IBrowser.providedBy(browser)
     True
 
 
@@ -30,31 +30,18 @@
 
 The contents of the current page are available:
 
-    >>> print browser.contents
-    <html>
-      <head>
-        <title>Simple Page</title>
-      </head>
-      <body>
-        <h1>Simple Page</h1>
-      </body>
-    </html>
-
-Making assertions about page contents is easy.
-
-    >>> '<h1>Simple Page</h1>' in browser.contents
-    True
-
-Utilizing the doctest facilities, it also possible to do:
-
     >>> browser.contents
     '...<h1>Simple Page</h1>...'
 
 Note: Unfortunately, ellipsis (...) cannot be used at the beginning of the
 output (this is a limitation of doctest).
 
+Making assertions about page contents is easy.
 
+    >>> '<h1>Simple Page</h1>' in browser.contents
+    True
 
+
 Checking for HTML
 -----------------
 

Modified: zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py
===================================================================
--- zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py	2007-09-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/real.py	2007-09-17 12:47:51 UTC (rev 79717)
@@ -6,14 +6,19 @@
 import socket
 import telnetlib
 import time
+import urlparse
 import zope.interface
 import zope.testbrowser.browser
 
 PROMPT = re.compile('repl\d?> ')
 
+class BrowserStateError(RuntimeError):
+    pass
+
 class Browser(zope.testbrowser.browser.SetattrErrorsMixin):
     zope.interface.implements(interfaces.IBrowser)
 
+    base = None
     raiseHttpErrors = True
     _counter = 0
     timeout = 60
@@ -79,6 +84,8 @@
         self.execute('tb_page_loaded = false;')
 
     def open(self, url, data=None):
+        if self.base is not None:
+            url = urlparse.urljoin(self.base, url)
         assert data is None
         self.start_timer()
         try:
@@ -96,8 +103,14 @@
 
     @property
     def title(self):
-        return self.execute('content.document.title')
+        if not self.isHtml:
+            raise BrowserStateError('not viewing HTML')
 
+        result = self.execute('content.document.title')
+        if result is '':
+            result = None
+        return result
+
     @property
     def contents(self):
         return self.execute('content.document.documentElement.innerHTML')
@@ -193,9 +206,9 @@
     def click(self):
         if self._browser_counter != self.browser._counter:
             raise interfaces.ExpiredError
-        self.browser._start_timer()
+        self.browser.start_timer()
         self.browser._follow_link(self.token)
-        self.browser._stop_timer()
+        self.browser.stop_timer()
         self.browser._changed()
 
     @property
@@ -240,9 +253,9 @@
     def click(self):
         if self._browser_counter != self.browser._counter:
             raise interfaces.ExpiredError
-        self.browser._start_timer()
+        self.browser.start_timer()
         self.browser._follow_link(self.token)
-        self.browser._stop_timer()
+        self.browser.stop_timer()
         self.browser._changed()
 
     @property

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-17 12:41:28 UTC (rev 79716)
+++ zope.testbrowser/branches/benji-zope.testbrowser.real/src/zope/testbrowser/tests.py	2007-09-17 12:47:51 UTC (rev 79717)
@@ -33,6 +33,7 @@
 import urllib
 import urllib2
 import zope.testbrowser.browser
+import zope.testbrowser.real
 
 try:
     from zope.app.testing import functional
@@ -459,6 +460,13 @@
     urllib.urlretrieve('http://localhost:%d/' % test.globs['TEST_PORT'])
     test.globs['web_server_thread'].join()
 
+def setUpReal(test):
+    test.globs['Browser'] = zope.testbrowser.real.Browser
+    setUpServer(test)
+
+def tearDownReal(test):
+    tearDownServer(test)
+
 def setUpReadme(test):
     test.globs['Browser'] = zope.testbrowser.browser.Browser
     setUpServer(test)
@@ -482,8 +490,8 @@
     headers = doctest.DocFileSuite('headers.txt', optionflags=flags,
         setUp=setUpHeaders, tearDown=tearDownHeaders)
 
-    real = doctest.DocFileSuite('real.txt', optionflags=flags,
-        checker=checker, setUp=setUpReadme, tearDown=tearDownReadme)
+    real = doctest.DocFileSuite('README.txt', optionflags=flags,
+        checker=checker, setUp=setUpReal, tearDown=tearDownReal)
     real.level = 3
 
     screen_shots = doctest.DocFileSuite('screen-shots.txt', optionflags=flags)



More information about the Checkins mailing list