text: """
  Test DarwinLog "source include debug-level" functionality provided by the
  StructuredDataDarwinLog plugin.
  
  These tests are currently only supported when running against Darwin
  targets.
  """
  
  
  import lldb
  
  from lldbsuite.test import decorators
  from lldbsuite.test import lldbtest
  from lldbsuite.test import darwin_log
  
  
  class TestDarwinLogSourceDebug(darwin_log.DarwinLogTestBase):
  
      mydir = lldbtest.TestBase.compute_mydir(__file__)
  
      def setUp(self):
          # Call super's setUp().
          super(TestDarwinLogSourceDebug, self).setUp()
  
          # Source filename.
          self.source = 'main.c'
  
          # Output filename.
          self.exe_name = self.getBuildArtifact("a.out")
          self.d = {'C_SOURCES': self.source, 'EXE': self.exe_name}
  
          # Locate breakpoint.
          self.line = lldbtest.line_number(self.source, '// break here')
  
          # Indicate we want strict-sources behavior.
          self.strict_sources = True
  
      def tearDown(self):
          # Shut down the process if it's still running.
          if self.child:
              self.runCmd('process kill')
              self.expect_prompt()
              self.runCmd('quit')
  
          # Let parent clean up
          super(TestDarwinLogSourceDebug, self).tearDown()
  
      # ==========================================================================
      # source include/exclude debug filter tests
      # ==========================================================================
  
      @decorators.skipUnlessDarwin
      def test_source_default_exclude_debug(self):
          """Test that default excluding of debug-level log messages works."""
          self.do_test([])
  
          # We should only see the second log message as the first is a
          # debug-level message and we're not including debug-level messages.
          self.assertIsNotNone(self.child.match)
          self.assertTrue(
              (len(
                  self.child.match.groups()) > 1) and (
                  self.child.match.group(2) == "cat2"),
              "first log line should not be present, second log line "
              "should be")
  
      @decorators.skipUnlessDarwin
      def test_source_explicitly_include_debug(self):
          """Test that explicitly including debug-level log messages works."""
          self.do_test(["--debug"])
  
          # We should only see the second log message as the first is a
          # debug-level message and we're not including debug-level messages.
          self.assertIsNotNone(self.child.match)
          self.assertTrue((len(self.child.match.groups()) > 1) and
                          (self.child.match.group(2) == "cat1"),
                          "first log line should be present since we're "
                          "including debug-level log messages")
  