From 16046f7773d5c906f78217fd525c6c954aa57190 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 17 Jan 2018 03:22:07 +0000 Subject: [PATCH] tests: improve descriptor set syntax testing * tests/filtering_fd-syntax.test: New file. * tests/options-syntax.test: Move descriptor set syntax testing to filtering_fd-syntax.test. * tests/Makefile.am (MISC_TESTS): Add filtering_fd-syntax.test. Co-authored-by: Nikolay Marchuk --- tests/Makefile.am | 1 + tests/filtering_fd-syntax.test | 60 ++++++++++++++++++++++++++++++++++ tests/options-syntax.test | 11 ------- 3 files changed, 61 insertions(+), 11 deletions(-) create mode 100755 tests/filtering_fd-syntax.test diff --git a/tests/Makefile.am b/tests/Makefile.am index 18d25b5d..c1fd9cd9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -278,6 +278,7 @@ MISC_TESTS = \ detach-sleeping.test \ detach-stopped.test \ filter-unavailable.test \ + filtering_fd-syntax.test \ filtering_syscall-syntax.test \ fflush.test \ get_regs.test \ diff --git a/tests/filtering_fd-syntax.test b/tests/filtering_fd-syntax.test new file mode 100755 index 00000000..4f4e9c73 --- /dev/null +++ b/tests/filtering_fd-syntax.test @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Check descriptor set parsing syntax. +# +# Copyright (c) 2016 Dmitry V. Levin +# Copyright (c) 2016-2018 The strace developers. +# 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_fd_qualify() +{ + check_e "invalid descriptor '$1'" -e"read=$2" + check_e "invalid descriptor '$1'" -e "read=$2" + check_e "invalid descriptor '$1'" -e"write=$2" + check_e "invalid descriptor '$1'" -e "write=$2" +} + +for arg in '' , ,, ,,, ; do + check_fd_qualify "$arg" "$arg" + check_fd_qualify "!$arg" "!$arg" +done + +for arg in -1 -42 \ + not_fd \ + 2147483648 \ + 4294967296 \ + ; do + check_fd_qualify "$arg" "$arg" + check_fd_qualify "$arg" "1,$arg" + check_fd_qualify "$arg" "$arg,1" + check_fd_qualify "$arg" "!$arg" +done + +for arg in ! all none; do + check_fd_qualify "$arg" "1,$arg" + check_fd_qualify "!$arg" "1,!$arg" +done diff --git a/tests/options-syntax.test b/tests/options-syntax.test index 105837f7..5d20afd8 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 descriptor '-1'" -eread=-1 -check_e "invalid descriptor '-42'" -ewrite=-42 -check_e "invalid descriptor '2147483648'" -eread=2147483648 -check_e "invalid descriptor '4294967296'" -ewrite=4294967296 -check_e "invalid descriptor 'foo'" -eread=foo -check_e "invalid descriptor ''" -ewrite= -check_e "invalid descriptor ','" -eread=, -check_e "invalid descriptor '!'" -ewrite='!' -check_e "invalid descriptor '!'" -eread='0,!' -check_e "invalid descriptor '!,'" -ewrite='!,' - check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')" ff_name="$(printf '%4084s' ' ')" -- 2.40.0