Re: [PATCH] An implementation of pipe to make I/O communication between gdb and shell. [MinGW question]

Jan Kratochvil
2011-08-16T17:30:43Z

On Tue, 16 Aug 2011 19:25:21 +0200, Abhijit Halder wrote:
> --- src/gdb/testsuite/gdb.base/pipe.c 2011-08-16 22:37:37.785351001 +0530
> +++ dst/gdb/testsuite/gdb.base/pipe.c 2011-08-16 22:32:40.213350709 +0530

There isn't needed any .c file.

> diff -rup src/gdb/testsuite/gdb.base/pipe.exp dst/gdb/testsuite/gdb.base/pipe.exp
> --- src/gdb/testsuite/gdb.base/pipe.exp 2011-08-16 22:37:45.969351119 +0530
> +++ dst/gdb/testsuite/gdb.base/pipe.exp 2011-08-16 22:35:34.117356781 +0530
> @@ -0,0 +1,49 @@
> +# Copyright 2011 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/>.
> +
> +#
> +# test gdb pipe commands
> +#
> +
> +if $tracelevel then {
> + strace $tracelevel
> +}

This is rather redundant, please see:
http://sourceware.org/gdb/wiki/GDBTestcaseCookbook

> +
> +set testfile "pipe"
> +set srcfile ${testfile}.c
> +set binfile ${objdir}/${subdir}/${testfile}
> +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
> + untested pipe.exp
> + return -1
> +}
> +
> +if [get_compiler_info ${binfile}] {
> + return -1
> +}
> +
> +gdb_exit
> +gdb_start
> +gdb_reinitialize_dir ${srcdir}/${subdir}
> +gdb_load ${binfile}
> +
> +set end_main [gdb_get_line_number " end main " $srcfile]
> +
> +if ![runto_main] then {
> + fail "Can't run to main"
> + return 0
> +}

Just keep gdb_exit and gdb_start from all of this.

> +
> +gdb_test "pipe | bt | grep \"main\"" "\#0.*main.*().*at.*${srcfile}:${end_main}"
> +

I would not use `bt' which is very complicated and for the `pipe'
functionality arbitrary command - such as `print' - is enough.

But it is more important to test various many cases of pipe, such as various
non-standard delimiters besides "|", also the redirection of shell output,
using pipe in the shell part (double/triple pipe), testing the error cases
that they are caught correctly etc.

Thanks,
Jan