Skip to content

Commit

Permalink
Fix tests for 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jakobandersen committed Jan 23, 2019
1 parent e676398 commit 22a8880
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
4 changes: 1 addition & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
language: python

env:
- SPHINX_VERSION=1.8.3 TRAVIS_CI=True
- SPHINX_VERSION=2.0.0 TRAVIS_CI=True

python:
- "2.7"
- "3.4"
- "3.5"
- "3.6"

Expand Down
11 changes: 10 additions & 1 deletion breathe/renderer/sphinxrenderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,18 @@ def __exit__(self, et, ev, bt):
class DoxyCPPClassObject(cpp.CPPClassObject):
__bases = []

@property
def display_object_type(self):
# override because we also have the 'interface' type
assert self.objtype in ('class', 'struct', 'interface')
# TODO: remove this if it should be rendered as 'interface' as well
if self.objtype == 'interface':
return 'class'
return self.objtype

def parse_definition(self, parser):
# add the base classes
ast = parser.parse_declaration("class")
ast = parser.parse_declaration("class", "class")

bases = []

Expand Down
33 changes: 33 additions & 0 deletions tests/test_renderer.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Renderer tests

import sphinx.addnodes
import sphinx.environment
from breathe.node_factory import create_node_factory
from breathe.parser.compound import linkedTextTypeSub, memberdefTypeSub, paramTypeSub, MixedContainer
Expand All @@ -9,6 +10,7 @@
from sphinx.config import Config
from sphinx.domains.cpp import CPPDomain
from sphinx.domains.c import CDomain
from sphinx.util import docutils

from nose.tools import eq_

Expand Down Expand Up @@ -65,6 +67,7 @@ def create_domains(self, env):

class MockApp(object):
def __init__(self):
self.project = None
self.doctreedir = None
self.srcdir = None
self.config = Config()
Expand All @@ -75,6 +78,10 @@ def __init__(self):
self.config.add('cpp_index_common_prefix', [], 'env', ())
self.registry = MockRegistry()

def add_node(self, node):
if not docutils.is_node_registered(node):
docutils.register_node(node)


class MockState:
def __init__(self):
Expand Down Expand Up @@ -250,6 +257,8 @@ def render(member_def, domain=None, show_define_initializer=False):


def test_render_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void foo', argsstring='(int)', virt='non-virtual',
param=[TestParam(type_=TestLinkedText(content_=[TestMixedContainer(value=u'int')]))])
signature = find_node(render(member_def), 'desc_signature')
Expand All @@ -262,18 +271,24 @@ def test_render_func():


def test_render_typedef():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='typedef', definition='typedef int foo')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext() == 'typedef int foo'


def test_render_c_typedef():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='typedef', definition='typedef unsigned int bar')
signature = find_node(render(member_def, domain='c'), 'desc_signature')
eq_(signature.astext(), 'typedef unsigned int bar')


def test_render_c_function_typedef():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='typedef', definition='typedef void* (*voidFuncPtr)(float, int)')
signature = find_node(render(member_def, domain='c'), 'desc_signature')
assert signature.astext().startswith('typedef void*')
Expand All @@ -284,53 +299,69 @@ def test_render_c_function_typedef():


def test_render_using_alias():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='typedef', definition='using foo = int')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext() == 'using foo = int'


def test_render_const_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void f', argsstring='() const',
virt='non-virtual', const='yes')
signature = find_node(render(member_def), 'desc_signature')
assert '_CPPv2NK1fEv' in signature['ids']


def test_render_lvalue_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void f', argsstring='()',
virt='non-virtual', refqual='lvalue')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext().endswith('&')


def test_render_rvalue_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void f', argsstring='()',
virt='non-virtual', refqual='rvalue')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext().endswith('&&')


def test_render_const_lvalue_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void f', argsstring='()',
virt='non-virtual', const='yes', refqual='lvalue')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext().endswith('const &')


def test_render_const_rvalue_func():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='function', definition='void f', argsstring='()',
virt='non-virtual', const='yes', refqual='rvalue')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext().endswith('const &&')


def test_render_variable_initializer():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='variable', definition='const int EOF', initializer=TestMixedContainer(value=u'= -1'))
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext() == 'const int EOF = -1'


def test_render_define_initializer():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='define', name='MAX_LENGTH',
initializer=TestLinkedText(content_=[TestMixedContainer(value=u'100')]))
signature_w_initializer = find_node(render(member_def, show_define_initializer=True), 'desc_signature')
Expand All @@ -344,6 +375,8 @@ def test_render_define_initializer():


def test_render_define_no_initializer():
app = MockApp()
sphinx.addnodes.setup(app)
member_def = TestMemberDef(kind='define', name='USE_MILK')
signature = find_node(render(member_def), 'desc_signature')
assert signature.astext() == 'USE_MILK'

0 comments on commit 22a8880

Please sign in to comment.