#! /bin/sh
# Copyright (C) 2004-2017 Free Software Foundation, Inc.
#
# This program 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 2, 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 <https://www.gnu.org/licenses/>.

# Test Automake's command-line options.

. test-init.sh

plan_ 17

# Usage: bad_cmdline DESCRIPTION REGEX-FOR-STDERR [ARGS-FOR-AUTOMAKE...]
do_check ()
{
  test $# -ge 3 || fatal_ "do_check: invalid usage"
  desc=$1; shift
  regex=$1; shift
  AUTOMAKE_fails -d "$desc (run)" -- "$@"
  command_ok_ "$desc (stderr)" grep "$regex" stderr
}

do_check 'invalid long option' 'unrecognized option.*--voo' --voo

# Older perl has a buggy Getopt::Long which makes this fail.
if $PERL -e 'require 5.8.2;'; then
  do_check "list of options terminated by '--'" \
           'input file.*--voo' -- --voo
else
  skip_row_ 2 -r "older perl with buggy Getopt::Long"
fi

do_check "empty argument" \
         'empty argument' ''

do_check "missing argument for long option" \
         'option.*-W.*requires an argument' -W

do_check "missing argument for short option" \
         'option.*--warnings.*requires an argument' --warnings

do_check "'--help' as option argument" \
         'unknown warning.*--help' --warnings --help

do_check "'--help' as option argument" \
         'unknown warning.*--help' --warnings --help

do_check "ambiguous incomplete option" \
         'unrecognized option.*--ver' --ver

command_ok_ "unambiguous incomplete long option" $AUTOMAKE --vers

:
