1"""Test that importing modules in C++ works as expected.""" 2 3 4import unittest2 5import lldb 6import shutil 7 8from lldbsuite.test.decorators import * 9from lldbsuite.test.lldbtest import * 10from lldbsuite.test import lldbutil 11 12 13class CXXModulesImportTestCase(TestBase): 14 15 def build(self): 16 include = self.getBuildArtifact('include') 17 lldbutil.mkdir_p(include) 18 for f in ['Foo.h', 'Bar.h', 'module.modulemap']: 19 shutil.copyfile(self.getSourcePath(os.path.join('Inputs', f)), 20 os.path.join(include, f)) 21 super(CXXModulesImportTestCase, self).build() 22 23 @skipUnlessDarwin 24 @skipIf(macos_version=["<", "10.12"]) 25 @skipIf(compiler="clang", compiler_version=['<', '14.0']) 26 def test_expr(self): 27 self.build() 28 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 29 self, 'break here', lldb.SBFileSpec('main.cpp')) 30 31 self.expect("expr -l Objective-C++ -- @import Bar") 32 self.expect("expr -- Bar()", substrs = ["success"]) 33 self.expect("expr -l Objective-C++ -- @import THIS_MODULE_DOES_NOT_EXIST", 34 error=True) 35 36 @skipUnlessDarwin 37 @skipIf(macos_version=["<", "10.12"]) 38 @skipIf(compiler="clang", compiler_version=['<', '14.0']) 39 def test_expr_failing_import(self): 40 self.build() 41 shutil.rmtree(self.getBuildArtifact('include')) 42 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 43 self, 'break here', lldb.SBFileSpec('main.cpp')) 44 45 self.expect("expr -l Objective-C++ -- @import Bar", error=True) 46