[gtk-doc] mkdb: add test for the section block
- From: Stefan Sauer <stefkost src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-doc] mkdb: add test for the section block
- Date: Mon, 8 Apr 2019 19:55:49 +0000 (UTC)
commit f0e7d623c9af948f54c505c5c8bbc461a7998571
Author: Stefan Sauer <ensonic users sf net>
Date: Mon Apr 8 21:53:35 2019 +0200
mkdb: add test for the section block
Also refactor the test suites a bit before we copy this more often.
gtkdoc/mkdb.py | 2 ++
tests/mkdb.py | 51 +++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 45 insertions(+), 8 deletions(-)
---
diff --git a/gtkdoc/mkdb.py b/gtkdoc/mkdb.py
index 4f90f50..fff9de6 100644
--- a/gtkdoc/mkdb.py
+++ b/gtkdoc/mkdb.py
@@ -3950,6 +3950,8 @@ def ParseCommentBlockSegments(symbol, segments, params, line_number=0, ifile='')
SourceSymbolSourceFile[key] = ifile
SourceSymbolSourceLine[key] = line_number
+ # TODO(ensonic): we need to track these somehow and output the files
+ # later, see comment in Run()
section_id = SourceSymbolDocs.get(real_symbol + ":section_id")
if section_id and section_id.strip() != '':
# Remove trailing blanks and use as is
diff --git a/tests/mkdb.py b/tests/mkdb.py
index 7ee4873..9af1803 100755
--- a/tests/mkdb.py
+++ b/tests/mkdb.py
@@ -24,10 +24,15 @@ import unittest
from gtkdoc import mkdb
-class ScanSourceContent(unittest.TestCase):
+class ScanSourceContentTestCase(unittest.TestCase):
+ """Baseclass for the source scanner tests."""
def setUp(self):
mkdb.MODULE = 'test'
+ mkdb.SymbolDocs = {}
+
+
+class ScanSourceContent(ScanSourceContentTestCase):
def test_EmptyInput(self):
blocks = mkdb.ScanSourceContent([])
@@ -47,10 +52,7 @@ class ScanSourceContent(unittest.TestCase):
self.assertEqual(1, len(blocks))
-class ParseCommentBlock(unittest.TestCase):
-
- def setUp(self):
- mkdb.MODULE = 'test'
+class ParseCommentBlock(ScanSourceContentTestCase):
def test_EmptyInput(self):
mkdb.ParseCommentBlock([])
@@ -126,10 +128,43 @@ class ParseCommentBlock(unittest.TestCase):
self.assertEqual({'symbol': '< & >.\n'}, mkdb.SourceSymbolDocs)
-class ScanSourceContentAnnotations(unittest.TestCase):
+class ParseSectionCommentBlock(ScanSourceContentTestCase):
- def setUp(self):
- mkdb.MODULE = 'test'
+ def test_FindsSectionBlock(self):
+ # TODO: maybe override common.LogWarning() instead and capture the messages
+ # Suppress: 'Section symbol is not defined in the test-sections.txt file'
+ mkdb.KnownSymbols['symbol:long_description'] = 1
+ mkdb.ParseCommentBlock(textwrap.dedent("""\
+ SECTION:symbol
+ @short_description: short module description
+
+ Module description.
+ """).splitlines(keepends=True))
+ self.assertIn('symbol:short_description', mkdb.SourceSymbolDocs)
+ self.assertEqual('short module description\n', mkdb.SourceSymbolDocs['symbol:short_description'])
+ self.assertIn('symbol:long_description', mkdb.SourceSymbolDocs)
+ self.assertEqual('Module description.\n', mkdb.SourceSymbolDocs['symbol:long_description'])
+
+ # TODO(ensonic): we need to refactor the code first (see comment there)
+ # def test_FindsProgramBlock(self):
+ # mkdb.ParseCommentBlock(textwrap.dedent("""\
+ # PROGRAM:symbol
+ # @short_description: short program description
+ # @synopsis: test-program [*OPTIONS*...] --arg1 *arg* *FILE*
+ # @see_also: test(1)
+ # @--arg1 *arg*: set arg1 to *arg*
+ # @-v, --version: Print the version number
+ # @-h, --help: Print the help message
+ #
+ # Program description.
+ # """).splitlines(keepends=True))
+ # self.assertIn('symbol:short_description', mkdb.SourceSymbolDocs)
+ # self.assertEqual('short program description\n', mkdb.SourceSymbolDocs['symbol:short_description'])
+ # self.assertIn('symbol:long_description', mkdb.SourceSymbolDocs)
+ # self.assertEqual('Program description.\n', mkdb.SourceSymbolDocs['symbol:long_description'])
+
+
+class ScanSourceContentAnnotations(ScanSourceContentTestCase):
def test_ParamAnnotation(self):
mkdb.ParseCommentBlock(textwrap.dedent("""\
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]