# execute-mode.at -- libtool --mode=execute             -*- Autotest -*-
#
#   Copyright (C) 2008 Free Software Foundation, Inc.
#   Written by Ralf Wildenhues, 2008
#
#   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.
####

AT_SETUP([execute mode])
AT_KEYWORDS([libtool])

AT_DATA([foo],
[[#! /bin/sh
if test $# -gt 0; then
  echo "$@"
else
  :
fi
]])

AT_DATA([lt-wrapper],
[[#! /bin/sh
# Generated by GNU libtool.
# fake wrapper script.
program=lt-real
progdir=.
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
  # Run the actual program with our arguments.
  exec "$progdir/$program" ${1+"$@"}
  echo "$0: cannot exec $program $*" >&2
  exit 1
fi
]])

AT_DATA([lt-real],
[[#! /bin/sh
echo "$@"
cat
]])

AT_DATA([libfakelib.la],
[[# libfakelib.la - a libtool library file
# Generated by ltmain.sh (GNU libtool 1.2605 2008/03/04 22:31:32) 2.3a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

dlname=''
library_names=''
old_library='libfakelib.a'
inherited_linker_flags=''
dependency_libs=''
weak_library_names=''
current=
age=
revision=
installed=no
shouldnotlink=yes
dlopen=''
dlpreopen=''
libdir=''
]])

mkdir sub
cp foo sub/foo
chmod +x foo sub/foo lt-wrapper lt-real

AT_CHECK([$LIBTOOL --mode=execute ./foo])
AT_CHECK([$LIBTOOL --mode=execute sub/foo])
AT_CHECK([$LIBTOOL --mode=execute ./foo foo], [], [foo
])
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo </dev/null], [], [foo
])
AT_CHECK([cd sub && $LIBTOOL --mode=execute ./foo ../foo], [], [../foo
])
# suppose that ./foo is gdb, and lt-wrapper is the wrapper script.
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper bar baz </dev/null], [],
	 [./lt-real bar baz
])

# check that stdin works even with -dlopen.
AT_CHECK([echo bar | $LIBTOOL --mode=execute -dlopen libfakelib.la ./lt-wrapper foo],
	 [], [foo
bar
])

# Check that a missing real program causes an error.
# The error message and code are likely to be 126,
# "No such file or directory" but system-dependent.
mv -f lt-real lt-backup
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper foo </dev/null || exit 1],
	 [1], [ignore], [ignore])
mv -f lt-backup lt-real

# Now use arguments that require decent quoting.
AT_CHECK([$LIBTOOL --mode=execute ./foo "arg  with special chars: \$!&*\`'()"],
	 [], [arg  with special chars: $!&*`'()
])
AT_CHECK([$LIBTOOL --mode=execute ./lt-wrapper "arg  with special chars: \$!&*\`'()" </dev/null],
	 [], [arg  with special chars: $!&*`'()
])
AT_CHECK([$LIBTOOL --mode=execute ./foo lt-wrapper "arg  with special chars: \$!&*\`'()"],
	 [], [./lt-real arg  with special chars: $!&*`'()
])

AT_CLEANUP
