[Lldb-commits] [lldb] r355570 - [Reproducers] Add tests for different types of functionality
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 6 16:24:44 PST 2019
Author: jdevlieghere
Date: Wed Mar 6 16:24:44 2019
New Revision: 355570
URL: http://llvm.org/viewvc/llvm-project?rev=355570&view=rev
Log:
[Reproducers] Add tests for different types of functionality
This patch adds test that check that functionality in lldb continues to
work when replaying a reproducer.
- Entries in image list are identical.
- That stepping behaves the same.
- That the data formatters behave the same.
Differential revision: https://reviews.llvm.org/D55626
Added:
lldb/trunk/lit/Reproducer/Functionalities/
lldb/trunk/lit/Reproducer/Functionalities/Inputs/
lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in
lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp
lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c
lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test
lldb/trunk/lit/Reproducer/Functionalities/TestImagineList.test
lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test
Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in Wed Mar 6 16:24:44 2019
@@ -0,0 +1,7 @@
+breakpoint set -f foo.cpp -l 11
+run
+frame var
+next
+frame var
+cont
+reproducer generate
Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp Wed Mar 6 16:24:44 2019
@@ -0,0 +1,13 @@
+class Foo {
+public:
+ Foo(int i, double d) : m_i(i), m_d(d){};
+
+private:
+ int m_i;
+ int m_d;
+};
+
+int main(int argc, char **argv) {
+ Foo foo(1, 2.22);
+ return 0;
+}
Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c Wed Mar 6 16:24:44 2019
@@ -0,0 +1,37 @@
+int a(int);
+int b(int);
+int c(int);
+int complex(int, int, int);
+
+int a(int val) {
+ int return_value = val;
+
+ if (val <= 1) {
+ return_value = b(val);
+ } else if (val >= 3) {
+ return_value = c(val);
+ }
+
+ return return_value;
+}
+
+int b(int val) {
+ int rc = c(val);
+ return rc;
+}
+
+int c(int val) { return val + 3; }
+
+int complex(int first, int second, int third) { return first + second + third; }
+
+int main(int argc, char const *argv[]) {
+ int A1 = a(1);
+
+ int B2 = b(2);
+
+ int A3 = a(3);
+
+ int A4 = complex(a(1), b(2), c(3));
+
+ return 0;
+}
Added: lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test Wed Mar 6 16:24:44 2019
@@ -0,0 +1,16 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that data formatters continue to work when replaying a reproducer.
+
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/foo.cpp -g -o %t.out
+
+# RUN: %lldb -x -b -s %S/Inputs/DataFormatter.in --capture %t.repro %t.out | FileCheck %s
+# RUN: %lldb --replay %t.repro | FileCheck %s
+
+# CHECK: stop reason = breakpoint 1.1
+# CHECK: (Foo) foo = (m_i = 0, m_d = 0)
+# CHECK: stop reason = step over
+# CHECK: (Foo) foo = (m_i = 1, m_d = 2)
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} exited with status = 0
Added: lldb/trunk/lit/Reproducer/Functionalities/TestImagineList.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestImagineList.test?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestImagineList.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestImagineList.test Wed Mar 6 16:24:44 2019
@@ -0,0 +1,29 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that image list works when replaying. We arbitrarily assume
+# there's at least two entries and compare that they're identical.
+
+# RUN: %clang %S/Inputs/stepping.c -g -o %t.out
+
+# RUN: rm -rf %t.txt
+
+# RUN: echo "CAPTURE" >> %t.txt
+# RUN: %lldb -x -b --capture %t.repro \
+# RUN: -o 'image list' \
+# RUN: -o 'reproducer generate' \
+# RUN: %t.out >> %t.txt 2>&1
+
+# RUN: echo "REPLAY" >> %t.txt
+# RUN: %lldb -x -b --replay %t.repro >> %t.txt 2>&1
+
+# RUN: cat %t.txt | FileCheck %s
+
+# CHECK: CAPTURE
+# CHECK: image list
+# CHECK: [ 0] [[ZERO:.*]]
+# CHECK: [ 1] [[ONE:.*]]
+
+# CHECK: REPLAY
+# CHECK: image list
+# CHECK: [ 0] {{.*}}[[ZERO]]
+# CHECK: [ 1] {{.*}}[[ONE]]
Added: lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test?rev=355570&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test Wed Mar 6 16:24:44 2019
@@ -0,0 +1,99 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that stepping continues to work when replaying a reproducer.
+
+# RUN: %clang %S/Inputs/stepping.c -O0 -g -o %t.out
+# RUN: grep -v '#' %s > %t.in
+
+# RUN: %lldb -x -b -s %t.in --capture %t.repro %t.out | FileCheck %s --check-prefix CHECK
+# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix CHECK
+
+# Set breakpoints in a,b and c and verify we stop there when stepping.
+
+breakpoint set -f stepping.c -l 28
+# CHECK: Breakpoint 1: {{.*}} stepping.c:28
+
+breakpoint set -f stepping.c -l 10
+# CHECK: Breakpoint 2: {{.*}} stepping.c:10
+
+breakpoint set -f stepping.c -l 19
+# CHECK: Breakpoint 3: {{.*}} stepping.c:19
+
+breakpoint set -f stepping.c -l 23
+# CHECK: Breakpoint 4: {{.*}} stepping.c:23
+
+run
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 1.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 2.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 3.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 4.1
+
+bt
+# CHECK: frame #0: {{.*}}`c
+# CHECK: frame #1: {{.*}}`b
+# CHECK: frame #2: {{.*}}`a
+
+# Continue and stop resulting from the step overs.
+
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+
+breakpoint disable 1
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 2
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 3
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 4
+# CHECK: 1 breakpoints disabled.
+
+# Continue to line 48.
+
+next
+# CHECK: stop reason = step over
+next
+# CHECK: stop reason = step over
+
+# Step into c.
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+
+# Finally continue until the end.
+
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} exited with status = 0
+
+# Generate the reproducer.
+reproducer generate
More information about the lldb-commits
mailing list