* tests/filtering_syscall-syntax.test: New file. * tests/syntax.sh: New file. * tests/options-syntax.test: Move syscall syntax testing to filtering_syscall-syntax.test. Move check_* functions to syntax.sh. * tests/Makefile.am (MISC_TESTS): Add filtering_syscall-syntax.test. (EXTRA_DIST): Add syntax.sh. --- tests/Makefile.am | 1 + tests/filtering_syscall-syntax.test | 91 +++++++++++++++++++++++++++++++++++++ tests/options-syntax.test | 17 ------- 3 files changed, 92 insertions(+), 17 deletions(-) create mode 100755 tests/filtering_syscall-syntax.test
diff --git a/tests/Makefile.am b/tests/Makefile.am index f038226e..6b90d710 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -257,6 +257,7 @@ MISC_TESTS = \ detach-stopped.test \ filter-unavailable.test \ fflush.test \ + filtering_syscall-syntax.test \ get_regs.test \ interactive_block.test \ ksysent.test \ diff --git a/tests/filtering_syscall-syntax.test b/tests/filtering_syscall-syntax.test new file mode 100755 index 00000000..698a894c --- /dev/null +++ b/tests/filtering_syscall-syntax.test @@ -0,0 +1,91 @@ +#!/bin/sh +# +# Check syscall set parsing syntax. +# +# Copyright (c) 2016-2017 Dmitry V. Levin <l...@altlinux.org> +# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikola...@gmail.com> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +. "${srcdir=.}/syntax.sh" + +check_syscall() +{ + check_e "invalid system call '$1'" -e trace="$2" + check_e "invalid system call '$1'" -e abbrev="$2" + check_e "invalid system call '$1'" -e verbose="$2" + check_e "invalid system call '$1'" -e raw="$2" +} + +# invalid syscall +for arg in '' , ,, ,,, : :: ::: \! \!, \ + invalid_syscall_name \ + -1 -2 -3 -4 -5 \ + 32767 \ + 2147483647 \ + 2147483648 \ + 4294967295 \ + 4294967296 \ + /non_syscall \ + % %not_a_class \ + ; do + check_syscall "$arg" "$arg" +done + +# invalid syscall with inversion +for arg in -1 -2 -3 -4 -5 \ + invalid_syscall_name \ + 32767 \ + 2147483647 \ + 2147483648 \ + 4294967295 \ + 4294967296 \ + /non_syscall \ + % %not_a_class \ + ; do + check_syscall "$arg" \!"$arg" +done + +# invalid syscall, multiple syscalls +for arg in file,nonsense \ + \!desc,nonsense \ + chdir,nonsense \ + \!chdir,nonsense \ + 1,nonsense \ + \!1,nonsense \ + ; do + check_syscall "nonsense" "$arg" +done + +# special cases +check_syscall ":" \!: +check_syscall "!" 1,\! +check_syscall "!open" 1,\!open +check_syscall "none" 1,none +check_syscall "all" 1,all + +check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id' +check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id' +check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id' +check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id' +check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id' diff --git a/tests/options-syntax.test b/tests/options-syntax.test index b4d9be70..47f6b66e 100755 --- a/tests/options-syntax.test +++ b/tests/options-syntax.test @@ -37,17 +37,6 @@ check_e "Invalid process id: 'a'" -p 1,a check_e "Syscall 'chdir' for -b isn't supported" -b chdir check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir -check_e "invalid system call '-1'" -e-1 -check_e "invalid system call '-2'" -e -2 -check_e "invalid system call '-3'" -etrace=-3 -check_e "invalid system call '-4'" -e trace=-4 -check_e "invalid system call '-5'" -e trace=1,-5 -check_e "invalid system call '/non_syscall'" -e trace=/non_syscall -check_e "invalid system call '2147483647'" -e 2147483647 -check_e "invalid system call '2147483648'" -e 2147483648 -check_e "invalid system call '4294967295'" -e 4294967295 -check_e "invalid system call '4294967296'" -e 4294967296 - check_e "invalid descriptor '-1'" -eread=-1 check_e "invalid descriptor '-42'" -ewrite=-42 check_e "invalid descriptor '2147483648'" -eread=2147483648 @@ -59,12 +48,6 @@ check_e "invalid descriptor '!'" -ewrite='!' check_e "invalid descriptor '!'" -eread='0,!' check_e "invalid descriptor '!,'" -ewrite='!,' -check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id' -check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id' -check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id' -check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id' -check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id' - check_h 'must have PROG [ARGS] or -p PID' check_h 'PROG [ARGS] must be specified with -D' -D -p $$ check_h '-c and -C are mutually exclusive' -c -C true -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel