On Mon, Jun 11, 2018 at 04:00:39PM -0600, Jeff Law wrote: > On 05/30/2018 04:41 AM, Tom de Vries wrote: > > Hi, > > > > this patch tests the error behaviour of dg-final directives when called > > with an > > incorrect number of arguments. > > > > The test is lazy, in that it doesn't bother to pass correct arguments, > > assuming > > that the number of arguments check is done before checking the actual > > arguments. > > > > Using the patch, I managed to find a few things that needed to be fixed: > > - [testsuite] Fix error message in scan-hidden/scan-not-hidden > > https://gcc.gnu.org/ml/gcc-patches/2018-05/msg01599.html > > - [testsuite] Use correct proc names in scanasm.exp > > https://gcc.gnu.org/ml/gcc-patches/2018-05/msg01600.html > > - [testsuite] Fix "too few/many" error messages in scan-*-times procs > > https://gcc.gnu.org/ml/gcc-patches/2018-05/msg01601.html > > > > Ok for trunk?
> > Add gcc.dg-selftests/dg-final.exp > > > > 2018-05-30 Tom de Vries <t...@codesourcery.com> > > > > * gcc.dg-selftests/dg-final.exp: New file. > OK. Hi, I've added two changes before commit. I've made the PASS/FAIL id minimal (removed the actual args part), which makes it easier to read: ... PASS: scan-tree-dump: too many arguments PASS: scan-tree-dump: too few arguments PASS: scan-tree-dump-times: too many arguments PASS: scan-tree-dump-times: too few arguments ... And I've move the test into a dedicated function dg_final_directive_check_num_args. Committed as attached. Thanks, - Tom [testsuite] Add gcc.dg-selftests/dg-final.exp 2018-05-30 Tom de Vries <tdevr...@suse.de> * gcc.dg-selftests/dg-final.exp: New file. --- gcc/testsuite/gcc.dg-selftests/dg-final.exp | 101 ++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/gcc/testsuite/gcc.dg-selftests/dg-final.exp b/gcc/testsuite/gcc.dg-selftests/dg-final.exp new file mode 100644 index 00000000000..6aa0f64db87 --- /dev/null +++ b/gcc/testsuite/gcc.dg-selftests/dg-final.exp @@ -0,0 +1,101 @@ +# Copyright (C) 2018 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 GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# Tests that test dejagnu extensions used in gcc testing + +load_lib "scantree.exp" +load_lib "scanrtl.exp" +load_lib "scanipa.exp" +load_lib "scanlang.exp" +load_lib "lto.exp" +load_lib "scanasm.exp" +load_lib "scanwpaipa.exp" +load_lib "scanltranstree.exp" +load_lib "scanoffloadtree.exp" + +proc dg_final_directive_check_num_args {} { + proc verify_call { args } { + set call_name [lindex $args 0] + set call_args [lindex $args 1] + set expected_error [lindex $args 2] + + set errMsg "" + catch { + eval $call_name $call_args + } errMsg + + if { "$errMsg" != "$call_name: $expected_error" } { + send_log "For call $call_name $call_args\n" + send_log "expected: $call_name: $expected_error\n" + send_log "but got: $errMsg\n" + fail "$call_name: $expected_error" + return + } else { + pass "$call_name: $expected_error" + } + } + + proc verify_args { args } { + set proc_name [lindex $args 0] + set min [lindex $args 1] + set max [lindex $args 2] + set too_many [list] + set too_few [list] + for {set i 0} {$i < $min - 1} {incr i} { + lappend too_few $i + } + for {set i 0} {$i < $max + 1} {incr i} { + lappend too_many $i + } + verify_call $proc_name $too_many "too many arguments" + verify_call $proc_name $too_few "too few arguments" + } + + foreach kind [list "tree" "rtl" "ipa" "ltrans-tree" "wpa-ipa" "offload-tree"] { + verify_args scan-$kind-dump 2 3 + verify_args scan-$kind-dump-times 3 4 + verify_args scan-$kind-dump-not 2 3 + verify_args scan-$kind-dump-dem 2 3 + verify_args scan-$kind-dump-dem-not 2 3 + } + + verify_args scan-lang-dump 2 3 + + verify_args object-readelf 2 3 + + verify_args scan-assembler-times 2 3 + verify_args scan-assembler-dem 1 2 + verify_args scan-assembler-dem-not 1 2 + + verify_args object-size 3 4 + + global testname_with_flags + set testname_with_flags "test.c" + verify_args scan-assembler 1 2 + verify_args scan-assembler-not 1 2 + verify_args scan-hidden 1 2 + verify_args scan-not-hidden 1 2 + verify_args scan-file 2 3 + verify_args scan-file-not 2 3 + verify_args scan-stack-usage 1 2 + verify_args scan-stack-usage-not 1 2 + verify_args scan-ada-spec 1 2 + verify_args scan-ada-spec-not 1 2 + verify_args scan-lto-assembler 1 2 + unset testname_with_flags +} + +dg_final_directive_check_num_args