You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sphinx-autoapi/tests/test_integration.py

108 lines
3.0 KiB
Python

import json
import os
import shutil
import unittest
from mock import patch
from sphinx.application import Sphinx
class LanguageIntegrationTests(unittest.TestCase):
def _run_test(self, test_dir, test_file, test_string):
os.chdir('tests/{0}'.format(test_dir))
try:
app = Sphinx(
srcdir='.',
confdir='.',
outdir='_build/text',
doctreedir='_build/.doctrees',
buildername='text',
)
app.build(force_all=True)
with open(test_file) as fin:
text = fin.read().strip()
self.assertIn(test_string, text)
finally:
shutil.rmtree('_build')
os.chdir('../..')
class JavaScriptTests(LanguageIntegrationTests):
def _js_read(self, path):
return json.load(open('../fixtures/javascript.json'))
@patch('autoapi.mappers.javascript.JavaScriptSphinxMapper.read_file', _js_read)
def test_integration(self):
self._run_test(
'jsexample',
'_build/text/autoapi/Circle/index.txt',
'Creates an instance of Circle'
)
class GoTests(LanguageIntegrationTests):
def _go_read(self, path):
return json.load(open('../fixtures/go.json'))
@patch('autoapi.mappers.go.GoSphinxMapper.read_file', _go_read)
def test_integration(self):
self._run_test(
'goexample',
'_build/text/autoapi/main/index.txt',
'CopyFuncs produces a json-annotated array of Func objects'
)
class PythonTests(LanguageIntegrationTests):
def test_integration(self):
self._run_test(
'pyexample',
'_build/text/autoapi/example/index.txt',
'Compute the square root of x and return it'
)
class DotNetTests(LanguageIntegrationTests):
def _dotnet_read(self, path):
return json.load(open('../fixtures/dotnet.json'))
# Mock this because it's slow otherwise
def _dotnet_load(self, patterns, dir, ignore=[]):
data = self.read_file(path='inmem')
self.paths['inmem'] = data
@patch('autoapi.mappers.dotnet.DotNetSphinxMapper.load', _dotnet_load)
@patch('autoapi.mappers.dotnet.DotNetSphinxMapper.read_file', _dotnet_read)
def test_integration(self):
self._run_test(
'dotnetexample',
'_build/text/autoapi/Microsoft/AspNet/JsonPatch/Adapters/IObjectAdapter<TModel>/index.txt',
'Defines the operations that can be performed on a JSON patch document.'
)
class IntegrationTests(LanguageIntegrationTests):
def test_template_overrides(self):
self._run_test(
'templateexample',
'_build/text/autoapi/example/index.txt',
'This is a fuction template override'
)
class TOCTreeTests(LanguageIntegrationTests):
def test_toctree_overrides(self):
self._run_test(
'toctreeexample',
'_build/text/index.txt',
'AutoAPI Index'
)