[py-svn] r32910 - in py/branch/apigen/py/test/tracer: . testing

fijal at codespeak.net fijal at codespeak.net
Thu Oct 5 14:19:34 CEST 2006


Author: fijal
Date: Thu Oct  5 14:19:12 2006
New Revision: 32910

Added:
   py/branch/apigen/py/test/tracer/genrest.py   (contents, props changed)
Modified:
   py/branch/apigen/py/test/tracer/description.py
   py/branch/apigen/py/test/tracer/docstorage.py
   py/branch/apigen/py/test/tracer/testing/test_docgen.py
Log:
First version of rest generator. Intermediate checkin (battery dying), Need rest fixes and test for that.


Modified: py/branch/apigen/py/test/tracer/description.py
==============================================================================
--- py/branch/apigen/py/test/tracer/description.py	(original)
+++ py/branch/apigen/py/test/tracer/description.py	Thu Oct  5 14:19:12 2006
@@ -7,6 +7,9 @@
         self.filename = filename
         self.lineno = lineno
         self.source = source
+    
+    def get_tuple(self):
+        return self.filename, self.lineno, self.source
 
 #class __extend__(FunctionDesc):
 def consider_call(self, inputcells):

Modified: py/branch/apigen/py/test/tracer/docstorage.py
==============================================================================
--- py/branch/apigen/py/test/tracer/docstorage.py	(original)
+++ py/branch/apigen/py/test/tracer/docstorage.py	Thu Oct  5 14:19:12 2006
@@ -49,6 +49,7 @@
         return (key, desc)
     
     def from_pkg(self, module):
+        self.module = module
         self.from_dict(module.__package__.__dict__)
         return self
 
@@ -75,3 +76,15 @@
     def get_function_callpoints(self, name):
         # return list of tuple (filename, fileline, line)
         return self.ds.descs[name].call_sites
+
+    def get_module_info(self):
+        module = getattr(self.ds, 'module', None)
+        if module is None:
+            return "Lack of module info"
+        try:
+            retval = module.__doc__ or "*undocumented*"
+            retval = module.__package__.description
+            retval = module.__package__.long_description
+        except AttributeError:
+            pass
+        return retval

Added: py/branch/apigen/py/test/tracer/genrest.py
==============================================================================
--- (empty file)
+++ py/branch/apigen/py/test/tracer/genrest.py	Thu Oct  5 14:19:12 2006
@@ -0,0 +1,36 @@
+
+""" Generating ReST output (raw, not python)
+out of data that we know about function calls
+"""
+
+import sys
+
+from py.__.test.tracer.docstorage import DocStorageAccessor
+
+class RestGen(object):
+    def __init__(self, ds, output=sys.stdout):
+        self.dsa = DocStorageAccessor(ds)
+        self.output = output
+    
+    def writeline(self, data=""):
+        self.output.write(data + "\n")
+    
+    def write(self):
+        self.writeline("=======")
+        self.writeline(self.dsa.get_module_info())
+        self.writeline("=======")
+        self.writeline()
+        self.writeline("Functions exported:")
+        self.writeline("===================")
+        for key in self.dsa.get_names():
+            self.writeline()
+            self.writeline("%s description:" % key)
+            self.writeline("-------")
+            self.writeline(self.dsa.get_function_doc(key))
+            args = self.dsa.get_function_args(key)
+            arg_str = "(%s)" % (",".join([str(i) for i in args]))
+            self.writeline("Types of call: %s" % arg_str)
+            self.writeline()
+            self.writeline("Call places:")
+            for call_site in self.dsa.get_function_callpoints(key):
+                self.writeline("File %s:%s\n%s" % call_site.get_tuple())

Modified: py/branch/apigen/py/test/tracer/testing/test_docgen.py
==============================================================================
--- py/branch/apigen/py/test/tracer/testing/test_docgen.py	(original)
+++ py/branch/apigen/py/test/tracer/testing/test_docgen.py	Thu Oct  5 14:19:12 2006
@@ -32,7 +32,10 @@
     assert isinstance(inputcells[2], model.SomeObject)
     cs = desc.call_sites
     assert len(cs) == 2
-    assert cs[0].filename == __file__
+    f_name = __file__
+    if f_name.endswith('.pyc'):
+        f_name = f_name[:-1]
+    assert cs[0].filename == f_name
     assert cs[0].lineno == test_basic.func_code.co_firstlineno + 5
-    assert cs[1].filename == __file__
+    assert cs[1].filename == f_name
     assert cs[1].lineno == test_basic.func_code.co_firstlineno + 6



More information about the pytest-commit mailing list