File: test_utils.py

package info (click to toggle)
gi-docgen 2023.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 12,992 kB
  • sloc: python: 7,897; javascript: 592; makefile: 25
file content (77 lines) | stat: -rw-r--r-- 2,628 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# SPDX-FileCopyrightText: 2021 Emmanuele Bassi
#
# SPDX-License-Identifier: GPL-3.0-or-later OR Apache-2.0

import xml.etree.ElementTree as ET
import os
import unittest

from gidocgen import gir, utils


class TestProcessLanguage(unittest.TestCase):

    def test_process_language(self):
        self.assertEqual(utils.process_language(None), "plain")
        self.assertEqual(utils.process_language('<!-- language="C" -->'), "c")
        self.assertEqual(utils.process_language('  <!-- language="xml" -->'), "xml")
        self.assertEqual(utils.process_language('<!--     language="plain"      -->'), "plain")


class TestLinkGenerator(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        paths = []
        paths.extend([os.path.join(os.getcwd(), "test/gir")])
        paths.extend(utils.default_search_paths())

        parser = gir.GirParser(search_paths=paths, error=False)
        parser.parse(os.path.join(os.getcwd(), "test/gir", "GObject-2.0.gir"))

        cls._repository = parser.get_repository()

    @classmethod
    def tearDownClass(cls):
        cls._repository = None

    def test_link_re(self):
        text = "Some text [type@GObject.Value] other text"
        res = utils.LINK_RE.search(text)
        self.assertIsNotNone(res)

        fragment = res.group('fragment')
        self.assertTrue(fragment == 'type')

        endpoint = res.group('endpoint')
        self.assertTrue(endpoint == 'GObject.Value')

        alt_text = res.group('text')
        self.assertIsNone(alt_text)

        text = "Some text [with some text][type@GObject.Binding] other text"
        res = utils.LINK_RE.search(text)
        self.assertIsNotNone(res)

        alt_text = res.group('text')
        self.assertTrue(alt_text == '[with some text]')

    def test_link_generator(self):
        text = "Some text [with some, amazing, text][type@GObject.Binding] other text"
        res = utils.LINK_RE.search(text)
        self.assertIsNotNone(res)

        fragment = res.group('fragment')
        endpoint = res.group('endpoint')
        alt_text = res.group('text')

        link = utils.LinkGenerator(line=text, start=res.start(), end=res.end(),
                                   namespace=self._repository.namespace,
                                   fragment=fragment, endpoint=endpoint, text=alt_text)
        self.assertIsNotNone(link)

        root = ET.fromstring(str(link))
        self.assertTrue(root.tag == 'a')
        self.assertTrue('href' in root.attrib)
        self.assertTrue(root.attrib['href'] == 'class.Binding.html')
        self.assertTrue(root.text == 'with some, amazing, text')