• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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