#! /bin/sh
# Copyright (C) 2011 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 <http://www.gnu.org/licenses/>.

# Check parallel-tests features: runtime redefinition of:
#  - $(TEST_SUITE_LOG) and $(TESTS)
#  - $(TEST_SUITE_LOG) and $(TEST_LOGS)

am_parallel_tests=yes
. ./defs || Exit 1

cat >> configure.in <<'END'
AC_OUTPUT
END

cat > Makefile.am <<'END'
TESTS = pass.test pass2.test skip.test skip2.test fail.test
END

cat > pass.test <<'END'
#! /bin/sh
exit 0
END

cp pass.test pass2.test

cat > skip.test <<'END'
#! /bin/sh
echo "% skipped test %"
exit 77
END

cp skip.test skip2.test

cat > fail.test <<'END'
#! /bin/sh
exit 1
END

chmod a+x *.test

$ACLOCAL
$AUTOCONF
$AUTOMAKE -a

./configure

for test_list_override in \
  'TESTS=pass.test skip.test' \
  'TEST_LOGS=pass.log skip.log'
do
  env TEST_SUITE_LOG=partial.log "$test_list_override" \
    $MAKE -e check >stdout || { cat stdout; Exit 1; }
  cat stdout
  ls -l
  count_test_results total=2 pass=1 fail=0 skip=1 xfail=0 xpass=0 error=0
  cat pass.log
  cat skip.log
  cat partial.log
  test ! -f test-suite.log
  test ! -f pass2.log
  test ! -f skip2.log
  test ! -f fail.log
  grep '^PASS: pass\.test$' stdout
  grep '^SKIP: skip\.test$' stdout
  $FGREP 'SKIP: skip' partial.log
  $FGREP '% skipped test %' partial.log
  $EGREP '(pass2|skip2|fail)\.test' stdout && Exit 1
  $EGREP '(pass2|skip2|fail)' partial.log && Exit 1
  rm -f *.log
done

:
