aboutsummaryrefslogtreecommitdiff
path: root/tests/rep-fetch.test
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2018-09-04 14:02:11 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2018-09-04 14:02:11 +0300
commitf8fdb500cc705e2b8b4a74166ceb2c6d8cee3fd3 (patch)
tree3f94b0b79ebad275904b9dc4a4165326ff598492 /tests/rep-fetch.test
parentf727c2b8fe273a12d059826291523060dab4b512 (diff)
Rename .test/test{} to .testscript/testscript{}
Diffstat (limited to 'tests/rep-fetch.test')
-rw-r--r--tests/rep-fetch.test977
1 files changed, 0 insertions, 977 deletions
diff --git a/tests/rep-fetch.test b/tests/rep-fetch.test
deleted file mode 100644
index c7e9e0f..0000000
--- a/tests/rep-fetch.test
+++ /dev/null
@@ -1,977 +0,0 @@
-# file : tests/rep-fetch.test
-# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-.include common.test auth.test config.test remote.test remote-git.test
-
-# Source repository:
-#
-# rep-fetch
-# |-- bar
-# | |-- stable -> ../foo/stable (prerequisite)
-# | | |-- libbar-1.0.0.tar.gz -> libfoo >= 1.0.0
-# | | `-- repositories.manifest
-# | |-- testing -> stable (complement),
-# | | | ../foo/testing (prerequisite)
-# | | |-- libbar-1.1.0.tar.gz -> libfoo >= 1.1.0
-# | | `-- repositories.manifest
-# | `-- unstable -> testing (complement),
-# | | ../foo/testing (prerequisite)
-# | |-- libbar-1.1.1.tar.gz -> libfoo >= 1.1.0
-# | `-- repositories.manifest
-# |
-# |-- foo
-# | |-- stable
-# | | |-- libfoo-1.0.0.tar.gz
-# | | `-- repositories.manifest
-# | `-- testing -> stable (complement)
-# | |-- libfoo-1.1.0.tar.gz
-# | `-- repositories.manifest
-# |
-# `-- hello
-# | |-- libhello-1.0.0.tar.gz
-# | `-- repositories.manifest
-# |
-# |-- libhello-1.0.0
-# | |-- build
-# | | |-- bootstrap.build
-# | | |-- export.build
-# | | `-- root.build
-# | `-- *
-# |
-# |-- cycle
-# | |-- extra -> stable (prerequisite)
-# | | |-- libbar-1.1.0+1.tar.gz
-# | | `-- repositories.manifest
-# | |-- math -> extra (prerequisite)
-# | | |-- libbar-1.0.0.tar.gz
-# | | `-- repositories.manifest
-# | `-- stable -> math (prerequisite)
-# | |-- libfoo-1.0.0.tar.gz
-# | `-- repositories.manifest
-# |
-# |-- no-cycle
-# | |-- extra
-# | | |-- libbar-1.1.0+1.tar.gz
-# | | `-- repositories.manifest
-# | |-- math
-# | | |-- libbar-1.0.0.tar.gz
-# | | `-- repositories.manifest
-# | `-- stable -> extra (prerequisite)
-# | |-- libfoo-1.0.0.tar.gz
-# | `-- repositories.manifest
-# |
-# `-- git/* (see rep-fetch-git.test)
-
-# Prepare repositories used by tests if running in the local mode.
-#
-+if ($remote != true)
- rep_create += 2>!
-
- # Create the signed 'hello' repository.
- #
- cp -r $src/hello $out/hello
- cat <<<$cert_manifest >+$out/hello/repositories.manifest
-
- $rep_create --key $key $out/hello &$out/hello/packages.manifest \
- &$out/hello/signature.manifest
-
- # Create 'foo/*' repositories.
- #
- cp -r $src/foo $out/foo
-
- # Sign foo/stable repository.
- #
- cat <<<$cert_manifest >+$out/foo/stable/repositories.manifest
- $rep_create --key $key $out/foo/stable &$out/foo/stable/packages.manifest \
- &$out/foo/stable/signature.manifest
-
- # Add dependent trust to foo complement repository into the foo/testing
- # repository manifest.
- #
- tv = "trust: $cert_fp
-:"
-
- sed -i -e "s/^\(:\)\$/$tv/" $out/foo/testing/repositories.manifest
-
- $rep_create $out/foo/testing &$out/foo/testing/packages.manifest
-
- # Create 'bar/*' repositories.
- #
- cp -r $src/bar $out/bar
- $rep_create $out/bar/stable &$out/bar/stable/packages.manifest
- $rep_create $out/bar/testing &$out/bar/testing/packages.manifest
- $rep_create $out/bar/unstable &$out/bar/unstable/packages.manifest
-
- # Create 'cycle/*' repositories.
- #
- cp -r $src/cycle $out/cycle
- $rep_create $out/cycle/extra &$out/cycle/extra/packages.manifest
- $rep_create $out/cycle/math &$out/cycle/math/packages.manifest
- $rep_create $out/cycle/stable &$out/cycle/stable/packages.manifest
-
- # Create git repositories.
- #
- $git_extract $src/git/state0/libfoo.tar
- $git_extract $src/git/state0/libfox.tar
- $git_extract $src/git/state0/libbar.tar
- $git_extract $src/git/state0/style.tar
- $git_extract $src/git/state0/style-basic.tar &$out_git/state0/***
-
- $git_extract $src/git/state1/libfoo.tar
- $git_extract $src/git/state1/libbaz.tar
- $git_extract $src/git/state1/style.tar
- $git_extract $src/git/state1/style-basic.tar &$out_git/state1/***
-end
-
-rep_add += -d cfg 2>!
-rep_list += -d cfg --prerequisites --complements
-rep_remove += -d cfg 2>!
-pkg_status += -d cfg
-pkg_fetch += -d cfg 2>!
-pkg_unpack += -d cfg 2>!
-pkg_checkout += -d cfg
-pkg_purge += -d cfg
-pkg_drop += -d cfg --yes 2>!
-
-: no-repos
-:
-$clone_cfg;
-$* 2>>/EOE != 0
- error: configuration cfg/ has no repositories
- info: use 'bpkg rep-add' to add a repository
- EOE
-
-: pkg-rep
-:
-{
- test.options += --auth all
-
- : hello
- :
- {
- $clone_root_cfg && $rep_add $rep/hello;
-
- $* --trust $cert_fp 2>>EOE &cfg/.bpkg/certs/**;
- fetching pkg:build2.org/rep-fetch/hello
- 1 package(s) in 1 repository(s)
- EOE
-
- $* 2>>EOE
- fetching pkg:build2.org/rep-fetch/hello
- 1 package(s) in 1 repository(s)
- EOE
- }
-
- : bar-unstable
- :
- {
- $clone_root_cfg && $rep_add $rep/bar/unstable;
-
- $* --trust-yes 2>>EOE &cfg/.bpkg/certs/**;
- fetching pkg:build2.org/rep-fetch/bar/unstable
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- 5 package(s) in 5 repository(s)
- EOE
-
- $* 2>>EOE
- fetching pkg:build2.org/rep-fetch/bar/unstable
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- 5 package(s) in 5 repository(s)
- EOE
- }
-
- : both
- :
- {
- $clone_root_cfg && $rep_add $rep/hello $rep/bar/unstable;
-
- $* --trust-yes 2>>EOE &cfg/.bpkg/certs/**;
- fetching pkg:build2.org/rep-fetch/bar/unstable
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/hello
- 6 package(s) in 6 repository(s)
- EOE
-
- $* 2>>EOE
- fetching pkg:build2.org/rep-fetch/bar/unstable
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/hello
- 6 package(s) in 6 repository(s)
- EOE
- }
-
- : location-args
- :
- {
- $clone_root_cfg;
-
- $* --trust-yes $rep/bar/unstable 2>>EOE &cfg/.bpkg/certs/**;
- added pkg:build2.org/rep-fetch/bar/unstable
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- 5 package(s) in 5 repository(s)
- EOE
-
- $* 'pkg:build2.org/rep-fetch/bar/unstable' 2>>EOE;
- fetching pkg:build2.org/rep-fetch/bar/testing (complements pkg:build2.org/rep-fetch/bar/unstable)
- fetching pkg:build2.org/rep-fetch/bar/stable (complements pkg:build2.org/rep-fetch/bar/testing)
- fetching pkg:build2.org/rep-fetch/foo/stable (prerequisite of pkg:build2.org/rep-fetch/bar/stable)
- fetching pkg:build2.org/rep-fetch/foo/testing (prerequisite of pkg:build2.org/rep-fetch/bar/testing)
- 5 package(s) in 5 repository(s)
- EOE
-
- $rep_list >>"EOO"
- pkg:build2.org/rep-fetch/bar/unstable ($rep/bar/unstable)
- complement pkg:build2.org/rep-fetch/bar/testing ($rep/bar/testing)
- complement pkg:build2.org/rep-fetch/bar/stable ($rep/bar/stable)
- prerequisite pkg:build2.org/rep-fetch/foo/stable ($rep/foo/stable)
- prerequisite pkg:build2.org/rep-fetch/foo/testing ($rep/foo/testing)
- complement pkg:build2.org/rep-fetch/foo/stable ($rep/foo/stable)
- prerequisite pkg:build2.org/rep-fetch/foo/testing ($rep/foo/testing)
- complement pkg:build2.org/rep-fetch/foo/stable ($rep/foo/stable)
- EOO
- }
-
- : prerequisites-cycle
- :
- {
- $clone_root_cfg;
-
- $* --trust-yes $rep/cycle/stable 2>>EOE;
- added pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/math (prerequisite of pkg:build2.org/rep-fetch/cycle/stable)
- fetching pkg:build2.org/rep-fetch/cycle/extra (prerequisite of pkg:build2.org/rep-fetch/cycle/math)
- 3 package(s) in 3 repository(s)
- EOE
-
- $rep_list >>"EOO"
- pkg:build2.org/rep-fetch/cycle/stable ($rep/cycle/stable)
- prerequisite pkg:build2.org/rep-fetch/cycle/math ($rep/cycle/math)
- prerequisite pkg:build2.org/rep-fetch/cycle/extra ($rep/cycle/extra)
- prerequisite pkg:build2.org/rep-fetch/cycle/stable ($rep/cycle/stable)
- EOO
- }
-
- : unreferenced-prerequisite
- :
- {
- +$clone_root_cfg
-
- # Create the no-cycle repository as the new state of the cycle repository.
- # The cycle dependency is now broken (extra/ doesn't depend on stable/
- # anymore) and the extra/ prerequisite is moved from math/ to stable/.
- #
- nc_rep = [dir_path] $~/pkg/1/build2.org/rep-fetch/cycle/
- +mkdir -p $path.directory($nc_rep)
- +cp -r $src/no-cycle "$nc_rep" # Strip trailing slash.
-
- +$rep_create $nc_rep/extra 2>! &$nc_rep/extra/packages.manifest
- +$rep_create $nc_rep/math 2>! &$nc_rep/math/packages.manifest
- +$rep_create $nc_rep/stable 2>! &$nc_rep/stable/packages.manifest
-
- math_rep = $nc_rep/math
- stable_rep = $nc_rep/stable
-
- : remove
- :
- {
- $clone_cfg;
-
- $* --trust-yes $rep/cycle/stable 2>>EOE;
- added pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/math (prerequisite of pkg:build2.org/rep-fetch/cycle/stable)
- fetching pkg:build2.org/rep-fetch/cycle/extra (prerequisite of pkg:build2.org/rep-fetch/cycle/math)
- 3 package(s) in 3 repository(s)
- EOE
-
- $* --trust-yes $stable_rep 2>>EOE;
- updated pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/extra (prerequisite of pkg:build2.org/rep-fetch/cycle/stable)
- 2 package(s) in 2 repository(s)
- EOE
-
- $rep_list >>"EOO"
- pkg:build2.org/rep-fetch/cycle/stable ($nc_rep/stable)
- prerequisite pkg:build2.org/rep-fetch/cycle/extra ($nc_rep/extra)
- EOO
- }
-
- : no-remove
- :
- {
- $clone_cfg;
-
- $* --trust-yes $rep/cycle/stable 2>>EOE;
- added pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/math (prerequisite of pkg:build2.org/rep-fetch/cycle/stable)
- fetching pkg:build2.org/rep-fetch/cycle/extra (prerequisite of pkg:build2.org/rep-fetch/cycle/math)
- 3 package(s) in 3 repository(s)
- EOE
-
- $* --trust-yes $math_rep $stable_rep 2>>EOE;
- added pkg:build2.org/rep-fetch/cycle/math
- updated pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/math
- fetching pkg:build2.org/rep-fetch/cycle/stable
- fetching pkg:build2.org/rep-fetch/cycle/extra (prerequisite of pkg:build2.org/rep-fetch/cycle/stable)
- 3 package(s) in 3 repository(s)
- EOE
-
- $rep_list >>"EOO"
- pkg:build2.org/rep-fetch/cycle/math ($nc_rep/math)
- pkg:build2.org/rep-fetch/cycle/stable ($nc_rep/stable)
- prerequisite pkg:build2.org/rep-fetch/cycle/extra ($nc_rep/extra)
- EOO
- }
- }
-
- : use-auth
- :
- {
- : dependent-trust
- :
- : Test that the certificate of foo/stable complement repository is
- : silently authenticated for use by the dependent foo/testing repository.
- : In this case the certificate is not saved into the database (see the
- : subsequent 'rep-fetch $rep/foo/stable' test) and certificate file is not
- : persisted (otherwise cleanup of non-empty cfg/ directory would fail).
- :
- {
- $clone_root_cfg;
-
- $* --verbose 2 $rep/foo/testing <'y' 2>>~%EOE%;
- added pkg:build2.org/rep-fetch/foo/testing
- %.*
- warning: repository pkg:build2.org/rep-fetch/foo/testing is unsigned
- %continue without authenticating repositories at .+\? \[y/n\] .+%
- %.+
- info: certificate for repository pkg:build2.org/rep-fetch/foo/stable authenticated by dependent trust
- %.+
- 2 package(s) in 2 repository(s)
- EOE
-
- $* $rep/foo/stable 2>>~%EOE% != 0
- %.+
- warning: authenticity of the certificate for repository pkg:build2.org/rep-fetch/foo/stable cannot be established
- %.+
- EOE
- }
-
- : dependent-command-line
- :
- : Test that the certificate of foo/stable complement repository is
- : authenticated for use by the command line (persisted into the database
- : and the filesystem) rather than dependent trust.
- :
- {
- $clone_root_cfg;
-
- $* --trust $cert_fp --verbose 2 $rep/foo/testing <'y' 2>>~%EOE% &cfg/.bpkg/certs/**
- added pkg:build2.org/rep-fetch/foo/testing
- %.*
- warning: repository pkg:build2.org/rep-fetch/foo/testing is unsigned
- %continue without authenticating repositories at .+\? \[y/n\] .+%
- %.+
- info: certificate for repository pkg:build2.org/rep-fetch/foo/stable authenticated by command line
- %.+
- 2 package(s) in 2 repository(s)
- EOE
- }
-
- : dependent-trust-prompt
- :
- : Test that the certificate of foo/stable repository is first authenticated
- : for use by the dependent foo/test repository and then by the user (via
- : the prompt) as a top-level repository during a single rep-fetch
- : operation.
- :
- {
- yy = 'y
-y'
- $clone_root_cfg;
-
- $* --verbose 2 $rep/foo/testing $rep/foo/stable <$yy 2>>~%EOE% &cfg/.bpkg/certs/**
- added pkg:build2.org/rep-fetch/foo/testing
- added pkg:build2.org/rep-fetch/foo/stable
- fetching pkg:build2.org/rep-fetch/foo/testing
- %.*
- warning: repository pkg:build2.org/rep-fetch/foo/testing is unsigned
- %continue without authenticating repositories at .+\? \[y/n\] .+%
- %.+
- info: certificate for repository pkg:build2.org/rep-fetch/foo/stable authenticated by dependent trust
- %.+
- warning: authenticity of the certificate for repository pkg:build2.org/rep-fetch/foo/stable cannot be established
- certificate is for build2.org, "Code Synthesis" <info@build2.org>
- %.+
- %.+2 package\(s\) in 2 repository\(s\)%
- EOE
- }
-
- : command-line-dependent-noop
- :
- : Test that the certificate of foo/stable repository is first authenticated
- : by the user (via the command line) as a top-level repository and so
- : authentication for use by the dependent foo/test is noop.
- :
- {
- $clone_root_cfg;
-
- $* --trust $cert_fp --verbose 2 $rep/foo/stable $rep/foo/testing <'y' 2>>~%EOE% &cfg/.bpkg/certs/**
- added pkg:build2.org/rep-fetch/foo/stable
- added pkg:build2.org/rep-fetch/foo/testing
- fetching pkg:build2.org/rep-fetch/foo/stable
- %.+
- info: certificate for repository pkg:build2.org/rep-fetch/foo/stable authenticated by command line
- %.+
- fetching pkg:build2.org/rep-fetch/foo/testing
- %.*
- warning: repository pkg:build2.org/rep-fetch/foo/testing is unsigned
- %continue without authenticating repositories at .+\? \[y/n\] .+%
- %.*
- 2 package(s) in 2 repository(s)
- EOE
- }
- }
-}
-
-: dir-rep
-:
-: For dir repository tests we will reuse local git repositories, that have the
-: same repository structure.
-:
-if ($remote != true)
-{
- rep_add += --type dir
-
- +cp -r $out_git/state0 $~/state0
-
- rep = $canonicalize([dir_path] $~/state0)
-
- +cat <<EOI >= $rep/libbar.git/repositories.manifest
- : 1
- role: prerequisite
- type: dir
- location: ../style-basic.git
- EOI
-
- +$clone_cfg && $rep_add $rep/libbar.git
-
- : prerequisites
- :
- {
- $clone_cfg;
-
- $* 2>>"EOE";
- fetching dir:($rep/libbar.git)
- fetching dir:($rep/style-basic.git) \(prerequisite of dir:($rep/libbar.git)\)
- 3 package\(s\) in 2 repository\(s\)
- EOE
-
- $rep_list >>"EOO"
- dir:($rep/libbar.git) ($rep/libbar.git)
- prerequisite dir:($rep/style-basic.git) ($rep/style-basic.git)
- EOO
- }
-
- : by-name
- :
- : Here we, in particular, test that the local repository canonical name
- : (dir:/...) is not confused with the repository URL.
- :
- {
- $clone_cfg;
- $* 2>!;
-
- $* "dir:($rep/libbar.git)" 2>>"EOE";
- fetching dir:($rep/style-basic.git) \(prerequisite of dir:($rep/libbar.git)\)
- 3 package\(s\) in 2 repository\(s\)
- EOE
-
- $rep_list >>"EOO"
- dir:($rep/libbar.git) ($rep/libbar.git)
- prerequisite dir:($rep/style-basic.git) ($rep/style-basic.git)
- EOO
- }
-
- : shallow
- :
- {
- +$clone_cfg
-
- : respected
- :
- {
- $clone_cfg;
- $* 2>!;
-
- $* --shallow "dir:($rep/libbar.git)" 2>>"EOE";
- 3 package\(s\) in 2 repository\(s\)
- EOE
-
- $rep_list >>"EOO"
- dir:($rep/libbar.git) ($rep/libbar.git)
- prerequisite dir:($rep/style-basic.git) ($rep/style-basic.git)
- EOO
- }
-
- : ignored
- :
- {
- $clone_cfg;
-
- $* --shallow 2>>"EOE";
- fetching dir:($rep/libbar.git)
- fetching dir:($rep/style-basic.git) \(prerequisite of dir:($rep/libbar.git)\)
- 3 package\(s\) in 2 repository\(s\)
- EOE
-
- $rep_list >>"EOO"
- dir:($rep/libbar.git) ($rep/libbar.git)
- prerequisite dir:($rep/style-basic.git) ($rep/style-basic.git)
- EOO
- }
- }
-}
-
-: iter
-:
-{
- rep_add += --type dir
-
- : multiple-repos
- :
- {
- cp -r $src/libhello-1.0.0 libhello1;
- cp -r $src/libhello-1.0.0 libhello2;
-
- $clone_root_cfg && $rep_add libhello1 libhello2;
-
- $* 2>>~%EOE% != 0
- %fetching dir:.+libhello1%
- %fetching dir:.+libhello2%
- error: external package libhello/1.0.0 is available from two repositories
- % info: repository .+libhello1%
- % info: repository .+libhello2%
- EOE
- }
-
- : inc
- :
- {
- : path-changed
- :
- {
- $clone_root_cfg && $rep_add $src/libhello-1.0.0;
-
- $* 2>!;
- $pkg_unpack libhello/1.0.0;
-
- $rep_remove --all;
-
- cp -r $src/libhello-1.0.0 libhello;
- $rep_add libhello;
-
- $* 2>!;
-
- $pkg_status libhello >'libhello unpacked 1.0.0 available 1.0.0#1'
- }
-
- : manifest-changed
- :
- {
- cp -r $src/libhello-1.0.0 libhello;
-
- $clone_root_cfg && $rep_add libhello;
-
- $* 2>!;
- $pkg_unpack libhello/1.0.0;
-
- echo "" >+ libhello/manifest;
- $* 2>!;
-
- $pkg_status libhello >'libhello unpacked 1.0.0 available 1.0.0#1'
- }
-
- : pkg-rep
- {
- +$clone_root_cfg
-
- +$* --auth all --trust-yes $rep/hello &cfg/.bpkg/certs/** 2>!
- +$pkg_fetch libhello/1.0.0
- +$pkg_unpack libhello
-
- : unchanged-external
- :
- {
- $clone_cfg && $rep_add $src/libhello-1.0.0;
- $* 2>!;
-
- $pkg_status libhello >'libhello unpacked 1.0.0'
- }
-
- : changed-external
- :
- {
- cp -r $src/libhello-1.0.0 libhello;
- echo "" >+ libhello/manifest;
-
- $clone_cfg && $rep_add libhello;
- $* 2>!;
-
- $pkg_status libhello >'libhello unpacked 1.0.0 available 1.0.0#1'
- }
-
- -$pkg_purge libhello 2>'purged libhello/1.0.0'
- }
-
- : git-rep
- :
- if ($git_supported == true && $remote != true)
- {
- rep = $canonicalize([dir_path] $out_git/state0);
-
- $clone_root_cfg;
-
- $* "$rep/style.git#master" 2>! &cfg/.bpkg/repos/*/***;
-
- # Convert specific warnings to infos as we expect them to appear. This,
- # in particular, prevents bbot workers to set task result status to
- # warning.
- #
- $pkg_checkout "style/1.0.0" 2>&1 | \
- sed -e 's/warning: (fetching (over|whole) .*)/info: \1/' >&2 2>!;
-
- $rep_add $rep/style.git;
- $* 2>!;
-
- $pkg_status style >"style unpacked 1.0.0";
-
- $pkg_purge style 2>"purged style/1.0.0"
- }
- }
-
- : no-inc
- :
- {
- $clone_root_cfg;
-
- $pkg_unpack -e $src/libhello-1.0.0;
-
- $rep_add $src/libhello-1.0.0;
-
- $* 2>>~%EOE%;
- %fetching dir:.+libhello-1.0.0%
- 1 package(s) in 1 repository(s)
- EOE
-
- $pkg_status libhello >'libhello unpacked 1.0.0'
- }
-}
-
-: git-rep
-:
-if ($git_supported != true)
-{
- # Skip git repository tests.
- #
-}
-else
-{
- : proto
- :
- if ($remote != true)
- {
- git_protocol = 'local'
- .include rep-fetch-git.test
- }
- else
- {
- : https-dumb
- :
- {
- git_protocol = 'https-dumb'
- .include rep-fetch-git.test
- }
-
- : https-smart
- :
- {
- git_protocol = 'https-smart'
- .include rep-fetch-git.test
- }
-
- : https-smart-unadv
- :
- {
- git_protocol = 'https-smart-unadv'
- .include rep-fetch-git.test
- }
-
- : git
- :
- {
- git_protocol = 'git'
- .include rep-fetch-git.test
- }
- }
-
- : strip-ext
- :
- : Test that if the local prerequisite git repository having the .git
- : extension does not exist but the one without the extension does, then
- : it is picked up by rep-fetch.
- :
- if ($remote != true)
- {
- cp -r $out_git/state0/libbar.git libbar.git;
- cp -r $out_git/state0/style-basic.git style-basic;
-
- $clone_root_cfg;
-
- rep = ($cxx.target.class != 'windows' \
- ? "file:$~" \
- : "file:/$regex.replace($~, '\\', '/')");
-
- $* "$rep/libbar.git#master" 2>>~%EOE% &cfg/.bpkg/repos/*/***;
- %added git:.+libbar#master%
- %querying .+libbar\.git%
- %fetching from .+libbar\.git%
- %fetching git:.+style-basic#stable \(prerequisite of git:.+libbar#master\)%
- %querying .+style-basic%
- %fetching from .+style-basic%
- 3 package(s) in 2 repository(s)
- EOE
-
- $rep_list >>~%EOO%
- %git:.+libbar#master file:.+libbar\.git#master%
- % prerequisite git:.+style-basic#stable file:.+style-basic#stable \(heads/master\)%
- EOO
- }
-
- : checkout-submodules
- :
- : Test that if some of the packages are located in the repository
- : submodules directory, then rep-fetch checks out submoodules.
- :
- {
- $clone_root_cfg && $rep_add "$rep_git/state0/libfox.git#master";
-
- $* 2>>~%EOE% &cfg/.bpkg/repos/*/***
- %fetching git:.+libfox#master%
- %querying .+libfox\.git%
- %fetching from .+libfox\.git%
- %warning: .+%{0,2}
- %querying .+libbar\.git%?
- %fetching submodule 'libbar' from .+libbar\.git%
- %warning: .+%{0,2}
- %submodule path 'libbar': checked out '.+'%
- 2 package(s) in 1 repository(s)
- EOE
- }
-
- : re-fetching
- :
- : Test that repository is re-fetched on the location change. Here it happens
- : due to the scheme change.
- :
- if ($remote == true)
- {
- $clone_root_cfg && $rep_add "$rep_git_git/state0/libfoo.git#master";
- $* 2>! &cfg/.bpkg/repos/*/***;
- $rep_add "$rep_git_https_smart_unadv/state0/libfoo.git#master";
-
- $* 2>>~%EOE%
- %fetching git:.+libfoo#master%
- %info: location changed for git:.+libfoo#master%
- % info: new location https://.+libfoo\.git#master%
- % info: old location git://.+libfoo\.git#master%
- %querying .+libfoo\.git%
- 1 package(s) in 1 repository(s)
- EOE
- }
-
- : cleanup-failed
- :
- : Test that configuration is cleaned up if fetch fails after the repository
- : filesystem state is changed.
- :
- {
- $clone_root_cfg && $rep_add "$rep_git/state0/libfoo.git#master";
-
- # Extract the repository path from the output line like this:
- #
- # fetching from <url> in 'cfg/.bpkg/tmp/4bde15f59461'...
- #
- $* --verbose 2 2>&1 | \
- sed -n -e "s/fetching from .+ in '\(.+\)'/\$1/p" | \
- sed -n -e 's%(.+[\\/])tmp([\\/].+)%$1repos$2%p' | \
- set r;
-
- # Break the repo (drop the remote repository URL) and try to re-fetch.
- #
- rm "$r/.git/config";
-
- $* 2>>~%EOE% != 0;
- %.+
- warning: repository state is now broken and will be cleaned up
- info: run 'bpkg rep-fetch' to update
- EOE
-
- $pkg_status libfoo >'libfoo unknown'
- }
-
- : ref-filters
- :
- {
- test.cleanups += &?cfg/.bpkg/repos/*/***
-
- : pattern
- :
- {
- : matching
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#v**" 2>>~%EOE%
- %added .+libfoo#v\*\*%
- %querying .+libfoo\.git%
- %fetching from .+libfoo\.git%
- %warning: .+%{0,2}
- 2 package(s) in 1 repository(s)
- EOE
- }
-
- : non-matching
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#tags/mast*" 2>>~%EOE%
- %added .+libfoo#tags/mast\*%
- %querying .+libfoo\.git%
- 0 package(s) in 1 repository(s)
- EOE
- }
- }
-
- : name
- :
- {
- : non-matching
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#foo" 2>>~%EOE% != 0
- %added .+libfoo#foo%
- %querying .+libfoo\.git%
- error: reference 'foo' is not found
- EOE
- }
- }
-
- : commit
- :
- {
- : non-matching-pattern
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#foo*@9ab039761936802d61b8e591d6812a4dd4605029" 2>>~%EOE% != 0
- %added .+libfoo#foo\*@9ab039761936802d61b8e591d6812a4dd4605029%
- %querying .+libfoo\.git%
- error: no names match pattern 'foo*'
- EOE
- }
-
- : unexisting
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#9ab039761936802d61b8e591d6812a4dd4605029" 2>>~%EOE% != 0
- %added .+libfoo#9ab039761936802d61b8e591d6812a4dd4605029%
- %querying .+libfoo\.git%
- %fetching from .+libfoo\.git%
- %warning: .+%{0,2}
- error: unable to fetch commit 9ab039761936802d61b8e591d6812a4dd4605029
- EOE
- }
- }
-
- : exclusion
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#mast*,-master" 2>>~%EOE%
- %added .+libfoo#mast\*,-master%
- %querying .+libfoo\.git%
- 0 package(s) in 1 repository(s)
- EOE
- }
-
- : inclusion
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git#tags/mast*,+master" 2>>~%EOE%
- %added .+libfoo#tags/mast\*,\+master%
- %querying .+libfoo\.git%
- %fetching from .+libfoo\.git%
- %warning: .+%{0,2}
- 1 package(s) in 1 repository(s)
- EOE
- }
-
- : default
- :
- {
- : no-fragment
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git" 2>>~%EOE%
- %added .+libfoo%
- %querying .+libfoo\.git%
- %fetching from .+libfoo\.git%
- %warning: .+%{0,2}
- 2 package(s) in 1 repository(s)
- EOE
- }
-
- : with-exclusion
- :
- {
- $clone_root_cfg;
-
- $* "$rep_git/state0/libfoo.git##-/tags/v1*" 2>>~%EOE%
- %added .+libfoo##-/tags/v1\*%
- %querying .+libfoo\.git%
- %fetching from .+libfoo\.git%
- %warning: .+%{0,2}
- 1 package(s) in 1 repository(s)
- EOE
- }
- }
- }
-}