Index: gdb/testsuite/gdb.python/py-strfns.exp |
diff --git a/gdb/testsuite/gdb.python/py-strfns.exp b/gdb/testsuite/gdb.python/py-strfns.exp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..daeb852bb75a99f85a642be295148106202c638e |
--- /dev/null |
+++ b/gdb/testsuite/gdb.python/py-strfns.exp |
@@ -0,0 +1,94 @@ |
+# Copyright (C) 2012-2013 Free Software Foundation, Inc. |
+ |
+# This program is free software; you can redistribute it and/or modify |
+# it under the terms of the GNU General Public License as published by |
+# the Free Software Foundation; either version 3 of the License, or |
+# (at your option) any later version. |
+# |
+# This program is distributed in the hope that it will be useful, |
+# but WITHOUT ANY WARRANTY; without even the implied warranty of |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+# GNU General Public License for more details. |
+# |
+# You should have received a copy of the GNU General Public License |
+# along with this program. If not, see <http://www.gnu.org/licenses/>. |
+ |
+# This file is part of the GDB testsuite. It tests the convenience |
+# functions in strfns.py. |
+ |
+load_lib gdb-python.exp |
+ |
+standard_testfile |
+ |
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { |
+ return -1 |
+} |
+ |
+if ![runto_main] { |
+ return 0 |
+} |
+ |
+# Skip all tests if Python scripting is not enabled. |
+if { [skip_python_tests] } { continue } |
+ |
+proc test_all_strfns { } { |
+ gdb_test "p \$_streq (str1, str2)" " = 1" |
+ gdb_test "p \$_streq (str1, str3)" " = 0" |
+ |
+ gdb_test "p \$_strlen (str1)" " = 6" |
+ gdb_test "p \$_strlen (buf1)" " = 0" |
+ |
+ gdb_test "p \$_memeq (buf1, buf2, 4)" " = 1" |
+ gdb_test "p \$_memeq (buf1, buf3, 4)" " = 0" |
+ |
+ gdb_test {p $_regex (str1, "Hello")} " = 1" |
+ gdb_test {p $_regex (str1, "Help")} " = 0" |
+ gdb_test {p $_regex (str1, "^Hello")} " = 1" |
+ gdb_test {p $_regex (str1, "^Hello.$")} " = 1" |
+} |
+ |
+test_all_strfns |
+ |
+# Verify use in a conditional breakpoint. |
+ |
+gdb_breakpoint [gdb_get_line_number "Break func here."] |
+gdb_test_no_output "condition \$bpnum \$_streq (arg, \"Goodbye.\")" |
+gdb_continue_to_breakpoint "Break func here." |
+gdb_test "p arg" "= $hex <str3> \"Goodbye.\"" |
+ |
+gdb_breakpoint [gdb_get_line_number "Break bfunc here."] |
+gdb_test_no_output "condition \$bpnum \$_memeq (arg, buf3, 4)" |
+gdb_continue_to_breakpoint "Break bfunc here." |
+gdb_test "p /d {char\[4\]} arg" "= \\{0, 1, 2, 4\\}" |
+ |
+# Verify use on a core file. |
+ |
+proc test_strfns_core_file { } { |
+ global gdb_prompt testfile |
+ |
+ set filename [standard_output_file py-strfns.core] |
+ |
+ if {![gdb_gcore_cmd "$filename" "save a corefile"]} { |
+ # No use proceeding from here. |
+ return |
+ } |
+ |
+ clean_restart $testfile |
+ |
+ gdb_test_multiple "core $filename" \ |
+ "re-load generated corefile" \ |
+ { |
+ -re "Core was generated by .*$gdb_prompt $" { |
+ pass "re-load generated corefile" |
+ } |
+ -re ".*$gdb_prompt $" { |
+ fail "re-load generated corefile" |
+ # No use proceeding from here. |
+ return |
+ } |
+ } |
+ |
+ test_all_strfns |
+} |
+ |
+test_strfns_core_file |