diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/startup-with-shell.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/startup-with-shell.exp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/startup-with-shell.exp b/gdb/testsuite/gdb.base/startup-with-shell.exp new file mode 100644 index 0000000..af06c88 --- /dev/null +++ b/gdb/testsuite/gdb.base/startup-with-shell.exp @@ -0,0 +1,89 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2017 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 test doesn't make sense on native-gdbserver. +if { [use_gdb_stub] } { + untested "not supported" + return +} + +# There's no easy way to set environment variables on remote targets +# (via dejagnu) yet. +if { [is_remote target] } { + untested "remote board" + return +} + +standard_testfile + +if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } { + return -1 +} + +set unique_file [standard_output_file "unique-file.unique-extension"] +set unique_file_dir [standard_output_file ""] + +run_on_host "touch $unique_file" "touch" "$unique_file" + +# Initial setup for simple test (wildcard expansion, variable substitution). + +proc initial_setup_simple { startup_with_shell run_args } { + global hex decimal binfile unique_file + + clean_restart $binfile + + gdb_test_no_output "set startup-with-shell $startup_with_shell" + + gdb_test_no_output "set args $run_args" + + set test "inferior started" + if { [runto_main] } { + pass $test + } else { + fail $test + } +} + +## Run the actual tests + +with_test_prefix "startup_with_shell = on; run_args = *.unique-extension" { + initial_setup_simple "on" "$unique_file_dir/*.unique-extension" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"$unique_file\"" \ + "first argument expanded" +} + +with_test_prefix "startup_with_shell = off; run_args = *.unique-extension" { + initial_setup_simple "off" "$unique_file_dir/*.unique-extension" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"$unique_file_dir/\\\*\.unique-extension\"" \ + "first argument not expanded" +} + +with_test_prefix "startup_with_shell = on; run_args = \$TEST" { + set env(TEST) "1234" + initial_setup_simple "on" "\$TEST" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"1234\"" \ + "testing first argument" + unset env(TEST) +} + +with_test_prefix "startup_with_shell = off; run_args = \$TEST" { + set env(TEST) "1234" + initial_setup_simple "off" "\$TEST" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"\\\$TEST\"" \ + "testing first argument" + unset env(TEST) +} |