From: Jacob Bachmeyer Date: Wed, 17 Mar 2021 03:02:50 +0000 (-0500) Subject: Add infrastructure for generic mock tools X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=df5408067df16d61eb04b45e5e6f29088be24b4d;p=gatekeeper.git Add infrastructure for generic mock tools --- diff --git a/testsuite/lib/exec/mocktool b/testsuite/lib/exec/mocktool new file mode 100755 index 0000000..cf836e4 --- /dev/null +++ b/testsuite/lib/exec/mocktool @@ -0,0 +1,61 @@ +#!/bin/bash +# -*- bash -*- + +# Copyright (C) 2021 Jacob Bachmeyer +# +# This file is part of a testsuite for the GNU FTP upload system. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Tool="${1?usage: mocktool }" +MockFile="${TEST_BASE_DIR:?}/mocks" + +if [ ! -f "$MockFile" ]; then + echo $0: line $LINENO: $MockFile not found 1>&2 + exit 1 +fi + +shift # drop $Tool from args +args="$Tool $*" +sorted_args=$(echo $(for arg in "$@"; do echo $arg; done | sort) ) +sorted_args="$Tool $sorted_args" + +matched=false +while read token rest ; do + if $matched; then + case $token in + ':'|':^') exit 0 ;; + '>') echo $rest ;; + '?') exit $rest ;; + esac + else + case $token in + ':') + if expr match "$args" "${rest}\$" >/dev/null; then + matched=true + fi + ;; + ':^') + if expr match "$sorted_args" "${rest}\$" >/dev/null; then + matched=true + fi + ;; + esac + fi +done < "$MockFile" + +echo $0: line $LINENO: eof reached reading $MockFile 1>&2 +exit 1 + +# EOF