gdb/testsuite: Reduce test name duplication in gdb.base tests
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / charset.exp
index 8d1d6543ad81918fba184fb55f81c8d4b5db95b1..16e986c51906d4261a703abaef7064c862acf57b 100644 (file)
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright 2001-2019 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
 
 # Test GDB's character set support.
 
-if $tracelevel then {
-       strace $tracelevel
-}
 
-set prms_id 0
-set bug_id 0
+standard_testfile .c charset-malloc.c
 
-set testfile "charset"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-    untested "couldn't compile ${srcdir}/${subdir}/${srcfile}"
+if { [prepare_for_testing "failed to prepare" ${testfile} [list $srcfile $srcfile2]] } {
     return -1
 }
 
-# Start with a fresh gdb.
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
 # Parse the output from a `show charset' command.  Return the host
 # and target charset as a two-element list.
 proc parse_show_charset_output {testname} {
@@ -160,7 +146,7 @@ gdb_expect {
 # sets: "auto" and the default.  In this situation, this set of tests
 # is pointless.
 if {[llength [array names charsets]] < 3} {
-    untested charset.exp
+    untested "fewer than 3 charsets"
     return -1
 }
 
@@ -189,7 +175,7 @@ gdb_expect {
 # We don't want to test all the charset names here, since that would
 # be too many combinations.  We we pick a subset.
 set charset_subset {ASCII ISO-8859-1 EBCDIC-US IBM1047}
-foreach host_charset $charset_subset {
+foreach_with_prefix host_charset $charset_subset {
     if {[valid_host_charset $host_charset]} {
 
         set testname "try `set host-charset $host_charset'"
@@ -338,18 +324,7 @@ gdb_test "break ${srcfile}:[gdb_get_line_number "all strings initialized"]" \
          ".*Breakpoint.* at .*" \
          "set breakpoint after all strings have been initialized"
 gdb_run_cmd
-gdb_expect {
-    -re "Breakpoint.*all strings initialized.*$gdb_prompt $" {
-        pass "run until all strings have been initialized"
-    }
-    -re "$gdb_prompt $" {
-        fail "run until all strings have been initialized"
-    }
-    timeout {
-        fail "run until all strings have been initialized (timeout)"
-    }
-}
-
+gdb_test "" "Breakpoint.*all strings initialized.*" "run until all strings have been initialized"
 
 # We only try the wide character tests on machines where the wchar_t
 # typedef in the test case has the right size.
@@ -363,7 +338,7 @@ if {$wchar_size == 2} {
     set wchar_ok 1
 }
 
-gdb_test "set host-charset ASCII" ""
+gdb_test_no_output "set host-charset ASCII"
 foreach target_charset $charset_subset {
     if {![valid_target_charset $target_charset]} {
        continue
@@ -376,15 +351,7 @@ foreach target_charset $charset_subset {
        set param target-charset
        set L ""
     }
-    send_gdb "set $param $target_charset\n" 
-    gdb_expect {
-        -re "$gdb_prompt $" {
-            pass "set $param $target_charset"
-        }
-        timeout {
-            fail "set $param $target_charset (timeout)"
-        }
-    }
+    gdb_test_no_output "set $param $target_charset"
 
     # Try printing the null character.  There seems to be a bug in
     # gdb_test that requires us to use gdb_expect here.
@@ -523,7 +490,7 @@ foreach target_charset $charset_subset {
 }
 
 # Reset the target charset.
-gdb_test "set target-charset UTF-8" ""
+gdb_test_no_output "set target-charset UTF-8"
 
 # \242 is not a valid UTF-8 character.
 gdb_test "print \"\\242\"" " = \"\\\\242\"" \
@@ -562,6 +529,12 @@ if {$wchar_ok} {
 }
 
 set ucs2_ok [expr {[get_sizeof char16_t 99] == 2}]
+
+if ![valid_host_charset "UTF-16"] {
+    verbose -log "Disabling UTF-16 tests."
+    set ucs2_ok 0
+}
+
 if {$ucs2_ok} {
     test_wide_or_unicode u UTF-16
 }
@@ -593,7 +566,7 @@ if {$ucs2_ok && $ucs4_ok} {
 
 if {$ucs2_ok} {
     set go 1
-    gdb_test_multiple "python print 'hello, world!'" \
+    gdb_test_multiple "python print ('hello, world!')" \
        "verify python support for charset tests" {
            -re "not supported.*$gdb_prompt $"  {
                unsupported "python support is disabled"
@@ -606,7 +579,7 @@ if {$ucs2_ok} {
        gdb_test "print u\"abcdef\"" " = u\"abcdef\"" \
            "set up for python printing of utf-16 string"
 
-       gdb_test "python print gdb.history(0).string()" "abcdef" \
+       gdb_test "python print (gdb.history(0).string())" "abcdef" \
            "extract utf-16 string using python"
     }
 }
@@ -618,19 +591,34 @@ gdb_test "print 'a' == 'a' || 'b' == 'b'" \
 
 
 proc string_display { var_name set_prefix x_size x_type} {
-  gdb_test "set ${var_name} = ${set_prefix}\"Test String\\0with zeroes\"" "" "Assign ${var_name} with prefix ${set_prefix}"
-  gdb_test "x /2${x_size}s ${var_name}" ".* ${x_type}\"Test String\"\[\r\n\]+.* ${x_type}\"with zeroes\"" "Display String ${var_name} with x/${x_size}s"
+    with_test_prefix "set_prefix=$set_prefix" {
+       gdb_test_no_output "set ${var_name} = ${set_prefix}\"Test String\\0with zeroes\""\
+           "assign ${var_name} with prefix ${set_prefix}"
+       gdb_test "x /2${x_size}s ${var_name}" ".*\t${x_type}\"Test String\"\[\r\n\]+.*\t${x_type}\"with zeroes\"" \
+           "display String ${var_name} with x/${x_size}s"
+    }
 }
 
-string_display String16 u h u
-if {$wchar_size == 2} {
-  string_display String16 L h u
+if {$ucs2_ok} {
+    string_display String16 u h u
+    if {$wchar_size == 2} {
+       string_display String16 L h u
+    }
 }
+
 string_display String32 U w U
 if {$wchar_size == 4} {
   string_display String32 L w U
 }
 
 
+foreach name {short int long} {
+    # We're really just checking to make sure this doesn't give an
+    # error.
+    gdb_test "print ${name}_array = \"hi\"" \
+       " = {.*}" \
+       "assign string to $name array"
+}
+
+
 gdb_exit 
This page took 0.049143 seconds and 4 git commands to generate.