[gtk-doc] scan: refactor testsuite to prepare for more tests
- From: Stefan Sauer <stefkost src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-doc] scan: refactor testsuite to prepare for more tests
- Date: Tue, 20 Nov 2018 18:36:54 +0000 (UTC)
commit 75eed8a453ae342e13c6d461196e52308a4189eb
Author: Stefan Sauer <ensonic users sf net>
Date: Tue Nov 20 10:31:39 2018 +0100
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.
tests/bugs/src/tester.h | 7 +----
tests/scan.py | 68 +++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 58 insertions(+), 17 deletions(-)
---
diff --git a/tests/bugs/src/tester.h b/tests/bugs/src/tester.h
index 24a94cd..1d06c71 100644
--- a/tests/bugs/src/tester.h
+++ b/tests/bugs/src/tester.h
@@ -333,13 +333,8 @@ const char * const * bug_624200a(void);
const char ** const bug_624200b(void);
-/* internal function and macro */
+/* internal function */
gchar *_bug_000000a (const gchar *name);
-#define _BUG_000000b (a) (a*a);
-
-#ifndef __GTK_DOC_IGNORE__
-extern int bug_512565(void);
-#endif
void (*bug_638330) (void *arg1,
const unsigned char *data,
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()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]