#!/bin/sh
#
# Check -e fault= syntax.
#
# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
# 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=.}/init.sh"

#
# F
# F+
# F+S

fail_with()
{
	dump_log_and_fail_with \
		"strace -e fault=$* failed to handle an argument error properly"
}

for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
	   invalid_syscall_name \
	   invalid_syscall_name:when=3 \
	   -1 \!-1 \
	   -1:when=4 \
	   -2 \
	   -2:when=5 \
	   32767 \!32767 \
	   32767:when=6 \
	   chdir:42 \!chdir:42 \
	   chdir:42:when=7 \
	   chdir:invalid \
	   chdir:invalid:when=8 \
	   chdir:error= \
	   chdir:error=:when=10 \
	   chdir:error=invalid_error_name \
	   chdir:error=invalid_error_name:when=11 \
	   chdir:error=-1 \
	   chdir:error=-1:when=12 \
	   chdir:error=-2 \
	   chdir:error=-2:when=13 \
	   chdir:error=3+ \
	   chdir:error=3+:when=14 \
	   chdir:error=4096 \
	   chdir:error=4096:when=15 \
	   chdir:when=7:error=invalid_error_name \
	   chdir:when= \
	   chdir:when=:error=19 \
	   chdir:when=0 \
	   chdir:when=0:error=20 \
	   chdir:when=-1 \
	   chdir:when=-1:error=21 \
	   chdir:when=-2+ \
	   chdir:when=-2+:error=22 \
	   chdir:when=-3+0 \
	   chdir:when=-3+0:error=23 \
	   chdir:when=4- \
	   chdir:when=4-:error=24 \
	   chdir:when=5+- \
	   chdir:when=5+-:error=25 \
	   chdir:when=6++ \
	   chdir:when=6++:error=26 \
	   chdir:when=7+0 \
	   chdir:when=7+0:error=27 \
	   chdir:when=8+-1 \
	   chdir:when=8+-1:error=28 \
	   chdir:when=9+1+ \
	   chdir:when=9+1+:error=29 \
	   chdir:when=65536 \
	   chdir:when=65536:error=30 \
	   chdir:when=1+65536 \
	   chdir:when=1+65536:error=31 \
	   file,nonsense \
	   \!desc,nonsense \
	   chdir,nonsense \
	   \!chdir,nonsense \
	   1,nonsense \
	   \!1,nonsense \
	   chdir:retval=0 \
	   chdir:signal=1 \
	   chdir:error=1:error=2 \
	   ; do
	$STRACE -e fault="$arg" true 2> "$LOG" &&
		fail_with "$arg"
	LC_ALL=C grep -F 'invalid fault argument' < "$LOG" > /dev/null ||
		fail_with "$arg"
done

exit 0
