diff options
author | Stefan Sauer <ensonic@users.sf.net> | 2018-11-20 10:31:39 +0100 |
---|---|---|
committer | Stefan Sauer <ensonic@users.sf.net> | 2018-11-20 10:53:56 +0100 |
commit | 75eed8a453ae342e13c6d461196e52308a4189eb (patch) | |
tree | 4bfb2af89d976db764fff4953e9c529d4a8139cb /tests/scan.py | |
parent | f4a67cb4afb86ae77b601eca70e78adb657b0f15 (diff) | |
download | gtk-doc-75eed8a453ae342e13c6d461196e52308a4189eb.tar.gz |
scan: refactor testsuite to prepare for more tests
Extract a base-class so that we can have test classes for each decl-type.
Remove 'tests' from the 'bugs' suite that we now cover in the unit-tests.
Diffstat (limited to 'tests/scan.py')
-rw-r--r-- | tests/scan.py | 68 |
1 files changed, 57 insertions, 11 deletions
diff --git a/tests/scan.py b/tests/scan.py index a58c9d2..fc78aa4 100644 --- a/tests/scan.py +++ b/tests/scan.py @@ -24,24 +24,35 @@ import unittest from gtkdoc import scan -class ScanHeaderContent(unittest.TestCase): +class ScanHeaderContetTestCase(unittest.TestCase): + """Baseclass for the header scanner tests.""" def setUp(self): self.decls = [] self.types = [] - self.options = argparse.Namespace(deprecated_guards='') + self.options = argparse.Namespace(deprecated_guards='', ignore_decorators='') def scanHeaderContent(self, content): return scan.ScanHeaderContent(content, self.decls, self.types, self.options) - def test_EmptyInput(self): - slist, doc_comments = self.scanHeaderContent([]) + def assertNoDeclFound(self, slist): self.assertEqual([], slist) - self.assertEqual({}, doc_comments) self.assertEqual([], self.decls) self.assertEqual([], self.types) + def assertNothingFound(self, slist, doc_comments): + self.assertEqual({}, doc_comments) + self.assertNoDeclFound(slist) + + +class ScanHeaderContent(ScanHeaderContetTestCase): + """Test generic scanner behaviour.""" + + def test_EmptyInput(self): + slist, doc_comments = self.scanHeaderContent([]) + self.assertNothingFound(slist, doc_comments) + def test_FindsDocComment(self): slist, doc_comments = self.scanHeaderContent([ '/** FooBar:', @@ -55,11 +66,9 @@ class ScanHeaderContent(unittest.TestCase): '/** FooBar:', ' */' ]) - self.assertEqual([], slist) - self.assertEqual([], self.decls) - self.assertEqual([], self.types) + self.assertNoDeclFound(slist) - # test /* < private_header > */ maker + # TODO: test /* < private_header > */ maker def test_SkipSymbolWithPreprocessor(self): slist, doc_comments = self.scanHeaderContent([ @@ -67,10 +76,47 @@ class ScanHeaderContent(unittest.TestCase): 'extern int bug_512565(void);' '#endif' ]) - self.assertEqual([], slist) - self.assertEqual([], self.decls) + self.assertNoDeclFound(slist) + + +# ENUM + + +# FUNCTION + + +class ScanHeaderContentMacros(ScanHeaderContetTestCase): + """Test parsing of macro declarations.""" + + def assertDecl(self, name, decl): + d = '<MACRO>\n<NAME>%s</NAME>\n%s</MACRO>\n' % (name, decl) + self.assertEqual([d], self.decls) self.assertEqual([], self.types) + def test_FindsMacroNumber(self): + slist, doc_comments = self.scanHeaderContent([ + '#define FOO 1' + ]) + self.assertEqual(['FOO'], slist) + self.assertDecl('FOO', '#define FOO 1') + + def test_FindsMacroExpression(self): + slist, doc_comments = self.scanHeaderContent([ + '#define FOO (1 << 1)' + ]) + self.assertEqual(['FOO'], slist) + self.assertDecl('FOO', '#define FOO (1 << 1)') + + # TODO: test for a few variants + def test_IgnoresInternalMacro(self): + slist, doc_comments = self.scanHeaderContent([ + '#define _BUG_000000b (a) (a*a)' + ]) + self.assertNoDeclFound(slist) + + +# STRUCT + if __name__ == '__main__': unittest.main() |