[py-svn] r37196 - py/dist/py/doc

guido at codespeak.net guido at codespeak.net
Tue Jan 23 15:55:53 CET 2007


Author: guido
Date: Tue Jan 23 15:55:52 2007
New Revision: 37196

Modified:
   py/dist/py/doc/conftest.py
   py/dist/py/doc/test_conftest.py
Log:
Added textrole for links to apigen documentation.


Modified: py/dist/py/doc/conftest.py
==============================================================================
--- py/dist/py/doc/conftest.py	(original)
+++ py/dist/py/doc/conftest.py	Tue Jan 23 15:55:52 2007
@@ -1,6 +1,7 @@
 from __future__ import generators
 import py
 from py.__.misc import rest 
+from py.__.rest import directive
 
 Option = py.test.config.Option 
 option = py.test.config.addoptions("documentation check options", 
@@ -213,3 +214,27 @@
         if p.check(file=1): 
             return self.ReSTChecker(p, parent=self) 
 Directory = DocDirectory
+
+def resolve_linkrole(name, text):
+    if name == 'api':
+        if text == 'py':
+            return 'py', '../../apigen/api/index.html'
+        assert text.startswith('py.'), (
+            'api link "%s" does not point to the py package') % (text,)
+        dotted_name = text
+        if dotted_name.find('(') > -1:
+            dotted_name = dotted_name[:text.find('(')]
+        dotted_name = '.'.join(dotted_name.split('.')[1:]) # remove pkg root
+        return text, '../../apigen/api/%s.html' % (dotted_name,)
+    elif name == 'source':
+        assert text.startswith('py/'), ('source link "%s" does not point '
+                                        'to the py package') % (text,)
+        relpath = '/'.join(text.split('/')[1:])
+        if relpath.endswith('/') or not relpath:
+            relpath += 'index.html'
+        else:
+            relpath += '.html'
+        return text, '../../apigen/source/%s' % (relpath,)
+directive.register_linkrole('api', resolve_linkrole)
+directive.register_linkrole('source', resolve_linkrole)
+

Modified: py/dist/py/doc/test_conftest.py
==============================================================================
--- py/dist/py/doc/test_conftest.py	(original)
+++ py/dist/py/doc/test_conftest.py	Tue Jan 23 15:55:52 2007
@@ -55,3 +55,20 @@
     l2 = session.getitemoutcomepairs(py.test.Item.Skipped)
     assert len(l+l2) == 3
 
+def test_resolve_linkrole():
+    from py.__.doc.conftest import resolve_linkrole
+    assert resolve_linkrole('api', 'py.foo.bar') == (
+        'py.foo.bar', '../../apigen/api/foo.bar.html')
+    assert resolve_linkrole('api', 'py.foo.bar()') == (
+        'py.foo.bar()', '../../apigen/api/foo.bar.html')
+    assert resolve_linkrole('api', 'py') == (
+        'py', '../../apigen/api/index.html')
+    py.test.raises(AssertionError, 'resolve_linkrole("api", "foo.bar")')
+    assert resolve_linkrole('source', 'py/foo/bar.py') == (
+        'py/foo/bar.py', '../../apigen/source/foo/bar.py.html')
+    assert resolve_linkrole('source', 'py/foo/') == (
+        'py/foo/', '../../apigen/source/foo/index.html')
+    assert resolve_linkrole('source', 'py/') == (
+        'py/', '../../apigen/source/index.html')
+    py.test.raises(AssertionError, 'resolve_linkrole("source", "/foo/bar/")')
+



More information about the pytest-commit mailing list