123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #!/bin/sh
- PERL_TESTSDIR="/usr/share/perl/perl-tests"
- PERL_LIBDIR="/usr/lib/perl5/%%PERL_VERSION%%/"
- PERL_DISABLEDTESTS="%%PERL_DISABLEDTESTS%%"
- no_run=""
- manual_run=""
- manual_run_no_base=""
- while [ ! -z "$1" ]; do
- case $1 in
- -n)
- no_run="yes"
- ;;
- -m)
- manual_run="yes"
- ;;
- -mb)
- manual_run="yes"
- manual_run_no_base="yes"
- ;;
- --help)
- echo "run_tests.sh [-n|-m|-mb|--help]"
- echo ""
- echo "Options:"
- echo " -n Just prepare the environment. Don't actually run any tests"
- echo " -m Run tests manually according to MANIFEST, instead of whatever t/TEST chooses"
- echo " -mb Don't run base tests. Implies -m"
- echo " --help Print this help ;)"
- echo ""
- exit 0
- ;;
- *)
- echo "Invalid argument: $1"
- ;;
- esac
- shift
- done
- if [ ! -f "$PERL_TESTSDIR/__prepared" ]; then
- # Many tests insist on having PERL5LIB in $PERL_TESTSDIR/lib. However,
- # that directory may also contain tests. Some of them(FindBin.t in particular)
- # also demand being located in a directory ending with "lib". So we can't do symlink
- # trickery here.
- # Our solution is to just copy PERL5LIB over.
- if [ -d "$PERL_TESTSDIR/lib" ]; then
- cp -a "$PERL_LIBDIR/"* "$PERL_TESTSDIR/lib/"
- else
- ln -s "$PERL_LIBDIR" "$PERL_TESTSDIR/lib"
- fi
- ln -s /usr/bin/perl "$PERL_TESTSDIR/perl"
- ln -s /usr/bin/perl "$PERL_TESTSDIR/t/perl"
- touch "$PERL_TESTSDIR/__prepared"
-
- for i in $PERL_DISABLEDTESTS; do
- echo "Disabling $i tests"
- sed 's!^'$i'.*$!!' -i $PERL_TESTSDIR/MANIFEST
- done
-
- cat $PERL_TESTSDIR/MANIFEST | grep -v '^$' > $PERL_TESTSDIR/MANIFEST_NEW
- rm $PERL_TESTSDIR/MANIFEST
- mv $PERL_TESTSDIR/MANIFEST_NEW $PERL_TESTSDIR/MANIFEST
- fi
- if [ -z "$no_run" ]; then
- cd "$PERL_TESTSDIR/t"
- if [ ! -z "$manual_run" ]; then
- for i in $(cat ../MANIFEST | sed 's/\t.*$//g' | grep '\.t$'); do
- if [ ! -z "$manual_run_no_base" ] && [ ! -z "$(echo $i | grep '^t/')" ]; then
- continue;
- fi
- echo "Running $i"
- ./TEST ../$i
- echo ""
- done
- else
- ./perl TEST
- fi
- fi
|