#!/bin/sh
#
# Check -e fault= syntax.
#
# Copyright (c) 2016-2018 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 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 \
	   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
