summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/aur-test.sh8
-rw-r--r--test/is_built-test.sh28
-rw-r--r--test/lib-blacklist-test.sh34
-rw-r--r--test/lib-conf-test.sh2
-rw-r--r--test/lib-messages-test.sh8
-rw-r--r--test/librechroot-test.sh79
-rw-r--r--test/librefetch-test.sh48
-rw-r--r--test/librefetch.d/PKGBUILD15
-rw-r--r--test/librefetch.d/list.txt2
-rw-r--r--test/librelib-test.sh12
-rw-r--r--test/libremakepkg-test.sh78
-rw-r--r--test/libremakepkg.d/PKGBUILD-netbuild17
-rw-r--r--test/libremakepkg.d/PKGBUILD-netpackage12
-rw-r--r--test/libremakepkg.d/PKGBUILD-netprepare17
-rw-r--r--test/libremakepkg.d/PKGBUILD-testpkg119
-rw-r--r--test/libremakepkg.d/PKGBUILD-testpkg219
-rw-r--r--test/librerelease-test.sh56
-rw-r--r--test/librestage-test.sh12
-rw-r--r--test/pkgbuild-check-licenses-test.sh27
-rw-r--r--test/pkgbuild-check-nonfree-test.sh31
-rw-r--r--test/test-common.sh44
-rwxr-xr-xtest/testenv5
22 files changed, 454 insertions, 119 deletions
diff --git a/test/aur-test.sh b/test/aur-test.sh
index 1fbe659..5de590b 100644
--- a/test/aur-test.sh
+++ b/test/aur-test.sh
@@ -13,18 +13,18 @@ after() {
}
it_displays_help() {
- LANG=C aur -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C aur -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
it_fails_with_0_args() {
aur >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
# TODO: Actually test
diff --git a/test/is_built-test.sh b/test/is_built-test.sh
index 62847e5..f7f6c65 100644
--- a/test/is_built-test.sh
+++ b/test/is_built-test.sh
@@ -13,48 +13,48 @@ after() {
}
it_displays_help() {
- LANG=C is_built -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C is_built -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
it_fails_with_0_args() {
is_built >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat -gt 1 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_succeeds_with_1_arg() {
is_built sh >$tmpdir/stdout 2>$tmpdir/stderr
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ empty $tmpdir/stderr
}
it_returns_1_for_non_existent_package() {
is_built phony-ne-package 100 >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
- [[ $stat == 1 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ [[ $stat == 1 ]]
+ empty $tmpdir/stdout
+ empty $tmpdir/stderr
}
it_returns_1_for_future_packages() {
# If emacs ever goes rapid release, we might need to change this :P
is_built emacs 100 >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
- [[ $stat == 1 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ [[ $stat == 1 ]]
+ empty $tmpdir/stdout
+ empty $tmpdir/stderr
}
it_returns_0_for_past_packages() {
# If emacs ever goes rapid release, we might need to change this :P
is_built emacs 1 >$tmpdir/stdout 2>$tmpdir/stderr
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ empty $tmpdir/stderr
}
diff --git a/test/lib-blacklist-test.sh b/test/lib-blacklist-test.sh
index c496167..9dfd5da 100644
--- a/test/lib-blacklist-test.sh
+++ b/test/lib-blacklist-test.sh
@@ -45,26 +45,26 @@ it_works_with_colons_in_reason() {
v="$(libreblacklist get-reason <<<"$line")"; [[ $v == 'my:reason' ]]
}
-it_fails_update_when_there_is_no_blacklist_or_network() {
+it_fails_update_with_no_blacklist_or_network() {
mkdir -p $XDG_CONFIG_HOME/libretools
echo "BLACKLIST='phony://example.com'" >$XDG_CONFIG_HOME/libretools/libretools.conf
libreblacklist update >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
-it_fails_cat_when_there_is_no_blacklist_or_network() {
+it_fails_cat_with_no_blacklist_or_network() {
mkdir -p $XDG_CONFIG_HOME/libretools
echo "BLACKLIST='phony://example.com'" >$XDG_CONFIG_HOME/libretools/libretools.conf
libreblacklist cat >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_fails_update_when_BLACKLIST_is_unset() {
@@ -74,8 +74,8 @@ it_fails_update_when_BLACKLIST_is_unset() {
libreblacklist update >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_fails_cat_when_syntax_error_in_conf() {
@@ -86,8 +86,8 @@ it_fails_cat_when_syntax_error_in_conf() {
libreblacklist cat >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_downloads_the_blacklist_as_needed() {
@@ -97,7 +97,7 @@ it_downloads_the_blacklist_as_needed() {
libreblacklist cat >$tmpdir/stdout 2>$tmpdir/stderr
- [[ -n "$(cat $tmpdir/stdout)" ]]
+ not empty $tmpdir/stdout
}
it_downloads_the_blacklist_repeatedly() {
@@ -110,23 +110,23 @@ it_downloads_the_blacklist_repeatedly() {
}
it_displays_help_and_fails_with_no_args() {
- LANG=C libreblacklist >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+ LC_ALL=C libreblacklist >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
+ empty $tmpdir/stdout
[[ "$(sed 1q $tmpdir/stderr)" =~ 'Usage: libreblacklist ' ]]
}
it_displays_help_when_given_h() {
- LANG=C libreblacklist -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C libreblacklist -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ 'Usage: libreblacklist ' ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
it_displays_help_when_given_h_cat() {
- LANG=C libreblacklist -h cat >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C libreblacklist -h cat >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" == 'Usage: libreblacklist cat' ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
diff --git a/test/lib-conf-test.sh b/test/lib-conf-test.sh
index 0d028b8..efad907 100644
--- a/test/lib-conf-test.sh
+++ b/test/lib-conf-test.sh
@@ -16,7 +16,7 @@ it_sets_makepkg_vars_in_custom_file() {
unset PKGDEST
touch "$tmpdir/makepkg.conf"
. $(librelib conf.sh)
- MAKEPKG_CONF="$tmpdir/makepkg.conf" set_conf_makepkg PKGDEST /pkgdest
+ MAKEPKG_CONF="$tmpdir/makepkg.conf" set_var makepkg PKGDEST /pkgdest
. "$tmpdir/makepkg.conf"
[[ $PKGDEST == /pkgdest ]]
}
diff --git a/test/lib-messages-test.sh b/test/lib-messages-test.sh
index 826556b..3fcac63 100644
--- a/test/lib-messages-test.sh
+++ b/test/lib-messages-test.sh
@@ -30,15 +30,15 @@ it_works_with_no_color_and_set_euE() (
msg Foo
) >$tmpdir/stdout 2>$tmpdir/stderr
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
)
it_can_be_called_without_including() {
libremessages msg Foo >$tmpdir/stdout 2>$tmpdir/stderr
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_fails_with_msg_and_no_args() {
diff --git a/test/librechroot-test.sh b/test/librechroot-test.sh
index 76afb56..c22ac58 100644
--- a/test/librechroot-test.sh
+++ b/test/librechroot-test.sh
@@ -4,55 +4,96 @@ describe librechroot
. ./test-common.sh
+_setup_chrootdir
+
before() {
_before librechroot
+
mkdir -p "$XDG_CONFIG_HOME"/libretools
- echo "CHROOTDIR='$tmpdir/chrootdir'" > "$XDG_CONFIG_HOME"/libretools/chroot.conf
+
+ echo "CHROOTDIR='${chrootdir}'" > "$XDG_CONFIG_HOME"/libretools/chroot.conf
echo "CHROOT='default'" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
echo "CHROOTEXTRAPKG=()" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
}
-after() {
+after() (
_after_sudo
-}
+)
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 run test -r /repo/repo.db
+ 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 make
- testsudo librechroot clean-repo
- testsudo librechroot run test -r /repo/repo.db
+ 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
+ r=0
+ { testsudo librechroot -l "$roundup_test_name" run exit 3 | cat; } || r=$?
+ [[ $r == 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.parabolagnulinux.org/ >/dev/null
+ not testsudo librechroot -l "$roundup_test_name" -N run curl https://repo.parabolagnulinux.org/ >/dev/null
+}
+
+it_handles_CHROOTEXTRAPKG_correctly() {
+ requuire 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_displays_help_as_normal_user() {
rm -rf "$XDG_CONFIG_HOME"
- LANG=C librechroot help >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C librechroot help >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
it_otherwise_fails_as_normal_user() {
- librechroot run true >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+ librechroot -l "$roundup_test_name" run true >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_displays_help_and_fails_with_0_args() {
- LANG=C librechroot >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+ LC_ALL=C librechroot -l "$roundup_test_name" >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ "$(sed 1q $tmpdir/stderr)" =~ Usage:.* ]]
+ empty $tmpdir/stdout
+ [[ "$(sed -n 2p $tmpdir/stderr)" =~ Usage:.* ]]
}
# requires sudo so we know it's not failing because it needs root
@@ -61,8 +102,8 @@ it_fails_for_unknown_commands() {
testsudo librechroot phony >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
# requires sudo so we know it's not failing because it needs root
@@ -71,6 +112,6 @@ it_fails_for_unknown_flags() {
testsudo librechroot -q >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
diff --git a/test/librefetch-test.sh b/test/librefetch-test.sh
new file mode 100644
index 0000000..92f67a1
--- /dev/null
+++ b/test/librefetch-test.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env roundup
+
+describe librefetch
+
+. ./test-common.sh
+
+before() {
+ _before
+
+ mkdir -p "$HOME"
+ printf '%s\n' \
+ 'DLAGENTS+=({https,libre}'\''::/usr/bin/librefetch -p "$BUILDFILE" -- %u %o'\'')' \
+ 'BUILDDIR=""' \
+ > "$HOME/.makepkg.conf"
+
+ mkdir -p "$XDG_CONFIG_HOME/libretools"
+ printf '%s\n' \
+ 'MIRROR="phony://example.com/dir/"' \
+ 'DOWNLOADER=/usr/bin/false' \
+ > "$XDG_CONFIG_HOME/libretools/librefetch.conf"
+}
+
+after() {
+ _after
+}
+
+it_displays_help() {
+ LC_ALL=C librefetch -h >$tmpdir/stdout 2>$tmpdir/stderr
+
+ [[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
+ empty $tmpdir/stderr
+}
+
+it_cleans_src_libre_first() {
+ cp librefetch.d/* "$tmpdir/"
+ cd "$tmpdir"
+
+ # create garbage
+ mkdir -p src-libre/foo
+ touch src-libre/foo/file
+
+ # run librefetch
+ makepkg -g
+
+ srcball=src/testpkg-1.0.tar.gz
+ bsdtar tf "$srcball" > list-pkg.txt
+ diff -u list.txt list-pkg.txt
+}
diff --git a/test/librefetch.d/PKGBUILD b/test/librefetch.d/PKGBUILD
new file mode 100644
index 0000000..723d82e
--- /dev/null
+++ b/test/librefetch.d/PKGBUILD
@@ -0,0 +1,15 @@
+pkgname=testpkg
+pkgver=1.0
+pkgrel=1
+pkgdesc=foo
+arch=(any)
+source=("libre://$pkgname-$pkgver.tar.gz")
+
+mksource() {
+ mkdir "$srcdir/bar"
+ touch "$srcdir/bar/file"
+}
+
+package() {
+ :;
+}
diff --git a/test/librefetch.d/list.txt b/test/librefetch.d/list.txt
new file mode 100644
index 0000000..b04d5d1
--- /dev/null
+++ b/test/librefetch.d/list.txt
@@ -0,0 +1,2 @@
+bar/
+bar/file
diff --git a/test/librelib-test.sh b/test/librelib-test.sh
index e86dffe..a74ce0a 100644
--- a/test/librelib-test.sh
+++ b/test/librelib-test.sh
@@ -16,7 +16,7 @@ it_displays_help_and_fails_with_0_args() {
ret=0
librelib >$tmpdir/stdout 2>$tmpdir/stderr || ret=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
+ empty $tmpdir/stdout
[[ "$(sed 1q $tmpdir/stderr)" =~ Usage:.* ]]
[[ $ret != 0 ]]
}
@@ -25,8 +25,8 @@ it_fails_with_2_args() {
ret=0
librelib a b >$tmpdir/stdout 2>$tmpdir/stderr || ret=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
[[ $ret != 0 ]]
}
@@ -34,7 +34,7 @@ it_displays_usage_text() {
librelib -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
# libremessages is executable
@@ -67,7 +67,7 @@ it_fails_to_find_phony() {
ret=0
librelib phony >$tmpdir/stdout 2>$tmpdir/stderr || ret=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
[[ $ret != 0 ]]
}
diff --git a/test/libremakepkg-test.sh b/test/libremakepkg-test.sh
index be19e17..4d8a7c5 100644
--- a/test/libremakepkg-test.sh
+++ b/test/libremakepkg-test.sh
@@ -4,6 +4,8 @@ describe libremakepkg
. ./test-common.sh
+_setup_chrootdir
+
before() {
_before libremakepkg
@@ -11,7 +13,7 @@ before() {
echo "BLACKLIST=https://repo.parabolagnulinux.org/docs/blacklist.txt" >"$XDG_CONFIG_HOME"/libretools/libretools.conf
- echo "CHROOTDIR='$tmpdir/chrootdir'" > "$XDG_CONFIG_HOME"/libretools/chroot.conf
+ echo "CHROOTDIR='${chrootdir}'" > "$XDG_CONFIG_HOME"/libretools/chroot.conf
echo "CHROOT='default'" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
echo "CHROOTEXTRAPKG=()" >> "$XDG_CONFIG_HOME"/libretools/chroot.conf
}
@@ -26,28 +28,90 @@ it_builds_a_trivial_package() {
cd "$tmpdir"
libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo libremakepkg
+ testsudo libremakepkg -l "$roundup_test_name"
[[ -f $(echo libretools-hello-1.0-1-any.pkg.tar.?z) ]]
}
+it_enables_networking_during_prepare() {
+ require network sudo || return 0
+ cp libremakepkg.d/PKGBUILD-netprepare "$tmpdir/PKGBUILD"
+ cd "$tmpdir"
+
+ libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
+ testsudo libremakepkg -l "$roundup_test_name"
+ [[ -f $(echo libretools-netprepare-1.0-1-any.pkg.tar.?z) ]]
+}
+
+it_disables_networking_during_build() {
+ require network sudo || return 0
+ cp libremakepkg.d/PKGBUILD-netbuild "$tmpdir/PKGBUILD"
+ cd "$tmpdir"
+
+ libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
+ not testsudo libremakepkg -l "$roundup_test_name"
+ not [[ -f $(echo libretools-netbuild-1.0-1-any.pkg.tar.?z) ]]
+ testsudo libremakepkg -l "$roundup_test_name" -N
+ [[ -f $(echo libretools-netbuild-1.0-1-any.pkg.tar.?z) ]]
+}
+
+it_disables_networking_during_package() {
+ require network sudo || return 0
+ cp libremakepkg.d/PKGBUILD-netpackage "$tmpdir/PKGBUILD"
+ cd "$tmpdir"
+
+ libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
+ not testsudo libremakepkg -l "$roundup_test_name"
+ not [[ -f $(echo libretools-netpackage-1.0-1-any.pkg.tar.?z) ]]
+ testsudo libremakepkg -l "$roundup_test_name" -N
+ [[ -f $(echo libretools-netpackage-1.0-1-any.pkg.tar.?z) ]]
+}
+
+it_cleans_the_chroot_before_building() {
+ require network sudo || return 0
+ # 1. First, we build testpkg1
+ # 2. Then, we build testpkg2, which depends on testpkg1
+ # Therefore, testpkg1 will be installed after testpkg2 is built, we
+ # check for that.
+ # 3. Then, we build hello, which depends on neither, so testpkg1 should
+ # be removed.
+
+ # Also, do funny things with the output of libremakepkg to get a helpful
+ # fail case.
+
+ mkdir -p "$tmpdir"/{1,2,3}
+ cp libremakepkg.d/PKGBUILD-testpkg1 "$tmpdir/1/PKGBUILD"
+ cp libremakepkg.d/PKGBUILD-testpkg2 "$tmpdir/2/PKGBUILD"
+ cp libremakepkg.d/PKGBUILD-hello "$tmpdir/3/PKGBUILD"
+
+ libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
+ cd "$tmpdir/1"
+ testsudo libremakepkg -l "$roundup_test_name" &> "$tmpdir/out" || { r=$?; tail "$tmpdir/out"|cat -v; return $r; }
+ cd "$tmpdir/2"
+ testsudo libremakepkg -l "$roundup_test_name" &> "$tmpdir/out" || { r=$?; tail "$tmpdir/out"|cat -v; return $r; }
+ testsudo librechroot -l "$roundup_test_name" run libretools-testpkg1 'first time, pass'
+ cd "$tmpdir/3"
+ testsudo libremakepkg -l "$roundup_test_name" &> "$tmpdir/out" || { r=$?; tail "$tmpdir/out"|cat -v; return $r; }
+ not testsudo librechroot -l "$roundup_test_name" run libretools-testpkg1 'second time, fail'
+}
+
it_handles_PKGDEST_not_existing() {
require network sudo || return 0
cp libremakepkg.d/PKGBUILD-hello "$tmpdir/PKGBUILD"
cd "$tmpdir"
libremessages msg 'Creating a chroot, may take a few minutes' &>/dev/tty
- testsudo env PKGDEST="$tmpdir/dest/pkgdest" libremakepkg
+ testsudo env PKGDEST="$tmpdir/dest/pkgdest" libremakepkg -l "$roundup_test_name"
[[ -f $(echo dest/pkgdest/libretools-hello-1.0-1-any.pkg.tar.?z) ]]
}
it_displays_help_as_normal_user() {
rm -rf "$XDG_CONFIG_HOME"
- LANG=C libremakepkg -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C libremakepkg -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
}
it_otherwise_fails_as_normal_user() {
@@ -58,6 +122,6 @@ it_otherwise_fails_as_normal_user() {
libremakepkg >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
diff --git a/test/libremakepkg.d/PKGBUILD-netbuild b/test/libremakepkg.d/PKGBUILD-netbuild
new file mode 100644
index 0000000..7be896b
--- /dev/null
+++ b/test/libremakepkg.d/PKGBUILD-netbuild
@@ -0,0 +1,17 @@
+pkgname='libretools-netbuild'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+
+build() {
+ cd "$srcdir"
+ curl https://repo.parabolagnulinux.org/ > index.html
+}
+
+package() {
+ cd "$srcdir"
+ install -Dm644 index.html "$pkgdir"/usr/share/$pkgname/index.html
+}
diff --git a/test/libremakepkg.d/PKGBUILD-netpackage b/test/libremakepkg.d/PKGBUILD-netpackage
new file mode 100644
index 0000000..cbefe8f
--- /dev/null
+++ b/test/libremakepkg.d/PKGBUILD-netpackage
@@ -0,0 +1,12 @@
+pkgname='libretools-netpackage'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+
+package() {
+ install -d "$pkgdir"/usr/share/$pkgname
+ curl https://repo.parabolagnulinux.org/ > "$pkgdir"/usr/share/$pkgname/index.html
+}
diff --git a/test/libremakepkg.d/PKGBUILD-netprepare b/test/libremakepkg.d/PKGBUILD-netprepare
new file mode 100644
index 0000000..90f3e82
--- /dev/null
+++ b/test/libremakepkg.d/PKGBUILD-netprepare
@@ -0,0 +1,17 @@
+pkgname='libretools-netprepare'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+
+prepare() {
+ cd "$srcdir"
+ curl https://repo.parabolagnulinux.org/ > index.html
+}
+
+package() {
+ cd "$srcdir"
+ install -Dm644 index.html "$pkgdir"/usr/share/$pkgname/index.html
+}
diff --git a/test/libremakepkg.d/PKGBUILD-testpkg1 b/test/libremakepkg.d/PKGBUILD-testpkg1
new file mode 100644
index 0000000..b7961bb
--- /dev/null
+++ b/test/libremakepkg.d/PKGBUILD-testpkg1
@@ -0,0 +1,19 @@
+pkgname='libretools-testpkg1'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+depends=(sh)
+
+build() {
+ cd "$srcdir"
+ echo '#!/bin/sh' > testpkg1.sh
+ echo 'echo testpkg1' >> testpkg1.sh
+}
+
+package() {
+ cd "$srcdir"
+ install -Dm755 testpkg1.sh "$pkgdir"/usr/bin/libretools-testpkg1
+}
diff --git a/test/libremakepkg.d/PKGBUILD-testpkg2 b/test/libremakepkg.d/PKGBUILD-testpkg2
new file mode 100644
index 0000000..11f7fe8
--- /dev/null
+++ b/test/libremakepkg.d/PKGBUILD-testpkg2
@@ -0,0 +1,19 @@
+pkgname='libretools-testpkg2'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+depends=(sh libretools-testpkg1)
+
+build() {
+ cd "$srcdir"
+ echo '#!/bin/sh' > testpkg2.sh
+ echo 'libretools-testpkg1' >> testpkg2.sh
+}
+
+package() {
+ cd "$srcdir"
+ install -Dm755 testpkg2.sh "$pkgdir"/usr/bin/libretools-testpkg2
+}
diff --git a/test/librerelease-test.sh b/test/librerelease-test.sh
new file mode 100644
index 0000000..a44b150
--- /dev/null
+++ b/test/librerelease-test.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env roundup
+
+describe librestage
+
+. ./test-common.sh
+
+before() {
+ _before
+
+ mkdir -p $XDG_CONFIG_HOME/libretools
+ {
+ echo "WORKDIR='$tmpdir/workdir'"
+ echo 'REPODEST=repo@repo:/srv/http/repo/staging-$LIBREUSER'
+ } >$XDG_CONFIG_HOME/libretools/libretools.conf
+ {
+ echo 'PKGEXT=.pkg.tar.gz'
+ echo "PKGDEST='$tmpdir/workdir/pkgdest'"
+ echo "GPGKEY=YOURKEY"
+ } > $HOME/.makepkg.conf
+ mkdir -p "$tmpdir/workdir/pkgdest"
+}
+
+after() {
+ _after
+}
+
+it_displays_usage_text() {
+ rm -rf "$XDG_CONFIG_HOME"
+ LC_ALL=C librerelease -h >"$tmpdir/stdout" 2>"$tmpdir/stderr"
+
+ [[ "$(sed 1q "$tmpdir/stdout")" =~ Usage:.* ]]
+ empty "$tmpdir/stderr"
+}
+
+it_lists_all_files() {
+ WORKDIR="$tmpdir/workdir"
+ mkdir -p "$WORKDIR/staging/repo1" "$WORKDIR/staging/repo2/sub"
+ touch \
+ "$WORKDIR/staging/repo1/file1" \
+ "$WORKDIR/staging/repo1/file2" \
+ "$WORKDIR/staging/repo2/file with spaces" \
+ "$WORKDIR/staging/repo2/sub/subfolder"
+ unset WORKDIR
+ LC_ALL=C librerelease -l &>"$tmpdir/list"
+
+ cat > "$tmpdir/list-correct" <<EOF
+ -> repo1
+ file1
+ file2
+ -> repo2
+ file with spaces
+ sub/subfolder
+EOF
+
+ diff "$tmpdir/list-correct" "$tmpdir/list"
+}
diff --git a/test/librestage-test.sh b/test/librestage-test.sh
index 849a68c..460eb58 100644
--- a/test/librestage-test.sh
+++ b/test/librestage-test.sh
@@ -23,26 +23,26 @@ after() {
it_displays_usage_text() {
rm -rf "$XDG_CONFIG_HOME"
- LANG=C librestage -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C librestage -h >$tmpdir/stdout 2>$tmpdir/stderr
[[ "$(sed 1q "$tmpdir/stdout")" =~ Usage:.* ]]
- [[ -z "$(cat "$tmpdir/stderr")" ]]
+ empty "$tmpdir/stderr"
}
it_fails_with_0_args() {
librestage >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat "$tmpdir/stdout")" ]]
- [[ -n "$(cat "$tmpdir/stderr")" ]]
+ empty "$tmpdir/stdout"
+ not empty "$tmpdir/stderr"
}
it_fails_with_invalid_args() {
librestage -q >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
[[ $stat != 0 ]]
- [[ -z "$(cat "$tmpdir/stdout")" ]]
- [[ -n "$(cat "$tmpdir/stderr")" ]]
+ empty "$tmpdir/stdout"
+ not empty "$tmpdir/stderr"
}
# This was an actual bug I hit with md/emacs-mdmua a long time ago; solution was
diff --git a/test/pkgbuild-check-licenses-test.sh b/test/pkgbuild-check-licenses-test.sh
deleted file mode 100644
index 220ef6b..0000000
--- a/test/pkgbuild-check-licenses-test.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env roundup
-
-# avoid carpel tunnel
-pcl=pkgbuild-check-licenses
-
-describe $pcl
-
-. ./test-common.sh
-
-before() {
- _before
-}
-
-after() {
- _after
-}
-
-it_displays_usage_text() {
- # This test seems silly, but it makes sure that it is executable,
- # syntactically correct, and loading libraries works.
- LANG=C $pcl -h >$tmpdir/stdout 2>$tmpdir/stderr
- stat=$?
-
- [[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
- [[ $stat == 0 ]]
-}
diff --git a/test/pkgbuild-check-nonfree-test.sh b/test/pkgbuild-check-nonfree-test.sh
index d547e24..2af2669 100644
--- a/test/pkgbuild-check-nonfree-test.sh
+++ b/test/pkgbuild-check-nonfree-test.sh
@@ -2,6 +2,7 @@
# avoid carpel tunnel
pcn=pkgbuild-check-nonfree
+psn=pkgbuild-summarize-nonfree
describe $pcn
@@ -26,36 +27,42 @@ after() {
it_displays_usage_text() {
# This test seems silly, but it makes sure that it is executable,
# syntactically correct, and loading libraries works.
- LANG=C $pcn -h >$tmpdir/stdout 2>$tmpdir/stderr
+ LC_ALL=C $pcn -h >$tmpdir/stdout 2>$tmpdir/stderr
stat=$?
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
- [[ -z "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stderr
[[ $stat == 0 ]]
}
it_succeeds_for_free_depends() {
$pcn $pcn.d/PKGBUILD.free >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
[[ $stat == 0 ]]
}
it_succeeds_for_nonfree_depend_with_replacement() {
$pcn $pcn.d/PKGBUILD.nonfree-replacement >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
[[ $stat == 0 ]]
}
-it_fails_with_15_for_nonfree_depend() {
+it_fails_for_nonfree_depend() {
$pcn $pcn.d/PKGBUILD.nonfree >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+ [[ $stat != 0 ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
- [[ $stat == 15 ]]
+ local pcn_stat=$stat
+
+ $psn $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+ [[ $stat != 0 ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
}
it_fails_when_there_is_no_blacklist() {
@@ -65,7 +72,7 @@ it_fails_when_there_is_no_blacklist() {
$pcn $pcn.d/PKGBUILD.free >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
- [[ -z "$(cat $tmpdir/stdout)" ]]
- [[ -n "$(cat $tmpdir/stderr)" ]]
+ empty $tmpdir/stdout
+ not empty $tmpdir/stderr
[[ $stat != 0 ]] && [[ $stat != 15 ]]
}
diff --git a/test/test-common.sh b/test/test-common.sh
index 01b1b35..c525dd8 100644
--- a/test/test-common.sh
+++ b/test/test-common.sh
@@ -6,7 +6,12 @@ if [[ $HOME == "$(eval echo ~$USER)" ]]; then
fi
_before() {
+ unset PKGDEST SRCDEST SRCPKGDEST LOGDEST
+ unset BUILDDIR
+ unset PKGEXT SRCEXT
+ unset GPGKEY PACKAGER
tmpdir="$(mktemp -d --tmpdir "test-${roundup_desc//\//-}.XXXXXXXXXXXX")"
+ chmod 755 "$tmpdir"
stat=0
}
@@ -22,7 +27,31 @@ _after_sudo() {
fi
}
-require() {
+_setup_chrootdir() {
+ if [[ -z "$chrootdir" ]]; then
+ export chrootdir="$(mktemp -d --tmpdir "test-chrootdir.XXXXXXXXXXXX")"
+ trap "$(printf '_cleanup_chrootdir %q' "$chrootdir")" EXIT
+ fi
+}
+
+_cleanup_chrootdir() (
+ chrootdir=$1
+ shopt -s nullglob
+ if [[ $SUDO ]]; then
+ for copydir in "$chrootdir"/*/*/; do
+ local chroottype=$(stat -f -c %T "$copydir")
+ if [[ "$chroottype" == btrfs ]] && ! mountpoint -q "$copydir"; then
+ sudo btrfs subvolume delete "$copydir" >/dev/null
+ fi
+ done
+ sudo rm -rf -- "$chrootdir"
+ else
+ rm -rf -- "$chrootdir"
+ fi
+)
+
+require() (
+ set +x
local missing=()
if libremessages in_array "network" "$@" && ! [[ $NETWORK ]]; then
missing+=('networking')
@@ -35,4 +64,15 @@ require() {
return 1
fi
return 0;
-}
+)
+
+empty() (
+ set +x
+ [[ $(stat -c %s "$1") -eq 0 ]]
+)
+
+# Just using '!' doesn't trip `set -e`
+not() (
+ set +x
+ ! eval "$@"
+)
diff --git a/test/testenv b/test/testenv
index e6c882f..847a948 100755
--- a/test/testenv
+++ b/test/testenv
@@ -15,6 +15,11 @@ while [[ $# -gt 0 ]]; do
done
export NETWORK SUDO
+if [[ $# == 0 ]]; then
+ echo 'You need to run testenv with arguments!' >&2
+ exit 1
+fi
+
# Set up the working directory, and add the hook to clean it up
export TMPDIR="$(mktemp --tmpdir -d libretools-test.XXXXXXXXXX)"
trap "rm -rf '$TMPDIR'" EXIT