Viewing file: test_pydoctor.py (6.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details.
""" Tests for L{twisted.python._pydoctor}. """ from twisted.python.reflect import requireModule from twisted.trial.unittest import TestCase
model = requireModule("pydoctor.model") pydoctorSkip = None TwistedSphinxInventory = object TwistedSystem = object if model is None: pydoctorSkip = "Pydoctor is not present." else: # We have a valid pydoctor. from twisted.python._pydoctor import TwistedSphinxInventory, TwistedSystem
class TwistedSystemTests(TestCase): """ Tests for L{TwistedSystem}. """
skip = pydoctorSkip
def test_initCustomSphinxInventory(self): """ After initialization it has a custom C{intersphinx} member. """ sut = TwistedSystem()
self.assertIsInstance(sut.intersphinx, TwistedSphinxInventory)
def test_privacyClassBaseTestPackage(self): """ The base I{twisted.test} package is visible to allow traversal to a few selected test API which is visible. """ sut = TwistedSystem() twistedPackage = model.Package( system=sut, name="twisted", parent=None, ) twistedTestPackage = model.Package( system=sut, name="test", parent=twistedPackage, )
result = sut.privacyClass(twistedTestPackage)
self.assertIs(result, model.PrivacyClass.VISIBLE)
def test_privacyClassProtoHelpers(self): """ The I{twisted.test.proto_helpers} module is visible. """ sut = TwistedSystem() twistedPackage = model.Package( system=sut, name="twisted", parent=None, ) twistedTestPackage = model.Package( system=sut, name="test", parent=twistedPackage, ) twistedProtoHelpersModule = model.Module( system=sut, name="proto_helpers", parent=twistedTestPackage, )
result = sut.privacyClass(twistedProtoHelpersModule)
self.assertIs(result, model.PrivacyClass.VISIBLE)
def test_privacyClassChildTestModule(self): """ Any child of the I{twisted.test} package is hidden. """ sut = TwistedSystem() twistedPackage = model.Package( system=sut, name="twisted", parent=None, ) twistedTestPackage = model.Package( system=sut, name="test", parent=twistedPackage, ) twistedAnyTestModule = model.Module( system=sut, name="other_child", parent=twistedTestPackage, )
result = sut.privacyClass(twistedAnyTestModule)
self.assertIs(result, model.PrivacyClass.HIDDEN)
def test_privacyClassPublicCode(self): """ Any child of the I{twisted} package has a privacy according to the general rules defined in pydoctor. """ sut = TwistedSystem() twistedPackage = model.Package( system=sut, name="twisted", parent=None, ) twistedSubProjectPackage = model.Package( system=sut, name="subproject", parent=twistedPackage, ) twistedSubProjectModule = model.Module( system=sut, name="other_child", parent=twistedSubProjectPackage, ) twistedPrivateModule = model.Module( system=sut, name="_private_child", parent=twistedSubProjectPackage, )
result = sut.privacyClass(twistedSubProjectPackage) self.assertIs(result, model.PrivacyClass.VISIBLE)
result = sut.privacyClass(twistedSubProjectModule) self.assertIs(result, model.PrivacyClass.VISIBLE)
result = sut.privacyClass(twistedPrivateModule) self.assertIs(result, model.PrivacyClass.PRIVATE)
class TwistedSphinxInventoryTests(TestCase): """ Tests for L{TwistedSphinxInventory}. """
skip = pydoctorSkip
def getInventoryWithZope(self): """ Initialized a pre-loaded inventory.
@return: A new inventory which already has a few I{zope.interface} inter sphinx links loaded. @rtype: L{TwistedSphinxInventory} """ inventory = TwistedSphinxInventory(logger=object(), project_name="Super Duper")
zopeBaseURL = "https://zope.tld" zopeAPIURL = "api.html#$" inventory._links.update( { "zope.interface.interfaces.IInterface": (zopeBaseURL, zopeAPIURL), "zope.interface.declarations.implementer": (zopeBaseURL, zopeAPIURL), } )
return inventory
def test_getLinkExistentInInterSphinx(self): """ Return the full URL based on pre-loaded inter sphinx objects. """ sut = self.getInventoryWithZope()
result = sut.getLink("zope.interface.interfaces.IInterface")
self.assertEqual( "https://zope.tld/api.html#zope.interface.interfaces.IInterface", result )
def test_getLinkZopeNonExistent(self): """ Any reference to I{zope.interface} which is not in the inter sphinx database returns L{None}. """ sut = self.getInventoryWithZope()
# Interface is at zope.interface.interfaces.IInterface so using the # short name will fail to find the url. result = sut.getLink("zope.interface.Interface") self.assertIsNone(result) # Any unknown reference returns None. result = sut.getLink("zope.interface.NoSuchReference") self.assertIsNone(result)
def test_getLinkZopeAdapterRegistry(self): """ I{zope.interface.adapter.AdapterRegistry} is a special case for which the link the narrative docs is returned as there is no API docs yet. """ sut = self.getInventoryWithZope()
result = sut.getLink("zope.interface.adapter.AdapterRegistry")
self.assertEqual("https://zope.tld/adapter.html", result)
|