| #!/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 |