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 mydir = TestBase.compute_mydir(__file__) 16 17 def build(self): 18 include = self.getBuildArtifact('include') 19 lldbutil.mkdir_p(include) 20 for f in ['Foo.h', 'Bar.h', 'module.modulemap']: 21 shutil.copyfile(self.getSourcePath(os.path.join('Inputs', f)), 22 os.path.join(include, f)) 23 super(CXXModulesImportTestCase, self).build() 24 25 @skipUnlessDarwin 26 @skipIf(macos_version=["<", "10.12"]) 27 @skipIf(compiler="clang", compiler_version=['<', '14.0']) 28 def test_expr(self): 29 self.build() 30 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 31 self, 'break here', lldb.SBFileSpec('main.cpp')) 32 33 self.expect("expr -l Objective-C++ -- @import Bar") 34 self.expect("expr -- Bar()", substrs = ["success"]) 35 self.expect("expr -l Objective-C++ -- @import THIS_MODULE_DOES_NOT_EXIST", 36 error=True) 37 38 @skipUnlessDarwin 39 @skipIf(macos_version=["<", "10.12"]) 40 @skipIf(compiler="clang", compiler_version=['<', '14.0']) 41 def test_expr_failing_import(self): 42 self.build() 43 shutil.rmtree(self.getBuildArtifact('include')) 44 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 45 self, 'break here', lldb.SBFileSpec('main.cpp')) 46 47 self.expect("expr -l Objective-C++ -- @import Bar", error=True) 48