#!/bin/sh
# Run a subset of the upstream tests which work in an unbuilt tree against the
# system installed package; these have been selected with
#
#   for t in */*; do if env LANG= $t >/dev/null 2>&1; then echo $t; fi; done
set -e

# ensure that we do not stumble over translations
unset LANG
unset LANGUAGE
export LC_ALL=C
fails=0
cd tests

for test in \
    chmod/c-option \
    chmod/equals \
    chmod/equal-x \
    chmod/inaccessible \
    chmod/octal \
    chmod/setgid \
    chmod/silent \
    chmod/thru-dangling \
    chmod/umask-x \
    chmod/usage \
    chown/deref \
    chown/separator \
    cp/abuse \
    cp/backup-1 \
    cp/backup-dir \
    cp/backup-is-src \
    cp/cp-deref \
    cp/cp-HL \
    cp/cp-i \
    cp/cp-mv-backup \
    cp/cp-parents \
    cp/deref-slink \
    cp/dir-rm-dest \
    cp/dir-slash \
    cp/dir-vs-file \
    cp/existing-perm-dir \
    cp/file-perm-race \
    cp/into-self \
    cp/link \
    cp/link-no-deref \
    cp/link-preserve \
    cp/link-symlink \
    cp/no-deref-link1 \
    cp/no-deref-link2 \
    cp/no-deref-link3 \
    cp/parent-perm \
    cp/parent-perm-race \
    cp/preserve-2 \
    cp/preserve-link \
    cp/proc-short-read \
    cp/proc-zero-len \
    cp/reflink-perm \
    cp/r-vs-symlink \
    cp/same-file \
    cp/slink-2-slink \
    cp/special-f \
    cp/src-base-dot \
    cp/symlink-slash \
    cp/thru-dangling \
    dd/misc \
    dd/nocache \
    dd/not-rewound \
    dd/reblock \
    dd/skip-seek2 \
    dd/stderr \
    dd/unblock-sync \
    du/basic \
    du/deref \
    du/deref-args \
    du/exclude \
    du/files0-from-dir \
    du/hard-link \
    du/long-sloop \
    du/max-depth \
    du/no-deref \
    du/one-file-system \
    du/restore-wd \
    du/slash \
    du/slink \
    du/trailing-slash \
    du/two-args \
    install/trap \
    ln/backup-1 \
    ln/hard-backup \
    ln/hard-to-sym \
    ln/sf-1 \
    ln/slash-decorated-nonexistent-dest \
    ln/target-1 \
    ls/abmon-align \
    ls/color-clear-to-eol \
    ls/color-dtype-dir \
    ls/color-norm \
    ls/dangle \
    ls/dired \
    ls/file-type \
    ls/follow-slink \
    ls/infloop \
    ls/inode \
    ls/m-option \
    ls/multihardlink \
    ls/no-arg \
    ls/proc-selinux-segfault \
    ls/readdir-mountpoint-inode \
    ls/recursive \
    ls/rt-1 \
    ls/stat-dtype \
    ls/stat-free-symlinks \
    ls/stat-vs-dirent \
    ls/symlink-slash \
    ls/x-option \
    misc/cat-proc \
    misc/chcon-fail \
    misc/chroot-fail \
    misc/csplit \
    misc/csplit-1000 \
    misc/date-sec \
    misc/df \
    misc/df-P \
    misc/env-null \
    misc/false-status \
    misc/fmt-long-line \
    misc/head-c \
    misc/head-pos \
    misc/id-groups \
    misc/invalid-opt \
    misc/ls-time \
    misc/md5sum-parallel \
    misc/mknod \
    misc/nice \
    misc/nice-fail \
    misc/nl \
    misc/nproc-avail \
    misc/nproc-positive \
    misc/od-float \
    misc/od-multiple-t \
    misc/od-N \
    misc/od-x8 \
    misc/printenv \
    misc/printf-hex \
    misc/ptx-overrun \
    misc/pwd-option \
    misc/runcon-no-reorder \
    misc/shred-exact \
    misc/shred-passes \
    misc/sort-compress \
    misc/sort-debug-keys \
    misc/sort-debug-warn \
    misc/sort-month \
    misc/sort-rand \
    misc/sort-unique \
    misc/sort-version \
    misc/stat-fmt \
    misc/stat-hyphen \
    misc/stat-mount \
    misc/stat-nanoseconds \
    misc/stat-slash \
    misc/sum-sysv \
    misc/tee \
    misc/tee-dash \
    misc/timeout \
    misc/timeout-group \
    misc/tr-case-class \
    misc/truncate-dangling-symlink \
    misc/truncate-dir-fail \
    misc/truncate-fifo \
    misc/truncate-no-create-missing \
    misc/truncate-parameters \
    misc/truncate-relative \
    misc/uniq-perf \
    misc/wc-files0 \
    misc/wc-parallel \
    mkdir/p-1 \
    mkdir/p-2 \
    mkdir/parents \
    mkdir/perm \
    mkdir/p-slashdot \
    mkdir/p-thru-slink \
    mkdir/p-v \
    mkdir/special-1 \
    mkdir/t-slash \
    mv/atomic \
    mv/atomic2 \
    mv/backup-dir \
    mv/diag \
    mv/dir2dir \
    mv/dir-file \
    mv/force \
    mv/hard-4 \
    mv/hard-verbose \
    mv/i-4 \
    mv/i-5 \
    mv/i-link-no \
    mv/into-self \
    mv/into-self-3 \
    mv/into-self-4 \
    mv/mv-n \
    mv/no-target-dir \
    mv/trailing-slash \
    mv/update \
    readlink/rl-1 \
    rm/dangling-symlink \
    rm/deep-1 \
    rmdir/fail-perm \
    rmdir/ignore \
    rm/dir-nonrecur \
    rm/dir-no-w \
    rmdir/t-slash \
    rm/dot-rel \
    rm/f-1 \
    rm/i-1 \
    rm/i-no-r \
    rm/interactive-always \
    rm/interactive-once \
    rm/ir-1 \
    rm/one-file-system2 \
    rm/r-1 \
    rm/r-2 \
    rm/r-3 \
    rm/r-4 \
    rm/readdir-bug \
    rm/sunos-1 \
    rm/v-slash \
    split/b-chunk \
    split/filter \
    split/l-chunk \
    split/lines \
    split/suffix-length \
    tail-2/follow-stdin \
    tail-2/F-vs-rename \
    tail-2/infloop-1 \
    tail-2/inotify-hash-abuse \
    tail-2/inotify-hash-abuse2 \
    tail-2/pipe-f \
    tail-2/pipe-f2 \
    tail-2/proc-ksyms \
    tail-2/start-middle \
    tail-2/tail-n0f \
    tail-2/wait \
    touch/60-seconds \
    touch/dangling-symlink \
    touch/dir-1 \
    touch/empty-file \
    touch/fifo \
    touch/no-create-missing \
    touch/no-rights \
    touch/obsolescent \
    touch/relative \
    touch/trailing-slash \
; do
    echo "$test"
    OUT=$($test 2>&1) || { fails=$((fails+1)); echo "FAIL:"; echo "$OUT"; }
done

echo $fails tests failed
exit $fails
