#! /bin/sh
# objectlist.test - make sure that a nonexisting objectlist file is properly
#                   mentioned and that the argument may contain spaces.
#
#   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
#   Written by Gary V. Vaughan, 2003
#
#   This file is part of GNU Libtool.
#
# GNU Libtool 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 of
# the License, or (at your option) any later version.
#
# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
####

. tests/defs || exit 1

# Try a sample link command.
linkresult=`$LIBTOOL -n --mode=link $CC -objectlist nonexistant 2>&1`
test $? -eq 0 && exit $EXIT_FAILURE

echo "$linkresult" | ${EGREP} "nonexistant" >/dev/null 2>&1 && {
  func_msg "$progname: error message contains -objectlist argument as expected"
}  || exit $EXIT_FAILURE


objlist="object list with spaces"
: > "$objlist"
linkresult=`$LIBTOOL -n --mode=link $CC -o a.out -objectlist "$objlist" 2>&1`
rm -f "$objlist"

echo "$linkresult" | ${EGREP} "spaces" >/dev/null 2>&1 && {
  func_msg "$progname: -objectlist with spaces in filename not recognized."
  exit $EXIT_FAILURE
} 

exit $EXIT_SUCCESS
