def test_generate_empty_functional(): """ Functional test for index generation of empty API. Header is plain text while content is compressed. """ project_name = "some-name" log = [] logger = lambda section, message, thresh=0: log.append( (section, message, thresh)) sut = sphinx.SphinxInventory(logger=logger, project_name=project_name) output = PersistentStringIO() sut._openFileForWriting = lambda path: closing(output) sut.generate(subjects=[], basepath="base-path") expected_log = [ ("sphinx", "Generating objects inventory at base-path/objects.inv", 0) ] assert expected_log == log expected_ouput = """# Sphinx inventory version 2 # Project: some-name # Version: 2.0 # The rest of this file is compressed with zlib. x\x9c\x03\x00\x00\x00\x00\x01""" assert expected_ouput == output.getvalue()
def test_getLink_not_found(): """ Return None if link does not exists. """ sut = sphinx.SphinxInventory(logger=object()) assert None is sut.getLink('no.such.name')
def test_getLink_self_anchor(): """ Return the link with anchor as target name when link end with $. """ sut = sphinx.SphinxInventory(logger=object()) sut._links['some.name'] = ('http://base.tld', 'some/url.php#$') assert 'http://base.tld/some/url.php#some.name' == sut.getLink('some.name')
def test_getLink_found(): """ Return the link from internal state. """ sut = sphinx.SphinxInventory(logger=object()) sut._links['some.name'] = ('http://base.tld', 'some/url.php') assert 'http://base.tld/some/url.php' == sut.getLink('some.name')
def test_parseInventory_empty(): """ Return empty dict for empty input. """ sut = sphinx.SphinxInventory(logger=object()) result = sut._parseInventory('http://base.tld', '') assert {} == result
def test_parseInventory_single_line(): """ Return a dict with a single member. """ sut = sphinx.SphinxInventory(logger=object()) result = sut._parseInventory( 'http://base.tld', 'some.attr py:attr -1 some.html De scription') assert {'some.attr': ('http://base.tld', 'some.html')} == result
def test_initialization(): """ Is initialized with logger and project name. """ logger = object() name = object() sut = sphinx.SphinxInventory(logger=logger, project_name=name) assert logger is sut.info assert name is sut.project_name
def test_getPayload_empty(): """ Return empty string. """ sut = sphinx.SphinxInventory(logger=object()) content = b"""# Sphinx inventory version 2 # Project: some-name # Version: 2.0 # The rest of this file is compressed with zlib. x\x9c\x03\x00\x00\x00\x00\x01""" result = sut._getPayload('http://base.ignore', content) assert '' == result
def test_getPayload_content(): """ Return content as string. """ payload = u"first_line\nsecond line\nit's a snake: \U0001F40D" sut = sphinx.SphinxInventory(logger=object()) content = b"""# Ignored line # Project: some-name # Version: 2.0 # commented line. %s""" % (zlib.compress(payload.encode('utf-8')), ) result = sut._getPayload('http://base.ignore', content) assert payload == result
def test_update_functional(): """ Functional test for updating from an empty inventory. """ payload = (b'some.module1 py:module -1 module1.html -\n' b'other.module2 py:module 0 module2.html Other description\n') sut = sphinx.SphinxInventory(logger=object()) # Patch URL loader to avoid hitting the system. content = b"""# Sphinx inventory version 2 # Project: some-name # Version: 2.0 # The rest of this file is compressed with zlib. %s""" % (zlib.compress(payload), ) url = 'http://some.url/api/objects.inv' sut.update(sphinx.StubCache({url: content}), url) assert 'http://some.url/api/module1.html' == sut.getLink('some.module1') assert 'http://some.url/api/module2.html' == sut.getLink('other.module2')
def make_SphinxInventory(logger=object()): """ Return a SphinxInventory. """ return sphinx.SphinxInventory(logger=logger, project_name="project_name")
def inv_reader_nolog() -> sphinx.SphinxInventory: return sphinx.SphinxInventory(logger=PydoctorNoLogger())