diff options
Diffstat (limited to 'tests/rep-create.testscript')
-rw-r--r-- | tests/rep-create.testscript | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/tests/rep-create.testscript b/tests/rep-create.testscript new file mode 100644 index 0000000..053902d --- /dev/null +++ b/tests/rep-create.testscript @@ -0,0 +1,178 @@ +# file : tests/rep-create.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include common.testscript auth.testscript + +# Source repository: +# +# rep-create +# |-- stable +# | |-- foo-1.tar.gz +# | `-- repositories.manifest +# `-- testing -> stable (complement) +# |-- foo-2.tar.gz (manifest with unknown name) +# `-- repositories.manifest + +: 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.manifest; + added foo 1 + %1 package\(s\) in .+/stable/% + EOE + + $rep_info -p --manifest 1/stable/ >>EOO + : 1 + 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.manifest; + added 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 --manifest 1/stable/ >>EOO + : 1 + 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.manifest + + # 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.manifest 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.manifest \ + &1/stable/signature.manifest; + added foo 1 + %1 package\(s\) in .+/stable/% + EOE + + $rep_info --cert-fingerprint -p --manifest 1/stable/ >>~"%EOO%" + $cert_fp + : 1 + 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.manifest != 0 + added 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.manifest + added 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-manifest + : + { + $clone_rep &!stable/repositories.manifest; + rm stable/repositories.manifest; + + $* stable/ 2>/'error: file stable/repositories.manifest does not exist' != 0 + } + + : unexpected-file + : + { + $clone_rep; + touch stable/foo; + + $* stable/ 2>>/EOE != 0 + error: unknown compression method in stable/foo + EOE + } +} |