summaryrefslogtreecommitdiff
path: root/test/librechroot-test.sh
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2018-09-29 15:00:21 -0400
committerLuke Shumaker <lukeshu@lukeshu.com>2018-10-01 20:31:54 -0400
commitf2294c82afae36bbd5772a86c6689fd4c12c50f0 (patch)
tree76c4b79054cdc8d58430db4d932cb94ebe49e290 /test/librechroot-test.sh
parent872b692162a44307161aa98a3c5edaccc3c7b61a (diff)
(BATS) test: Move files around
But don't edit them yet. This directory structure is based on that of dbscripts.
Diffstat (limited to 'test/librechroot-test.sh')
-rw-r--r--test/librechroot-test.sh192
1 files changed, 0 insertions, 192 deletions
diff --git a/test/librechroot-test.sh b/test/librechroot-test.sh
deleted file mode 100644
index e476f6f..0000000
--- a/test/librechroot-test.sh
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/env roundup
-
-describe librechroot
-. ./test-common.sh
-
-it_creates_repo_for_new_chroots() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -l "$roundup_test_name" run test -r /repo/repo.db
-}
-
-it_cleans_the_local_repo_correctly() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -l "$roundup_test_name" make
- testsudo librechroot -l "$roundup_test_name" clean-repo
- testsudo librechroot -l "$roundup_test_name" run test -r /repo/repo.db
- # TODO: inspect /repo/* more
-}
-
-it_respects_exit_status_if_out_isnt_a_tty() (
- require network sudo || return 0
- set -o pipefail
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- { testsudo librechroot -l "$roundup_test_name" run bash -c 'exit 3' | cat; } || status=$?
-
- [[ $status == 3 ]]
-)
-
-it_creates_ca_certificates() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -l "$roundup_test_name" run test -r /etc/ssl/certs/ca-certificates.crt
-}
-
-it_disables_networking_when_requested() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
-
- testsudo librechroot -l "$roundup_test_name" run curl https://repo.parabola.nu/ >/dev/null
- not testsudo librechroot -l "$roundup_test_name" -N run curl https://repo.parabola.nu/ >/dev/null
-}
-
-it_handles_CHROOTEXTRAPKG_correctly() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
-
- not testsudo librechroot -l "$roundup_test_name" run lsof
- echo "CHROOTEXTRAPKG=(lsof)" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
- testsudo librechroot -l "$roundup_test_name" install-name lsof
- testsudo librechroot -l "$roundup_test_name" clean-pkgs
- testsudo librechroot -l "$roundup_test_name" run lsof
- echo "CHROOTEXTRAPKG=()" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
- testsudo librechroot -l "$roundup_test_name" clean-pkgs
- not testsudo librechroot -l "$roundup_test_name" run lsof
-}
-
-it_obeys_depends_in_PKGBUILD() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
-
- # Make sure it's not in the base install
- not testsudo librechroot -l "$roundup_test_name" run lsof
- # Make sure it removes it without the PKGBUILD
- testsudo librechroot -l "$roundup_test_name" install-name lsof
- testsudo librechroot -l "$roundup_test_name" run lsof
- testsudo librechroot -l "$roundup_test_name" clean-pkgs
- not testsudo librechroot -l "$roundup_test_name" run lsof
- # Make sure it leaves it with the PKGBUILD
- testsudo librechroot -l "$roundup_test_name" install-name lsof
- testsudo librechroot -l "$roundup_test_name" run sh -c 'printf "%s\n" "$1" > /startdir/PKGBUILD' -- "$(cat librechroot.d/PKGBUILD-arches)"
- # uid=99 is 'nobody', but we say '99' because sometimes 'nobody' is uid=65534.
- # https://bugs.archlinux.org/task/56828
- testsudo librechroot -l "$roundup_test_name" run chown -R 99:99 /startdir
- testsudo librechroot -l "$roundup_test_name" clean-pkgs
- testsudo librechroot -l "$roundup_test_name" run lsof
-}
-
-it_can_install_libretools_with_chcleanup() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
-
- not testsudo librechroot -l "$roundup_test_name" run test -f /usr/bin/chcleanup
- testsudo librechroot -l "$roundup_test_name" run mkdir /startdir
- testsudo librechroot -l "$roundup_test_name" run sh -c 'printf "%s\n" "$1" > /startdir/PKGBUILD' -- "$(cat librechroot.d/PKGBUILD-libretools)"
- # uid=99 is 'nobody', but we say '99' because sometimes 'nobody' is uid=65534.
- # https://bugs.archlinux.org/task/56828
- testsudo librechroot -l "$roundup_test_name" run chown -R 99:99 /startdir
- testsudo librechroot -l "$roundup_test_name" clean-pkgs
- testsudo librechroot -l "$roundup_test_name" run test -f /usr/bin/chcleanup
-}
-
-it_displays_help_as_normal_user() {
- rm -rf "$XDG_CONFIG_HOME"
- LC_ALL=C librechroot help >$tmpdir/stdout 2>$tmpdir/stderr
-
- [[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- empty $tmpdir/stderr
-}
-
-it_otherwise_fails_as_normal_user() {
- librechroot -l "$roundup_test_name" run true >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
-
- [[ $status != 0 ]]
- empty $tmpdir/stdout
- not empty $tmpdir/stderr
-}
-
-it_displays_help_and_fails_with_0_args() {
- LC_ALL=C librechroot -l "$roundup_test_name" >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
-
- [[ $status != 0 ]]
- empty $tmpdir/stdout
- [[ "$(sed -n 2p $tmpdir/stderr)" =~ Usage:.* ]]
-}
-
-it_obeys_the_n_flag() {
- require network sudo || return 0
-
- not test -f "$chrootdir/$roundup_test_name/$roundup_test_name/$roundup_test_name.stamp"
-
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -n "$roundup_test_name" -l "$roundup_test_name" run touch /"$roundup_test_name.stamp"
-
- test -f "$chrootdir/$roundup_test_name/$roundup_test_name/$roundup_test_name.stamp"
-}
-
-# requires sudo so we know it's not failing because it needs root
-it_fails_for_unknown_commands() {
- require sudo || return 0
- testsudo librechroot phony >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
-
- [[ $status != 0 ]]
- empty $tmpdir/stdout
- not empty $tmpdir/stderr
-}
-
-# requires sudo so we know it's not failing because it needs root
-it_fails_for_unknown_flags() {
- require sudo || return 0
- testsudo librechroot -q >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
-
- [[ $status != 0 ]]
- empty $tmpdir/stdout
- not empty $tmpdir/stderr
-}
-
-it_fails_when_syncing_a_copy_with_itself() {
- require sudo || return 0
- testsudo timeout 5 librechroot -l root sync || status=$?
- case $status in
- 0|124|137) # success|timeout+TERM|timeout+KILL
- false;;
- *)
- true;;
- esac
-}
-
-it_deletes_copies() {
- require network sudo || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -l "$roundup_test_name" make
- test -d "$chrootdir/default/$roundup_test_name"
- testsudo librechroot -l "$roundup_test_name" delete
- not test -e "$chrootdir/default/$roundup_test_name"
-}
-
-it_deletes_subvolumes_recursively() {
- require network sudo btrfs || return 0
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo librechroot -l "$roundup_test_name" make
- testsudo librechroot -l "$roundup_test_name" install-name btrfs-progs
- test -d "$chrootdir/default/$roundup_test_name"
- not test -e "$chrootdir/default/$roundup_test_name/var/subvolume"
- testsudo librechroot -l "$roundup_test_name" run btrfs subvolume create /var/subvolume
- test -d "$chrootdir/default/$roundup_test_name/var/subvolume"
- testsudo librechroot -l "$roundup_test_name" delete
- not test -e "$chrootdir/default/$roundup_test_name"
-}
-
-it_cleans_up_TMPDIR() {
- require network sudo || return 0
-
- local dir="$tmpdir/tmp"
- mkdir -- "$dir"
-
- libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- TMPDIR=$dir testsudo librechroot -l "$roundup_test_name" -A x86_64 make
-
- # Make sure $dir is now empty
- rmdir -- "$dir"
-}