[py-svn] r36547 - in py/dist/py/apigen: . testing

guido at codespeak.net guido at codespeak.net
Fri Jan 12 12:01:02 CET 2007


Author: guido
Date: Fri Jan 12 12:01:00 2007
New Revision: 36547

Added:
   py/dist/py/apigen/conftest.py
Modified:
   py/dist/py/apigen/htmlgen.py
   py/dist/py/apigen/testing/test_apigen_example.py
Log:
Testing + fixed class page generation (very simple still), added optional web
(XHTML validity) testing.


Added: py/dist/py/apigen/conftest.py
==============================================================================
--- (empty file)
+++ py/dist/py/apigen/conftest.py	Fri Jan 12 12:01:00 2007
@@ -0,0 +1,10 @@
+import py
+
+Option = py.test.Config.Option
+option = py.test.Config.addoptions("apigen test options",
+        Option('', '--webcheck',
+               action="store_true", dest="webcheck", default=False,
+               help="run XHTML validation tests"
+        ),
+)
+

Modified: py/dist/py/apigen/htmlgen.py
==============================================================================
--- py/dist/py/apigen/htmlgen.py	(original)
+++ py/dist/py/apigen/htmlgen.py	Fri Jan 12 12:01:00 2007
@@ -61,7 +61,7 @@
 def build_class_view(linker, dsa, dotted_name):
     cls = dsa.get_obj(dotted_name)
     docstring = cls.__doc__
-    bases = dsa.get_possible_base_classes(dotted_name)
+    bases = [str(b) for b in dsa.get_possible_base_classes(dotted_name)]
     methods = dsa.get_class_methods(dotted_name)
     snippet = H.ClassDescription(
         # XXX bases HTML
@@ -69,8 +69,8 @@
         H.Docstring(docstring),
     )
     for method in methods:
-        # XXX perhaps we should pass in a 
-        snippet += build_short_method_view(linker, dsa, method.name)
+        snippet += build_short_method_view(linker, dsa, '%s.%s' % (dotted_name,
+                                                                   method))
     return snippet
 
 def build_method_view(linker, dsa, dotted_name):

Modified: py/dist/py/apigen/testing/test_apigen_example.py
==============================================================================
--- py/dist/py/apigen/testing/test_apigen_example.py	(original)
+++ py/dist/py/apigen/testing/test_apigen_example.py	Fri Jan 12 12:01:00 2007
@@ -5,6 +5,8 @@
 from py.__.apigen.tracer.docstorage import DocStorage, DocStorageAccessor
 from py.__.apigen.project import Project
 from xml.dom.minidom import parseString
+from py.__.test.web import webcheck
+from py.__.apigen.conftest import option
 
 def setup_fs_project():
     temp = py.test.ensuretemp('apigen_example')
@@ -12,10 +14,19 @@
         def func(arg1):
             "docstring"
     """))
+    temp.ensure('pkg/someclass.py').write(py.code.Source("""
+        class SomeClass(object):
+            " docstring someclass "
+            def __init__(self, somevar):
+                self.somevar = somevar
+            def get_somevar(self):
+                return self.somevar
+    """))
     temp.ensure("pkg/__init__.py").write(py.code.Source("""
         from py.initpkg import initpkg
         initpkg(__name__, exportdefs = {
-            'pkg.sub.func': ("./func.py", "func")
+            'pkg.sub.func': ("./func.py", "func"),
+            'pkg.SomeClass': ('./someclass.py', 'SomeClass'),
         })
     """))
     return temp, 'pkg'
@@ -41,7 +52,6 @@
         snippet = build_full_method_view(self.linker, self.dsa, 'pkg.sub.func')
         html = snippet.unicode()
         print html
-        # XXX (x)html validity testing would be nice...
         parseString(html)
 
     def test_build_method_api_pages(self):
@@ -50,4 +60,14 @@
                                ['pkg.sub.func'])
         funcfile = base.join('api/pkg.sub.func.html')
         assert funcfile.check()
+        html = funcfile.read()
+        parseString(html)
+        if option.webcheck:
+            webcheck.check_html(html)
+
+    def test_build_class_view(self):
+        snippet = build_class_view(self.linker, self.dsa, 'pkg.SomeClass')
+        html = snippet.unicode()
+        print html
+        parseString(html)
 



More information about the pytest-commit mailing list