aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-09-23 13:13:05 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2020-09-24 19:09:39 +0300
commit15514b1013a22977a451c64b6df229414a9dde6b (patch)
treec15fe9a45fe06403944b642314bf80d8349b439d /tests
parent0d0d607e3f2582afb708642b98f2d75568b51326 (diff)
Add package-archive.bash public module
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/build/root.build6
-rw-r--r--tests/buildfile4
-rw-r--r--tests/package-archive/buildfile8
-rw-r--r--tests/package-archive/driver.in20
-rw-r--r--tests/package-archive/libhello-0.1.0+1.tar.gzbin0 -> 3045 bytes
-rw-r--r--tests/package-archive/libhello-0.1.0.tar.gzbin0 -> 3033 bytes
-rw-r--r--tests/package-archive/testscript127
-rw-r--r--tests/publish/buildfile8
-rw-r--r--tests/publish/testscript (renamed from tests/publish.testscript)2
10 files changed, 170 insertions, 6 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
index 35ec43f..2e508a9 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,2 +1,3 @@
+driver
test/
test-*/
diff --git a/tests/build/root.build b/tests/build/root.build
index 1472384..c3d4252 100644
--- a/tests/build/root.build
+++ b/tests/build/root.build
@@ -1,6 +1,8 @@
# file : tests/build/root.build
# license : MIT; see accompanying LICENSE file
-# Setup the utilities that we are testing.
+using bash
+
+# Every exe{} in this subproject is by default a test.
#
-import publish = bpkg-rep%exe{bpkg-rep-publish}
+exe{*}: test = true
diff --git a/tests/buildfile b/tests/buildfile
index 0beb40f..556ed55 100644
--- a/tests/buildfile
+++ b/tests/buildfile
@@ -1,6 +1,4 @@
# file : tests/buildfile
# license : MIT; see accompanying LICENSE file
-./: testscript{*} $publish
-
-testscript{publish}@./: test = $publish
+./: {*/ -build/}
diff --git a/tests/package-archive/buildfile b/tests/package-archive/buildfile
new file mode 100644
index 0000000..a8ff42b
--- /dev/null
+++ b/tests/package-archive/buildfile
@@ -0,0 +1,8 @@
+# file : tests/package-archive/buildfile
+# license : MIT; see accompanying LICENSE file
+
+import mods = bpkg-rep%bash{package-archive}
+
+./: exe{driver} file{*.tar.gz}
+
+exe{driver}: in{driver} $mods testscript
diff --git a/tests/package-archive/driver.in b/tests/package-archive/driver.in
new file mode 100644
index 0000000..d760a1e
--- /dev/null
+++ b/tests/package-archive/driver.in
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+# file : tests/package-archive/driver.in
+# license : MIT; see accompanying LICENSE file
+
+# bpkg utility path.
+#
+bpkg_rep_bpkg=bpkg
+
+trap "{ exit 1; }" ERR
+set -o errtrace # Trap ERR in functions.
+
+@import bpkg-rep/package-archive@
+
+# Call the function passed on the command line.
+#
+# Note that we reset IFS to make sure that the function being tested is not
+# affected by its value set by the caller.
+#
+IFS= "$@"
diff --git a/tests/package-archive/libhello-0.1.0+1.tar.gz b/tests/package-archive/libhello-0.1.0+1.tar.gz
new file mode 100644
index 0000000..8d6bde9
--- /dev/null
+++ b/tests/package-archive/libhello-0.1.0+1.tar.gz
Binary files differ
diff --git a/tests/package-archive/libhello-0.1.0.tar.gz b/tests/package-archive/libhello-0.1.0.tar.gz
new file mode 100644
index 0000000..604a536
--- /dev/null
+++ b/tests/package-archive/libhello-0.1.0.tar.gz
Binary files differ
diff --git a/tests/package-archive/testscript b/tests/package-archive/testscript
new file mode 100644
index 0000000..6124d4a
--- /dev/null
+++ b/tests/package-archive/testscript
@@ -0,0 +1,127 @@
+# file : tests/package-archive/testscript
+# license : MIT; see accompanying LICENSE file
+
+# Note that searching for packages directly in $src_base is a bad idea, since
+# removing testscript working directories while testing in source makes the
+# find utility to fail with the 'no such file or directory' error. Thus, we
+# clone the archives into the test working directories and search there.
+#
+clone_arcs = \
+ cp $src_base/libhello-0.1.0.tar.gz $src_base/libhello-0.1.0+1.tar.gz ./
+
+: pkg-verify-archive
+:
+{
+ test.arguments += bpkg_rep_pkg_verify_archive
+
+ : non-existing-archive
+ :
+ $* libhello-0.1.0.tar.gz 2>>EOE != 0
+ error: archive file 'libhello-0.1.0.tar.gz' does not exist
+ EOE
+
+ : success
+ :
+ $* $src_base/libhello-0.1.0.tar.gz >:'libhello 0.1.0 hello'
+}
+
+: pkg-find-archives
+:
+{
+ test.arguments += bpkg_rep_pkg_find_archives
+
+ : none
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '0.2.0' $~
+ }
+
+ : package
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '*' $~ >>:/~"%EOO%"
+ %\(
+ $~/libhello-0.1.0.tar.gz
+ $~/libhello-0.1.0+1.tar.gz
+ %|
+ $~/libhello-0.1.0+1.tar.gz
+ $~/libhello-0.1.0.tar.gz
+ %\)
+ EOO
+ }
+
+ : package-version
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '0.1.0' $~ >:/"$~/libhello-0.1.0.tar.gz"
+ }
+
+ : package-revision
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '0.1.0+1' $~ >:/"$~/libhello-0.1.0+1.tar.gz"
+ }
+
+ : package-revisions1
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '0.1.0*' $~ >>:/~"%EOO%"
+ %\(
+ $~/libhello-0.1.0.tar.gz
+ $~/libhello-0.1.0+1.tar.gz
+ %|
+ $~/libhello-0.1.0+1.tar.gz
+ $~/libhello-0.1.0.tar.gz
+ %\)
+ EOO
+ }
+
+ : package-revisions2
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello' '0.1.0+2*' $~ >>:/~"%EOO%"
+ %\(
+ $~/libhello-0.1.0.tar.gz
+ $~/libhello-0.1.0+1.tar.gz
+ %|
+ $~/libhello-0.1.0+1.tar.gz
+ $~/libhello-0.1.0.tar.gz
+ %\)
+ EOO
+ }
+}
+
+: pkg-find-archive
+:
+{
+ test.arguments += bpkg_rep_pkg_find_archive
+
+ : non-existent
+ :
+ $* 'libhello-0.1.0.*' $~
+
+ : existing
+ :
+ {
+ $clone_arcs;
+
+ $* 'libhello-0.1.0.*' $~ >>:/"EOO"
+ libhello
+ 0.1.0
+ hello
+ $~/libhello-0.1.0.tar.gz
+ EOO
+ }
+}
diff --git a/tests/publish/buildfile b/tests/publish/buildfile
new file mode 100644
index 0000000..4cc1bd0
--- /dev/null
+++ b/tests/publish/buildfile
@@ -0,0 +1,8 @@
+# file : tests/publish/buildfile
+# license : MIT; see accompanying LICENSE file
+
+import publish = bpkg-rep%exe{bpkg-rep-publish}
+
+./: testscript $publish
+
+testscript@./: test = $publish
diff --git a/tests/publish.testscript b/tests/publish/testscript
index f11a171..2d3fb4c 100644
--- a/tests/publish.testscript
+++ b/tests/publish/testscript
@@ -1,4 +1,4 @@
-# file : tests/publish.testscript
+# file : tests/publish/testscript
# license : MIT; see accompanying LICENSE file
: args