5a3eafa2e8cc9f0339d7578b9675f1df8105d6b7
[openbsd] /
1 """
2 Test DarwinLog "source include info-level" functionality provided by the
3 StructuredDataDarwinLog plugin.
4
5 These tests are currently only supported when running against Darwin
6 targets.
7 """
8
9
10 import lldb
11
12 from lldbsuite.test import decorators
13 from lldbsuite.test import lldbtest
14 from lldbsuite.test import darwin_log
15
16
17 class TestDarwinLogSourceInfo(darwin_log.DarwinLogTestBase):
18
19     mydir = lldbtest.TestBase.compute_mydir(__file__)
20
21     def setUp(self):
22         # Call super's setUp().
23         super(TestDarwinLogSourceInfo, self).setUp()
24
25         # Source filename.
26         self.source = 'main.c'
27
28         # Output filename.
29         self.exe_name = self.getBuildArtifact("a.out")
30         self.d = {'C_SOURCES': self.source, 'EXE': self.exe_name}
31
32         # Locate breakpoint.
33         self.line = lldbtest.line_number(self.source, '// break here')
34
35         # Indicate we want strict-sources behavior.
36         self.strict_sources = True
37
38     def tearDown(self):
39         # Shut down the process if it's still running.
40         if self.child:
41             self.runCmd('process kill')
42             self.expect_prompt()
43             self.runCmd('quit')
44
45         # Let parent clean up
46         super(TestDarwinLogSourceInfo, self).tearDown()
47
48     # ==========================================================================
49     # source include/exclude debug filter tests
50     # ==========================================================================
51
52     @decorators.skipUnlessDarwin
53     @decorators.expectedFailureAll(bugnumber="rdar://27316264")
54     def test_source_exclude_info_level(self):
55         """Test that default excluding of info-level log messages works."""
56         self.do_test([])
57
58         # We should only see the second log message as the first is an
59         # info-level message and we're not including debug-level messages.
60         self.assertIsNotNone(self.child.match)
61         self.assertTrue(
62             (len(
63                 self.child.match.groups()) > 1) and (
64                 self.child.match.group(2) == "cat2"),
65             "first log line should not be present, second log line "
66             "should be")
67
68     @decorators.skipUnlessDarwin
69     def test_source_include_info_level(self):
70         """Test that explicitly including info-level log messages works."""
71         self.do_test(
72             ["--info"]
73         )
74
75         # We should only see the second log message as the first is a
76         # debug-level message and we're not including debug-level messages.
77         self.assertIsNotNone(self.child.match)
78         self.assertTrue((len(self.child.match.groups()) > 1) and
79                         (self.child.match.group(2) == "cat1"),
80                         "first log line should be present since we're "
81                         "including info-level log messages")