summaryrefslogtreecommitdiff
path: root/hack/markdown-preprocess.t
blob: 152da087bb52333abec1ddda8a3b0e30f47e0015 (plain)
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
78
#!/usr/bin/env python3

"""
Tests for markdown-preprocess
"""

import unittest

# https://stackoverflow.com/questions/66665217/how-to-import-a-python-script-without-a-py-extension
from importlib.util import spec_from_loader, module_from_spec
from importlib.machinery import SourceFileLoader

spec = spec_from_loader("mp", SourceFileLoader("mp", "hack/markdown-preprocess"))
mp = module_from_spec(spec)
spec.loader.exec_module(mp)

class TestPodReplacer(unittest.TestCase):
    def test_basic(self):
        """basic pod|container and vice-versa"""
        s = '<<container|pod>>'
        self.assertEqual(mp.replace_type(s, 'pod'), 'pod')
        self.assertEqual(mp.replace_type(s, 'container'), 'container')
        s = '<<container|pod>>'
        self.assertEqual(mp.replace_type(s, 'pod'), 'pod')
        self.assertEqual(mp.replace_type(s, 'container'), 'container')

    def test_case_insensitive(self):
        """test case-insensitive replacement of Pod, Container"""
        s = '<<Pod|Container>>'
        self.assertEqual(mp.replace_type(s, 'pod'), 'Pod')
        self.assertEqual(mp.replace_type(s, 'container'), 'Container')
        s = '<<Container|Pod>>'
        self.assertEqual(mp.replace_type(s, 'pod'), 'Pod')
        self.assertEqual(mp.replace_type(s, 'container'), 'Container')

    def test_dont_care_about_podman(self):
        """we ignore 'podman'"""
        self.assertEqual(mp.replace_type('<<podman container|pod in podman>>', 'container'), 'podman container')

    def test_not_at_beginning(self):
        """oops - test for 'pod' other than at beginning of string"""
        s = '<<container|container or pod>>'
        self.assertEqual(mp.replace_type(s, 'container'), 'container')
        self.assertEqual(mp.replace_type(s, 'pod'), 'container or pod')
        s = '<<container or pod|container>>'
        self.assertEqual(mp.replace_type(s, 'container'), 'container')
        self.assertEqual(mp.replace_type(s, 'pod'), 'container or pod')

    def test_blank(self):
        """test that either side of '|' can be empty"""
        s = 'abc container<<| or pod>> def'
        self.assertEqual(mp.replace_type(s, 'container'), 'abc container def')
        self.assertEqual(mp.replace_type(s, 'pod'), 'abc container or pod def')
        s = 'abc container<< or pod|>> def'
        self.assertEqual(mp.replace_type(s, 'container'), 'abc container def')
        self.assertEqual(mp.replace_type(s, 'pod'), 'abc container or pod def')

    def test_exception_both(self):
        """test that 'pod' on both sides raises exception"""
        with self.assertRaisesRegex(Exception, "in both left and right sides"):
            mp.replace_type('<<pod 123|pod 321>>', 'pod')

    def test_exception_neither(self):
        """test that 'pod' on neither side raises exception"""
        with self.assertRaisesRegex(Exception, "in either side"):
            mp.replace_type('<<container 123|container 321>>', 'pod')

class TestPodmanSubcommand(unittest.TestCase):
    def test_basic(self):
        """podman subcommand basic test"""
        self.assertEqual(mp.podman_subcommand("podman-foo.1.md.in"), "foo")
        self.assertEqual(mp.podman_subcommand("podman-foo-bar.1.md.in"), "foo bar")
        self.assertEqual(mp.podman_subcommand("podman-pod-rm.1.md.in"), "rm")
        self.assertEqual(mp.podman_subcommand("podman-pod-rm.1.md.in", "full"), "pod rm")


if __name__ == '__main__':
    unittest.main()