On Fri, Aug 11, 2017 at 05:43:46PM +0700, Nikolay Marchuk wrote:
> * 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.

The commit message is out of sync with the change itself.

> ---
>  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"

consider adding -equal=... (without space) variants, as well as
-e "$2"
[ -z "$2" ] || ... -e"$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

These two groups of tests have a lot in common.
Could you reduce the redundancy, please?

> +
> +# 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

for arg in file desc chdir 1; do
        check_syscall nonsense "$arg,nonsense"
        check_syscall nonsense "!$arg,nonsense"
done
- isn't it shorter and easier to read?

> +
> +# special cases
> +check_syscall ":"    \!:

Why this case is special?  isn't it an "invalid syscall with inversion"?

> +check_syscall "!"    1,\!
> +check_syscall "!open"        1,\!open
> +check_syscall "none" 1,none
> +check_syscall "all"  1,all

for arg in \! \!open none all; do
        check_syscall "$arg" "1,$arg"
done
- isn't it shorter and easier to read?

> +
> +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

If you remove -e-1, -e -2, and -etrace=-3,
please add them or their analogues somewhere else.


-- 
ldv

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
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

Reply via email to