aboutsummaryrefslogtreecommitdiff
path: root/tests/rep-create.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rep-create.test')
-rw-r--r--tests/rep-create.test184
1 files changed, 184 insertions, 0 deletions
diff --git a/tests/rep-create.test b/tests/rep-create.test
new file mode 100644
index 0000000..acc6957
--- /dev/null
+++ b/tests/rep-create.test
@@ -0,0 +1,184 @@
+# file : tests/rep-create.test
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+.include common.test auth.test
+
+# Source repository:
+#
+# rep-create
+# |-- stable
+# | |-- foo-1.tar.gz
+# | `-- repositories
+# `-- testing -> stable (complement)
+# |-- foo-2.tar.gz (manifest with unknown name)
+# `-- repositories
+
+: unsigned
+:
+{
+ # Make sure the cloned repository has a valid location, so we can use
+ # rep-info command to validate the repository info.
+ #
+ clone_rep = mkdir 1/ && cp -r $src/stable 1/
+
+ : without-key
+ :
+ {
+ $clone_rep;
+
+ $* 1/stable/ 2>>/~%EOE% &1/stable/packages;
+ adding foo 1
+ %1 package\(s\) in .+/stable/%
+ EOE
+
+ $rep_info -p -m 1/stable/ >>EOO
+ : 1
+ sha256sum: 6cac7ffa1f02f90776fc89bcacf38604ba0eddf176f2314c75dc9bf1b10a8b32
+ :
+ name: foo
+ version: 1
+ summary: The "Foo" utility
+ license: MIT
+ url: http://www.example.org/foo
+ email: foo-users@example.org
+ location: foo-1.tar.gz
+ sha256sum: fee330a362a4f87ff42a954aa305b6446d541b7b60000ebcd2fbf68f2b1ae58e
+ EOO
+ }
+
+ : with-key
+ :
+ {
+ $clone_rep;
+
+ $* --key $key 1/stable/ 2>>/~%EOE% &1/stable/packages;
+ adding foo 1
+ warning: --key option ignored
+ info: repository manifest contains no certificate
+ info: run 'bpkg help rep-create' for more information
+ %1 package\(s\) in .+/stable/%
+ EOE
+
+ $rep_info -p -m 1/stable/ >>EOO
+ : 1
+ sha256sum: 6cac7ffa1f02f90776fc89bcacf38604ba0eddf176f2314c75dc9bf1b10a8b32
+ :
+ name: foo
+ version: 1
+ summary: The "Foo" utility
+ license: MIT
+ url: http://www.example.org/foo
+ email: foo-users@example.org
+ location: foo-1.tar.gz
+ sha256sum: fee330a362a4f87ff42a954aa305b6446d541b7b60000ebcd2fbf68f2b1ae58e
+ EOO
+ }
+}
+
+: signed
+:
+: Here we sign the 'stable' repository with the certificate prior to running
+: tests.
+:
+{
+ +cp -r $src/stable ./ && cat <<<$cert_manifest >+stable/repositories
+
+ # Make sure the cloned repository has a valid location, so we can use
+ # rep-info command to validate the repository info.
+ #
+ clone_rep = mkdir 1/ && cp -r ../stable 1/
+
+ : with-key
+ :
+ : Note that as we re-create the repositories file on the fly (see above) its
+ : sha256sum can vary due to CRs mix-in on Windows. That explains why we do
+ : not match it exactly.
+ :
+ {
+ $clone_rep;
+
+ $* --key $key 1/stable/ 2>>/~%EOE% &1/stable/packages &1/stable/signature;
+ adding foo 1
+ %1 package\(s\) in .+/stable/%
+ EOE
+
+ $rep_info --cert-fingerprint -p -m 1/stable/ >>~"%EOO%"
+ $cert_fp
+ : 1
+ %sha256sum: .+%
+ :
+ name: foo
+ version: 1
+ summary: The "Foo" utility
+ license: MIT
+ url: http://www.example.org/foo
+ email: foo-users@example.org
+ location: foo-1.tar.gz
+ sha256sum: fee330a362a4f87ff42a954aa305b6446d541b7b60000ebcd2fbf68f2b1ae58e
+ EOO
+ }
+
+ : without-key
+ :
+ $clone_rep;
+ $* 1/stable/ 2>>EOE &1/stable/packages != 0
+ adding foo 1
+ error: --key option required
+ info: repository manifest contains a certificate
+ info: run 'bpkg help rep-create' for more information
+ EOE
+}
+
+: unknown-name
+:
+: Test that package manifest that contains an unknown name is properly handled.
+:
+{
+ clone_rep = cp -r $src/testing ./
+
+ : fail
+ :
+ $clone_rep;
+ $* testing/ 2>>/EOE != 0
+ foo-2/manifest:8:1: error: unknown name 'color' in package manifest
+ info: package archive testing/foo-2.tar.gz
+ EOE
+
+ : ignore
+ :
+ $clone_rep;
+ $* --ignore-unknown testing/ 2>>/~%EOE% &testing/packages
+ adding foo 2
+ %1 package\(s\) in .+/testing/%
+ EOE
+}
+
+: broken-repo
+:
+: Here we break the 'stable' repository prior to running a test.
+:
+{
+ clone_rep = cp -r $src/stable ./
+
+ : no-repositories-file
+ :
+ {
+ $clone_rep &!stable/repositories;
+ rm stable/repositories;
+
+ $* stable/ 2>/'error: file stable/repositories does not exist' != 0
+ }
+
+ : unexpected-file
+ :
+ {
+ $clone_rep;
+ touch stable/foo;
+
+ $* stable/ 2>>/~%EOE% != 0
+ %.+
+ error: stable/foo does not appear to be a bpkg package
+ EOE
+ }
+}