From 5d376983ca914e1cf36f4968cc87957f9033ebcd Mon Sep 17 00:00:00 2001 From: Siva Chandra Date: Thu, 5 Jun 2014 07:03:56 -0700 Subject: [PATCH] Make xmethods tests not to depend on inferior IO. gdb/testsuite/ PR gdb/17017 * gdb.python/py-xmethods.cc: Add global function call counters and increment them in their respective functions. Remove "cout" statements. * gdb.python/py-xmethods.exp: Make tests check the global function call counters instead of depending on inferior IO. --- gdb/testsuite/ChangeLog | 9 ++++ gdb/testsuite/gdb.python/py-xmethods.cc | 32 +++++++++----- gdb/testsuite/gdb.python/py-xmethods.exp | 54 ++++++++++++++++++------ 3 files changed, 70 insertions(+), 25 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index bbd3243a63e..9a6aa77e216 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2014-06-18 Siva Chandra Reddy + + PR gdb/17017 + * gdb.python/py-xmethods.cc: Add global function call counters and + increment them in their respective functions. Remove "cout" + statements. + * gdb.python/py-xmethods.exp: Make tests check the global function + call counters instead of depending on inferior IO. + 2014-06-18 Don Breazeal * gdb.base/foll-fork.exp (default_fork_parent_follow): diff --git a/gdb/testsuite/gdb.python/py-xmethods.cc b/gdb/testsuite/gdb.python/py-xmethods.cc index 96637d8741f..96389fd1a1e 100644 --- a/gdb/testsuite/gdb.python/py-xmethods.cc +++ b/gdb/testsuite/gdb.python/py-xmethods.cc @@ -15,10 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include - -using namespace std; - namespace dop { @@ -35,24 +31,30 @@ public: A::~A () { } +int a_plus_a = 0; + int A::operator+ (const A &obj) { - cout << "From CC :" << endl; + a_plus_a++; return a + obj.a; } +int a_minus_a = 0; + int A::operator- (const A &obj) { - cout << "From CC :" << endl; + a_minus_a++; return a - obj.a; } +int a_geta = 0; + int A::geta (void) { - cout << "From CC A::geta:" << endl; + a_geta++; return a; } @@ -62,10 +64,12 @@ public: virtual int geta (void); }; +int b_geta = 0; + int B::geta (void) { - cout << "From CC B::geta:" << endl; + b_geta++; return 2 * a; } @@ -100,30 +104,36 @@ class G T t; }; +int g_size_diff = 0; + template template int G::size_diff () { - cout << "From CC G<>::size_diff:" << endl; + g_size_diff++; return sizeof (T1) - sizeof (T); } +int g_size_mul = 0; + template template int G::size_mul () { - cout << "From CC G<>::size_mul:" << endl; + g_size_mul++; return M * sizeof (T); } +int g_mul = 0; + template template T G::mul (const T1 t1) { - cout << "From CC G<>::mul:" << endl; + g_mul++; return t1 * t; } diff --git a/gdb/testsuite/gdb.python/py-xmethods.exp b/gdb/testsuite/gdb.python/py-xmethods.exp index 97b6ffa9943..a455a7a3f82 100644 --- a/gdb/testsuite/gdb.python/py-xmethods.exp +++ b/gdb/testsuite/gdb.python/py-xmethods.exp @@ -40,25 +40,45 @@ gdb_breakpoint [gdb_get_line_number "Break here."] gdb_continue_to_breakpoint "Break here" ".*Break here.*" # Tests before loading the debug methods. -gdb_test "p a1 + a2" "From CC .*15" "Before: a1 + a2" -gdb_test "p a2 - a1" "From CC .*5" "Before: a1 - a2" -gdb_test "p b1 - a1" "From CC .*25" "Before: b1 - a1" -gdb_test "p a1.geta()" "From CC A::geta.*5" "Before: a1.geta()" +gdb_test "p a1 + a2" ".* = 15" "Before: a1 + a2" +gdb_test "p a_plus_a" ".* = 1" "Before: a_plus_a 1" + +gdb_test "p a2 - a1" ".* = 5" "Before: a2 - a1" +gdb_test "p a_minus_a" ".* = 1" "Before: a_minus_a 1" + +gdb_test "p b1 - a1" ".* = 25" "Before: b1 - a1" +gdb_test "p a_minus_a" ".* = 2" "Before: a_minus_a 2" + +gdb_test "p a1.geta()" ".* = 5" "Before: a1.geta()" +gdb_test "p a_geta" ".* = 1" "Before: a_geta 1" + gdb_test "p ++a1" "No symbol.*" "Before: ++a1" gdb_test "p a1.getarrayind(5)" "Couldn't find method.*" \ "Before: a1.getarrayind(5)" -gdb_test "p a_ptr->geta()" "From CC B::geta.*60" "Before: a_ptr->geta()" -gdb_test "p e.geta()" "From CC A::geta.*100" "Before: e.geta()" -gdb_test "p g.size_diff()" "From CC G<>::size_diff.*" \ - "Before: g.size_diff()" + +gdb_test "p a_ptr->geta()" ".* = 60" "Before: a_ptr->geta()" +gdb_test "p b_geta" ".* = 1" "Before: b_geta 1" + +gdb_test "p e.geta()" ".* = 100" "Before: e.geta()" +gdb_test "p a_geta" ".* = 2" "Before: a_geta 2" + +# Since g.size_diff operates of sizes of int and float, do not check for +# actual result value as it could be different on different platforms. +gdb_test "p g.size_diff()" ".*" "Before: call g.size_diff()" +gdb_test "p g_size_diff" ".* = 2" "Before: g_size_diff 2" + gdb_test "p g.size_diff()" "Couldn't find method.*" \ "Before: g.size_diff()" -gdb_test "p g.size_mul<2>()" "From CC G<>::size_mul.*" \ - "Before: g.size_mul<2>()" + +gdb_test "p g.size_mul<2>()" ".*" "Before: g.size_mul<2>()" +gdb_test "p g_size_mul" ".* = 2" "Before: g_size_mul 2" + gdb_test "p g.size_mul<5>()" "Couldn't find method.*" \ "Before: g.size_mul<5>()" -gdb_test "p g.mul(2.0)" "From CC G<>::mul.*" \ - "Before: g.mul(2.0)" + +gdb_test "p g.mul(2.0)" ".* = 10" "Before: g.mul(2.0)" +gdb_test "p g_mul" ".* = 2" "Before: g_mul 2" + gdb_test "p g.mul('a')" "Couldn't find method.*" \ "Before: g.mul('a')" @@ -67,9 +87,15 @@ gdb_test_no_output "source ${xmethods_script}" "load the script file" # Tests after loading debug methods. gdb_test "p a1 + a2" "From Python .*15" "After: a1 + a2" -gdb_test "p a2 - a1" "From CC .*5" "After: a1 - a2" + +gdb_test "p a2 - a1" ".* = 5" "After: a2 - a1" +gdb_test "p a_minus_a" ".* = 3" "After: a_minus_a 3" + gdb_test "p b1 + a1" "From Python .*35" "After: b1 + a1" -gdb_test "p b1 - a1" "From CC .*25" "After: b1 - a1" + +gdb_test "p b1 - a1" ".* = 25" "After: b1 - a1" +gdb_test "p a_minus_a" ".* = 4" "After: a_minus_a 4" + gdb_test "p a1.geta()" "From Python .*5" "After: a1.geta()" gdb_test "p ++a1" "From Python .*6" "After: ++a1" gdb_test "p a1.getarrayind(5)" "From Python .*5" \ -- 2.30.2