diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-10-21 16:07:45 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-10-21 16:07:45 +0000 |
commit | 7a79e10a82e0d5f84385566493823959dc1697b3 (patch) | |
tree | f7e201488d92617009aa1af51ac8e2775c0a8dcc /lldb/packages/Python/lldbsuite/test | |
parent | 22755e4ea8fcb0e6f5b4fd0cbfcdff2a3dcf87a3 (diff) | |
download | bcm5719-llvm-7a79e10a82e0d5f84385566493823959dc1697b3.tar.gz bcm5719-llvm-7a79e10a82e0d5f84385566493823959dc1697b3.zip |
[lldb] Add test for executing static initializers in expression command
llvm-svn: 375422
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
3 files changed, 45 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/Makefile new file mode 100644 index 00000000000..99998b20bcb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/TestStaticInitializers.py b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/TestStaticInitializers.py new file mode 100644 index 00000000000..e350e6ef930 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/TestStaticInitializers.py @@ -0,0 +1,31 @@ +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class StaticInitializers(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test(self): + """ Test a static initializer. """ + self.build() + + lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + # We use counter to observe if the initializer was called. + self.expect("expr counter", substrs=["(int) $", " = 0"]) + self.expect("expr -p -- struct Foo { Foo() { inc_counter(); } }; Foo f;") + self.expect("expr counter", substrs=["(int) $", " = 1"]) + + def test_failing_init(self): + """ Test a static initializer that fails to execute. """ + self.build() + + lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + # FIXME: This error message is not even remotely helpful. + self.expect("expr -p -- struct Foo2 { Foo2() { do_abort(); } }; Foo2 f;", error=True, + substrs=["error: couldn't run static initializers: couldn't run static initializer:"]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/main.cpp new file mode 100644 index 00000000000..0bcf1eb3eda --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/static-initializers/main.cpp @@ -0,0 +1,11 @@ +#include <cstdlib> + +int counter = 0; + +void inc_counter() { ++counter; } + +void do_abort() { abort(); } + +int main() { + return 0; // break here +} |