[test] Convert TestWatchpointSetErrorCases.py to lit

This test is flaky on GreenDragon. Since it was a pexpect test and
straightforward enough to convert, I went ahead and converted it to a
lit test.

Differential revision: https://reviews.llvm.org/D61414

llvm-svn: 359751
This commit is contained in:
Jonas Devlieghere 2019-05-02 01:54:05 +00:00
parent 1c19b74cef
commit 84bed67a5c
3 changed files with 41 additions and 74 deletions

View File

@ -0,0 +1,13 @@
#include <stdio.h>
int main (int argc, char const *argv[])
{
struct {
int a;
int b;
int c;
} MyAggregateDataType;
printf ("Set break point at this line.\n");
return 0;
}

View File

@ -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

View File

@ -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'])