summaryrefslogtreecommitdiffstats
path: root/testsuite/Testsrc/Testlib/TestOptions/TestWildcards.py
blob: da196a9122cfbe2729e7a60516ac61baf288d99a (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
"""test wildcard options."""

import argparse

from Bcfg2.Options import Option, Parser
from testsuite.Testsrc.Testlib.TestOptions import OptionTestCase, make_config


class TestWildcardOptions(OptionTestCase):
    """test parsing wildcard options."""
    config = {
        "foo": {
            "test1": "test1",
            "test2": "test2",
            "thing1": "thing1",
            "thing2": "thing2",
            "foo": "foo"
        }
    }

    def setUp(self):
        # parsing options can modify the Option objects themselves.
        # that's probably bad -- and it's definitely bad if we ever
        # want to do real on-the-fly config changes -- but it's easier
        # to leave it as is and set the options on each test.
        self.options = [
            Option(cf=("foo", "*"), dest="all"),
            Option(cf=("foo", "test*"), dest="test"),
            Option(cf=("foo", "bogus*"), dest="unmatched"),
            Option(cf=("bar", "*"), dest="no_section"),
            Option(cf=("foo", "foo"))]

    @make_config(config)
    def test_wildcard_options(self, config_file):
        """parse wildcard options."""
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(argv=["-C", config_file])

        self.assertDictEqual(result.all, {"test1": "test1",
                                          "test2": "test2",
                                          "thing1": "thing1",
                                          "thing2": "thing2"})
        self.assertDictEqual(result.test, {"test1": "test1",
                                           "test2": "test2"})
        self.assertDictEqual(result.unmatched, {})
        self.assertDictEqual(result.no_section, {})