199451b44SJordan Rupprecht"""Test that importing modules in C++ works as expected.""" 299451b44SJordan Rupprecht 399451b44SJordan Rupprecht 499451b44SJordan Rupprechtimport unittest2 599451b44SJordan Rupprechtimport lldb 699451b44SJordan Rupprechtimport shutil 799451b44SJordan Rupprecht 899451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 999451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 1099451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 1199451b44SJordan Rupprecht 1299451b44SJordan Rupprecht 1399451b44SJordan Rupprechtclass CXXModulesImportTestCase(TestBase): 1499451b44SJordan Rupprecht 1599451b44SJordan Rupprecht def build(self): 1699451b44SJordan Rupprecht include = self.getBuildArtifact('include') 1799451b44SJordan Rupprecht lldbutil.mkdir_p(include) 1899451b44SJordan Rupprecht for f in ['Foo.h', 'Bar.h', 'module.modulemap']: 1999451b44SJordan Rupprecht shutil.copyfile(self.getSourcePath(os.path.join('Inputs', f)), 2099451b44SJordan Rupprecht os.path.join(include, f)) 2199451b44SJordan Rupprecht super(CXXModulesImportTestCase, self).build() 2299451b44SJordan Rupprecht 2399451b44SJordan Rupprecht @skipUnlessDarwin 2499451b44SJordan Rupprecht @skipIf(macos_version=["<", "10.12"]) 25*948b36d2SAdrian Prantl @skipIf(compiler="clang", compiler_version=['<', '14.0']) 2699451b44SJordan Rupprecht def test_expr(self): 2799451b44SJordan Rupprecht self.build() 2899451b44SJordan Rupprecht target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 2999451b44SJordan Rupprecht self, 'break here', lldb.SBFileSpec('main.cpp')) 3099451b44SJordan Rupprecht 3199451b44SJordan Rupprecht self.expect("expr -l Objective-C++ -- @import Bar") 3299451b44SJordan Rupprecht self.expect("expr -- Bar()", substrs = ["success"]) 3399451b44SJordan Rupprecht self.expect("expr -l Objective-C++ -- @import THIS_MODULE_DOES_NOT_EXIST", 3499451b44SJordan Rupprecht error=True) 3599451b44SJordan Rupprecht 3699451b44SJordan Rupprecht @skipUnlessDarwin 3799451b44SJordan Rupprecht @skipIf(macos_version=["<", "10.12"]) 38*948b36d2SAdrian Prantl @skipIf(compiler="clang", compiler_version=['<', '14.0']) 3999451b44SJordan Rupprecht def test_expr_failing_import(self): 4099451b44SJordan Rupprecht self.build() 4199451b44SJordan Rupprecht shutil.rmtree(self.getBuildArtifact('include')) 4299451b44SJordan Rupprecht target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 4399451b44SJordan Rupprecht self, 'break here', lldb.SBFileSpec('main.cpp')) 4499451b44SJordan Rupprecht 4599451b44SJordan Rupprecht self.expect("expr -l Objective-C++ -- @import Bar", error=True) 46