summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2013-06-01 19:23:19 -0600
committerLuke Shumaker <LukeShu@sbcglobal.net>2013-06-05 20:01:05 -0600
commit8e5744170c30d50ef1f3e3a3e52c595870c6e50a (patch)
tree797e4d33a4e0da370e68ebcd9a80b9daa0d7fa52 /test
parentabac8a47a9e8bbccb7eb866c2fa0796cc5c39edc (diff)
librestage: clean up, add unit tests
Contained the text "# TODO refactor this", and I can't just stick to that fragment of code, can I? I actually didn't change too much, despite what the diff looks like. - move everything into a main() routine - redo the usage() text - rename a few variables - fix where "${#repos}" should have been "${#repos[@]}" - use [[...]] instead of [...] - use "if A; then B; else C; fi" instead of "A || C && B" - use CARCH instead of looping over every possible architecture. - only look for files that match PKGEXT, as set in makepkg.conf - pull out duplicate code for error handling - don't warn when creating "staging/REPONAME"
Diffstat (limited to 'test')
-rw-r--r--test/librestage-test.sh70
-rw-r--r--test/librestage.d/PKGBUILD-hello19
-rw-r--r--test/librestage.d/PKGBUILD-split42
3 files changed, 131 insertions, 0 deletions
diff --git a/test/librestage-test.sh b/test/librestage-test.sh
new file mode 100644
index 0000000..83194b5
--- /dev/null
+++ b/test/librestage-test.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env roundup
+
+describe librestage
+
+
+before() {
+ tmpdir=$(mktemp -d --tmpdir test-librestage.XXXXXXXXXXXX)
+ stat=0
+
+ mkdir -p $XDG_CONFIG_HOME/libretools
+ echo "WORKDIR='$tmpdir/workdir'" >$XDG_CONFIG_HOME/libretools/libretools.conf
+
+ export HOME=$XDG_CONFIG_HOME
+ echo 'PKGEXT=.pkg.tar.gz' > $HOME/.makepkg.conf
+ echo "PKGDEST='$tmpdir/workdir/pkgdest'" >> $HOME/.makepkg.conf
+ mkdir -p "$tmpdir/workdir/pkgdest"
+}
+
+after() {
+ rm -rf -- "$tmpdir" "$XDG_CONFIG_HOME"
+}
+
+it_displays_usage_text() {
+ librestage -h >$tmpdir/stdout 2>$tmpdir/stderr
+
+ [[ "$(sed 1q "$tmpdir/stdout")" =~ Usage:.* ]]
+ [[ -z "$(cat "$tmpdir/stderr")" ]]
+}
+
+it_fails_with_0_args() {
+ librestage >$tmpdir/stdout 2>$tmpdir/stderr || stat=$?
+
+ [[ $stat != 0 ]]
+ [[ -z "$(cat "$tmpdir/stdout")" ]]
+ [[ -n "$(cat "$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")" ]]
+}
+
+# This was an actual bug I hit with md/emacs-mdmua a long time ago; solution was
+# to use $(get_full_version)
+it_stages_split_packages_with_different_versions() {
+ cp librestage.d/PKGBUILD-split "$tmpdir/PKGBUILD"
+ cd "$tmpdir"
+
+ makepkg
+ librestage '~lukeshu'
+
+ # peak at the PKGBUILD to get this info
+ [[ -f $tmpdir/workdir/staging/~lukeshu/md-0.81-4-any.pkg.tar.gz ]]
+ [[ -f $tmpdir/workdir/staging/~lukeshu/emacs-mdmua-0.72-4-any.pkg.tar.gz ]]
+}
+
+it_stages_packages_to_multiple_repos() {
+ cp librestage.d/PKGBUILD-hello "$tmpdir/PKGBUILD"
+ cd "$tmpdir"
+
+ makepkg
+ librestage repo1 repo2 repo3
+
+ [[ -f $tmpdir/workdir/staging/repo1/libretools-hello-1.0-1-any.pkg.tar.gz ]]
+ [[ -f $tmpdir/workdir/staging/repo2/libretools-hello-1.0-1-any.pkg.tar.gz ]]
+ [[ -f $tmpdir/workdir/staging/repo3/libretools-hello-1.0-1-any.pkg.tar.gz ]]
+}
diff --git a/test/librestage.d/PKGBUILD-hello b/test/librestage.d/PKGBUILD-hello
new file mode 100644
index 0000000..706cb24
--- /dev/null
+++ b/test/librestage.d/PKGBUILD-hello
@@ -0,0 +1,19 @@
+pkgname='libretools-hello'
+pkgver=1.0
+license=('GPL')
+url='https://parabolagnulinux.org'
+
+pkgrel=1
+arch=(any)
+depends=(sh)
+
+build() {
+ cd "$srcdir"
+ echo '#!/bin/sh' > hello.sh
+ echo 'echo Hello, world!' >> hello.sh
+}
+
+package() {
+ cd "$srcdir"
+ install -Dm755 hello.sh "$pkgdir"/usr/bin/libretools-hello
+}
diff --git a/test/librestage.d/PKGBUILD-split b/test/librestage.d/PKGBUILD-split
new file mode 100644
index 0000000..a8ec1ef
--- /dev/null
+++ b/test/librestage.d/PKGBUILD-split
@@ -0,0 +1,42 @@
+# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
+
+pkgname=("md" "emacs-mdmua")
+pkgver=0.81
+pkgrel=4
+arch=('any')
+url="https://github.com/nicferrier/$_pkgname"
+license=('GPL3')
+
+#makedepends=(python-distribute)
+
+#__gitbranch=1d69744 # This is the commit that is 0.81
+__gitbranch=455b6b4 # this is currently HEAD (has bugfixes)
+#source=("nicferrier-md-${__gitbranch}.tar.gz::https://github.com/nicferrier/$pkgname/tarball/${__gitbranch}")
+
+#build() {
+# cd "${srcdir}/nicferrier-md-${__gitbranch}"
+#
+# # fix typo
+# sed -i 's/pyprofyfs/pyproxyfs/' setup.py
+#}
+
+package_md() {
+ pkgdesc="A maildir client and library."
+ depends=('python' 'python-pyproxyfs')
+
+# cd "${srcdir}/nicferrier-md-${__gitbranch}"
+# python setup.py install --root="$pkgdir/" --optimize=1
+}
+
+package_emacs-mdmua() {
+ pkgdesc="An Emacs mail user agent (MUA) build around md."
+ pkgver='0.72'
+ depends=("md=0.81" 'emacs>=24')
+
+# cd "${srcdir}/nicferrier-md-${__gitbranch}"
+# cd useragents/emacs
+# install -d ${pkgdir}/usr/share/emacs/site-lisp
+# install -m 644 *.el ${pkgdir}/usr/share/emacs/site-lisp
+}
+
+#md5sums=('452727348df2f51d7eddade709aceb1c')