Author: stefan.graenitz Date: Fri Oct 5 09:49:53 2018 New Revision: 343860
URL: http://llvm.org/viewvc/llvm-project?rev=343860&view=rev Log: TestMultilineExpr: validate evaluation for expressions that span multiple lines Summary: When LLDB successfully parses a command (like "expression" in this case) and determines incomplete input, the user can continue typing on multiple lines (in this case "2+3"). This should provide the correct result. Note that LLDB reverts input from the additional lines, so they are not present in the output. Reviewers: vsk, davide, aprantl Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D52270 Added: lldb/trunk/lit/Expr/TestMultilineExpr.test Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/Makefile lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/TestMultilineExpressions.py lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/main.c Added: lldb/trunk/lit/Expr/TestMultilineExpr.test URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/TestMultilineExpr.test?rev=343860&view=auto ============================================================================== --- lldb/trunk/lit/Expr/TestMultilineExpr.test (added) +++ lldb/trunk/lit/Expr/TestMultilineExpr.test Fri Oct 5 09:49:53 2018 @@ -0,0 +1,9 @@ +# RUN: %lldb -b -s %s | FileCheck %s + +# In terminal sessions LLDB hides input from subsequent lines so it's not visible in the output we check below. +expression +2+ +3 + +# CHECK: (lldb) expression +# CHECK: (int) {{.*}} = 5 Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/Makefile URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/Makefile?rev=343859&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/Makefile (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/Makefile (removed) @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/TestMultilineExpressions.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/TestMultilineExpressions.py?rev=343859&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/TestMultilineExpressions.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/TestMultilineExpressions.py (removed) @@ -1,90 +0,0 @@ -"""Test multiline expressions.""" - -from __future__ import print_function - -import os -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MultilineExpressionsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - NO_DEBUG_INFO_TESTCASE = True - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break on inside main.cpp. - self.line = line_number('main.c', 'break') - - @skipIfRemote - @expectedFailureAll( - oslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") - def test_with_run_commands(self): - """Test that multiline expressions work correctly""" - self.build() - import pexpect - exe = self.getBuildArtifact("a.out") - prompt = "(lldb) " - - # So that the child gets torn down after the test. - self.child = pexpect.spawn( - '%s %s %s' % - (lldbtest_config.lldbExec, self.lldbOption, exe)) - child = self.child - # Turn on logging for what the child sends back. - if self.TraceOn(): - child.logfile_read = sys.stdout - - # Set the breakpoint, run the inferior, when it breaks, issue print on - # the various convenience variables. - child.expect_exact(prompt) - child.sendline('breakpoint set -f main.c -l %d' % self.line) - child.expect_exact(prompt) - child.sendline('run') - child.expect_exact("stop reason = breakpoint 1.1") - child.expect_exact(prompt) - child.sendline('expr') - child.expect_exact('1:') - - child.sendline('2+') - child.expect_exact('2:') - - child.sendline('3') - child.expect_exact('3:') - - child.sendline('') - child.expect_exact(prompt) - self.expect(child.before, exe=False, - patterns=['= 5']) - - @skipIfRemote - @expectedFailureAll( - oslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") - def test_empty_list(self): - """Test printing an empty list of expressions""" - import pexpect - prompt = "(lldb) " - - # So that the child gets torn down after the test - self.child = pexpect.spawn( - "%s %s" % - (lldbtest_config.lldbExec, self.lldbOption)) - child = self.child - - # Turn on logging for what the child sends back. - if self.TraceOn(): - child.logfile_read = sys.stdout - - # We expect a prompt, then send "print" to start a list of expressions, - # then an empty line. We expect a prompt back. - child.expect_exact(prompt) - child.sendline("print") - child.expect_exact('1:') - child.sendline("") - child.expect_exact(prompt) Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/main.c URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/main.c?rev=343859&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/main.c (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/multiline/main.c (removed) @@ -1,6 +0,0 @@ -#include <stdio.h> - -int main(int argc, char const *argv[]) { - printf("Hello world.\n"); // break here - return 0; -} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits