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 def test_expr(self): 28 self.build() 29 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 30 self, 'break here', lldb.SBFileSpec('main.cpp')) 31 32 self.expect("expr -l Objective-C++ -- @import Bar") 33 self.expect("expr -- Bar()", substrs = ["success"]) 34 self.expect("expr -l Objective-C++ -- @import THIS_MODULE_DOES_NOT_EXIST", 35 error=True) 36 37 @skipUnlessDarwin 38 @skipIf(macos_version=["<", "10.12"]) 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