JDevlieghere updated this revision to Diff 197652.
JDevlieghere added a comment.
Reduce test
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61406/new/
https://reviews.llvm.org/D61406
Files:
lldb/lit/Watchpoint/Inputs/main.cpp
lldb/lit/Watchpoint/SetErrorCases.test
lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
lldb/source/Commands/CommandObjectCommands.cpp
Index: lldb/source/Commands/CommandObjectCommands.cpp
===================================================================
--- lldb/source/Commands/CommandObjectCommands.cpp
+++ lldb/source/Commands/CommandObjectCommands.cpp
@@ -309,8 +309,13 @@
m_options.m_stop_on_continue.OptionWasSet()) {
// Use user set settings
CommandInterpreterRunOptions options;
- options.SetStopOnContinue(m_options.m_stop_on_continue.GetCurrentValue());
- options.SetStopOnError(m_options.m_stop_on_error.GetCurrentValue());
+
+ if (m_options.m_stop_on_continue.OptionWasSet())
+ options.SetStopOnContinue(
+ m_options.m_stop_on_continue.GetCurrentValue());
+
+ if (m_options.m_stop_on_error.OptionWasSet())
+ options.SetStopOnError(m_options.m_stop_on_error.GetCurrentValue());
// Individual silent setting is override for global command echo settings.
if (m_options.m_silent_run.GetCurrentValue()) {
Index: lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""
-Test error cases for the 'watchpoint set' command to make sure it errors out when necessary.
-"""
-
-from __future__ import print_function
-
-
-import os
-import time
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-import lldbsuite.test.lldbutil as lldbutil
-
-
-class WatchpointSetErrorTestCase(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- def setUp(self):
- # Call super's setUp().
- TestBase.setUp(self)
- # Our simple source filename.
- self.source = 'main.cpp'
- # Find the line number to break inside main().
- self.line = line_number(
- self.source, '// Set break point at this line.')
- # Build dictionary to have unique executable names for each test
- # method.
-
- def test_error_cases_with_watchpoint_set(self):
- """Test error cases with the 'watchpoint set' command."""
- self.build()
- self.setTearDownCleanup()
-
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # Add a breakpoint to set a watchpoint when stopped on the breakpoint.
- lldbutil.run_break_set_by_file_and_line(
- self, None, self.line, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # We should be stopped again due to the breakpoint.
- # The stop reason of the thread should be breakpoint.
- self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
- substrs=['stopped',
- 'stop reason = breakpoint'])
-
- # Try some error conditions:
-
- # 'watchpoint set' is now a multiword command.
- self.expect("watchpoint set",
- substrs=['The following subcommands are supported:',
- 'expression',
- 'variable'])
- self.runCmd("watchpoint set variable -w read_write", check=False)
-
- # 'watchpoint set expression' with '-w' or '-s' specified now needs
- # an option terminator and a raw expression after that.
- self.expect("watchpoint set expression -w write --", error=True,
- startstr='error: ')
-
- # It's an error if the expression did not evaluate to an address.
- self.expect(
- "watchpoint set expression MyAggregateDataType",
- error=True,
- startstr='error: expression did not evaluate to an address')
-
- # Wrong size parameter is an error.
- self.expect("watchpoint set variable -s -128", error=True,
- substrs=['invalid enumeration value'])
Index: lldb/lit/Watchpoint/SetErrorCases.test
===================================================================
--- /dev/null
+++ lldb/lit/Watchpoint/SetErrorCases.test
@@ -0,0 +1,28 @@
+# RUN: %clangxx %p/Inputs/main.cpp -g -o %t.out
+# RUN: %lldb -b -o 'settings set interpreter.stop-command-source-on-error false' -s %s %t.out 2>&1 | FileCheck %s
+
+settings show interpreter.stop-command-source-on-error
+# CHECK: interpreter.stop-command-source-on-error (boolean) = false
+
+b main.cpp:11
+run
+# CHECK: stopped
+# CHECK-NEXT: stop reason = breakpoint
+
+watchpoint set
+# CHECK: Commands for setting a watchpoint.
+# CHECK: The following subcommands are supported:
+# CHECK: Set a watchpoint on an address by supplying an expression.
+# CHECK: Set a watchpoint on a variable.
+
+watchpoint set variable -w read_write
+# CHECK: error: required argument missing
+
+watchpoint set expression -w write --
+# CHECK: error: expression evaluation of address to watch failed
+
+watchpoint set expression MyAggregateDataType
+# CHECK: error: expression did not evaluate to an address
+
+watchpoint set variable -s -128
+# CHECK: error: invalid enumeration value
Index: lldb/lit/Watchpoint/Inputs/main.cpp
===================================================================
--- /dev/null
+++ lldb/lit/Watchpoint/Inputs/main.cpp
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+int main (int argc, char const *argv[])
+{
+ struct {
+ int a;
+ int b;
+ int c;
+ } MyAggregateDataType;
+
+ printf ("Before turning all three threads loose...\n"); // Set break point at this line.
+ return 0;
+}
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits