diff options
Diffstat (limited to 'tests/rep-info.testscript')
-rw-r--r-- | tests/rep-info.testscript | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/tests/rep-info.testscript b/tests/rep-info.testscript new file mode 100644 index 0000000..3ccbeb6 --- /dev/null +++ b/tests/rep-info.testscript @@ -0,0 +1,254 @@ +# file : tests/rep-info.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include common.testscript \ + auth.testscript \ + remote.testscript \ + remote-git.testscript + +# Source repository: +# +# rep-info +# |-- testing -> stable (complement), ../foo/testing (prerequisite) +# | |-- foo-1.tar.gz +# | `-- repositories.manifest +# | +# `-- git +# |-- libbar.git -> style-basic.git (prerequisite) +# `-- style-basic.git + +# Prepare repositories used by tests if running in the local mode. +# ++if ($remote != true) + rc = $rep_create 2>! + + # Create the unsigned 'testing' repository. + # + cp -r $src/testing $out/testing + $rc $out/testing &$out/testing/packages.manifest + + # Create the signed 'testing' repository. + # + cp -r $src/testing $out/signed + cat <<<$cert_manifest >+$out/signed/repositories.manifest + + $rc --key $key $out/signed &$out/signed/packages.manifest \ + &$out/signed/signature.manifest + + # Create git repositories. + # + $git_extract $src/git/libbar.tar + $git_extract $src/git/style-basic.tar &$out_git/state0/*** +end + +test.options += --auth all --trust-yes + +: no-location +: +$* 2>>EOE != 0 +error: repository location argument expected + info: run 'bpkg help rep-info' for more information +EOE + +: default +: +{ + : unsigned + : + $* $rep/testing >>"EOO" + pkg:build2.org/rep-info/testing ($rep/testing) + prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) + complement pkg:build2.org/rep-info/stable ($rep/stable) + + foo/1 + EOO + + : signed + : + $* $rep/signed >>"EOO" + pkg:build2.org/rep-info/signed ($rep/signed) + CN=build2.org/O=Code Synthesis/info@build2.org + $cert_fp + prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) + complement pkg:build2.org/rep-info/stable ($rep/stable) + + foo/1 + EOO +} + +: name +: +$* --name $rep/testing >"pkg:build2.org/rep-info/testing ($rep/testing)" + +: packages +: +{ + test.arguments += --packages # Should go after the rep-info command argument. + + : list + : + $* $rep/testing >>EOO + + foo/1 + EOO + + : manifest + : + $* --manifest $rep/testing >>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 + + : to-file + : + { + : no-manifest + : + $* --packages-file m $rep/testing 2>>EOE != 0 + error: --packages-file specified without --manifest + info: run 'bpkg help rep-info' for more information + EOE + + : manifest + : + { + $* --manifest --packages-file m $rep/testing &m; + + cat m >>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 + } + } +} + +: repositories +: +{ + # Should go after the rep-info command argument. + # + test.arguments += --repositories + + : list + : + $* $rep/testing >>"EOO" + prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) + complement pkg:build2.org/rep-info/stable ($rep/stable) + EOO + + : manifest + : + $* --manifest $rep/testing >>EOO + : 1 + location: ../../foo/testing + type: pkg + role: prerequisite + : + location: ../stable + type: pkg + role: complement + : + EOO + + : to-file + : + { + : no-manifest + : + $* --repositories-file m $rep/testing 2>>EOE != 0 + error: --repositories-file specified without --manifest + info: run 'bpkg help rep-info' for more information + EOE + + : manifest + : + { + $* --manifest --repositories-file m $rep/testing &m; + + cat m >>EOO + : 1 + location: ../../foo/testing + type: pkg + role: prerequisite + : + location: ../stable + type: pkg + role: complement + : + EOO + } + } +} + +: cert +: +{ + test.arguments += $rep/signed + + $* --cert-fingerprint >"$cert_fp" : fingerprint + $* --cert-name >'name:build2.org' : name + $* --cert-organization >'Code Synthesis' : organization + $* --cert-email >'info@build2.org' : email +} + +: git-rep +: +if ($git_supported != true) +{ + # Skip git repository tests. + # +} +else +{ + rep = "$rep_git/state0" + test.redirects += 2>! + + : version-module + : + : Version module is enabled for the project. + : + $* "$rep/style-basic.git#master" >>~%EOO% + %git:.+style-basic#master .+style-basic.git#master% + + %style-basic/1\.1\.0-a\.0\.\d+\..+% + EOO + + : manifest-lists + : + : The packages.manifest and repositories.manifest files are present in the + : repository root. + : + $* "$rep/libbar.git#master" >>~%EOO% + %git:.+libbar#master .+libbar.git#master% + %prerequisite git:.+style-basic#stable .+style-basic.git#stable% + + libbar/1.0.0 + libmbar/1.0.0 + EOO + + : repository-manifests + : + : Here we test that the base repository manifest that comes from the stable + : branch is printed because the stable head commit is newer that of the + : master branch. + : + $* -r --manifest "$rep/style-basic.git#stable,master" >>~%EOO% + : 1 + email: user@example.com + EOO +} |