xref: /llvm-project/lldb/test/API/test_utils/TestDecorators.py (revision a4c18137d84bc48df49ee0101bef465a955e62ac)
1d0d07271SJordan Rupprechtimport re
2d0d07271SJordan Rupprecht
3d0d07271SJordan Rupprechtfrom lldbsuite.test.lldbtest import TestBase
4343f3de5SJonas Devliegherefrom lldbsuite.test.decorators import *
5343f3de5SJonas Devlieghere
6343f3de5SJonas Devlieghere
7d0d07271SJordan Rupprechtdef expectedFailureDwarf(bugnumber=None):
8d0d07271SJordan Rupprecht    return expectedFailureAll(bugnumber, debug_info="dwarf")
9d0d07271SJordan Rupprecht
10d0d07271SJordan Rupprecht
11d0d07271SJordan Rupprechtclass TestDecoratorsNoDebugInfoClass(TestBase):
12343f3de5SJonas Devlieghere    NO_DEBUG_INFO_TESTCASE = True
13343f3de5SJonas Devlieghere
14343f3de5SJonas Devlieghere    @expectedFailureAll(debug_info="dwarf")
15d0d07271SJordan Rupprecht    def test_decorator_xfail(self):
16343f3de5SJonas Devlieghere        """Test that specifying a debug info category works for a NO_DEBUG_INFO_TESTCASE"""
17d0d07271SJordan Rupprecht
18d0d07271SJordan Rupprecht    @expectedFailureDwarf
19d0d07271SJordan Rupprecht    def test_decorator_xfail_bare_decorator(self):
20d0d07271SJordan Rupprecht        """Same as test_decorator_xfail, but with a custom decorator w/ a bare syntax"""
21d0d07271SJordan Rupprecht
22d0d07271SJordan Rupprecht    @expectedFailureDwarf()
23d0d07271SJordan Rupprecht    def test_decorator_xfail_decorator_empty_args(self):
24d0d07271SJordan Rupprecht        """Same as test_decorator_xfail, but with a custom decorator w/ no args"""
25d0d07271SJordan Rupprecht
26d0d07271SJordan Rupprecht    @add_test_categories(["dwarf"])
27d0d07271SJordan Rupprecht    def test_add_test_categories(self):
28d0d07271SJordan Rupprecht        # Note: the "dwarf" test category is ignored, because we don't generate any debug info test variants
29d0d07271SJordan Rupprecht        self.assertIsNone(self.getDebugInfo())
30d0d07271SJordan Rupprecht
31d0d07271SJordan Rupprecht    @expectedFailureAll
32*a4c18137SMichael Buch    def test_xfail_empty(self):
33d0d07271SJordan Rupprecht        """Test that expectedFailureAll can be empty (but please just use expectedFailure)"""
34d0d07271SJordan Rupprecht        self.fail()
35d0d07271SJordan Rupprecht
36d0d07271SJordan Rupprecht    @expectedFailureAll(compiler=re.compile(".*"))
37d0d07271SJordan Rupprecht    def test_xfail_regexp(self):
38d0d07271SJordan Rupprecht        """Test that xfail can take a regex as a matcher"""
39d0d07271SJordan Rupprecht        self.fail()
40d0d07271SJordan Rupprecht
41d0d07271SJordan Rupprecht    @expectedFailureAll(compiler=no_match(re.compile(".*")))
42d0d07271SJordan Rupprecht    def test_xfail_no_match(self):
43d0d07271SJordan Rupprecht        """Test that xfail can take a no_match matcher"""
44d0d07271SJordan Rupprecht        pass
45d0d07271SJordan Rupprecht
46d0d07271SJordan Rupprecht    @expectedFailureIf(condition=True)
47d0d07271SJordan Rupprecht    def test_xfail_condition_true(self):
48d0d07271SJordan Rupprecht        self.fail()
49d0d07271SJordan Rupprecht
50d0d07271SJordan Rupprecht    @expectedFailureIf(condition=False)
51d0d07271SJordan Rupprecht    def test_xfail_condition_false(self):
52d0d07271SJordan Rupprecht        pass
53d0d07271SJordan Rupprecht
54d0d07271SJordan Rupprecht
55d0d07271SJordan Rupprechtclass TestDecorators(TestBase):
56d0d07271SJordan Rupprecht    @expectedFailureAll(debug_info="dwarf")
57d0d07271SJordan Rupprecht    def test_decorator_xfail(self):
58d0d07271SJordan Rupprecht        """Test that expectedFailureAll fails for the debug_info variant"""
59d0d07271SJordan Rupprecht        if self.getDebugInfo() == "dwarf":
60d0d07271SJordan Rupprecht            self.fail()
61d0d07271SJordan Rupprecht
62d0d07271SJordan Rupprecht    @skipIf(debug_info="dwarf")
63d0d07271SJordan Rupprecht    def test_decorator_skip(self):
64d0d07271SJordan Rupprecht        """Test that skipIf skips the debug_info variant"""
65d0d07271SJordan Rupprecht        self.assertNotEqual(self.getDebugInfo(), "dwarf")
66d0d07271SJordan Rupprecht
67d0d07271SJordan Rupprecht    @expectedFailureDwarf
68d0d07271SJordan Rupprecht    def test_decorator_xfail2(self):
69d0d07271SJordan Rupprecht        """Same as test_decorator_xfail, but with a custom decorator w/ a bare syntax"""
70d0d07271SJordan Rupprecht        if self.getDebugInfo() == "dwarf":
71d0d07271SJordan Rupprecht            self.fail()
72d0d07271SJordan Rupprecht
73d0d07271SJordan Rupprecht    @expectedFailureDwarf()
74d0d07271SJordan Rupprecht    def test_decorator_xfail3(self):
75d0d07271SJordan Rupprecht        """Same as test_decorator_xfail, but with a custom decorator w/ no args"""
76d0d07271SJordan Rupprecht        if self.getDebugInfo() == "dwarf":
77d0d07271SJordan Rupprecht            self.fail()
78d0d07271SJordan Rupprecht
79d0d07271SJordan Rupprecht    @add_test_categories(["dwarf"])
80d0d07271SJordan Rupprecht    def test_add_test_categories(self):
81d0d07271SJordan Rupprecht        """Test that add_test_categories limits the kinds of debug info test variants"""
82d0d07271SJordan Rupprecht        self.assertEqual(self.getDebugInfo(), "dwarf")
83d0d07271SJordan Rupprecht
84d0d07271SJordan Rupprecht    @expectedFailureAll(compiler="fake", debug_info="dwarf")
85d0d07271SJordan Rupprecht    def test_decorator_xfail_all(self):
86d0d07271SJordan Rupprecht        """Test that expectedFailureAll requires all conditions to match to be xfail"""
87d0d07271SJordan Rupprecht
88d0d07271SJordan Rupprecht    @skipIf(compiler="fake", debug_info="dwarf")
89d0d07271SJordan Rupprecht    def test_decorator_skip2(self):
90d0d07271SJordan Rupprecht        """Test that expectedFailureAll fails for the debug_info variant"""
91d0d07271SJordan Rupprecht        # Note: the following assertion would fail, if this were not skipped:
92d0d07271SJordan Rupprecht        # self.assertNotEqual(self.getDebugInfo(), "dwarf")
93d0d07271SJordan Rupprecht
94d0d07271SJordan Rupprecht    @expectedFailureAll
95*a4c18137SMichael Buch    def test_xfail_empty(self):
96d0d07271SJordan Rupprecht        """Test that xfail can be empty"""
97d0d07271SJordan Rupprecht        self.fail()
98d0d07271SJordan Rupprecht
99d0d07271SJordan Rupprecht    @expectedFailureAll(compiler=re.compile(".*"))
100d0d07271SJordan Rupprecht    def test_xfail_regexp(self):
101d0d07271SJordan Rupprecht        """Test that xfail can take a regex as a matcher"""
102d0d07271SJordan Rupprecht        self.fail()
103d0d07271SJordan Rupprecht
104d0d07271SJordan Rupprecht    @expectedFailureAll(compiler=no_match(re.compile(".*")))
105d0d07271SJordan Rupprecht    def test_xfail_no_match(self):
106d0d07271SJordan Rupprecht        """Test that xfail can take a no_match matcher"""
107d0d07271SJordan Rupprecht        pass
108d0d07271SJordan Rupprecht
109d0d07271SJordan Rupprecht    @expectedFailureIf(condition=True)
110d0d07271SJordan Rupprecht    def test_xfail_condition_true(self):
111d0d07271SJordan Rupprecht        self.fail()
112d0d07271SJordan Rupprecht
113d0d07271SJordan Rupprecht    @expectedFailureIf(condition=False)
114d0d07271SJordan Rupprecht    def test_xfail_condition_false(self):
115343f3de5SJonas Devlieghere        pass
116