diff options
Diffstat (limited to 'tests/rep-remove.testscript')
-rw-r--r-- | tests/rep-remove.testscript | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/tests/rep-remove.testscript b/tests/rep-remove.testscript new file mode 100644 index 0000000..0b7955a --- /dev/null +++ b/tests/rep-remove.testscript @@ -0,0 +1,212 @@ +# file : tests/rep-remove.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include common.testscript \ + config.testscript \ + remote.testscript \ + remote-git.testscript + +# Source repository: +# +# rep-remove +# |-- 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 +# | +# `-- testing -> stable (complement), extra (prerequisite) +# | |-- libbar-2.0.0.tar.gz +# | `-- repositories.manifest +# | +# `-- alpha +# | |-- libbar-2.0.0.tar.gz +# | `-- repositories.manifest +# | +# `-- git +# `-- style-basic.git + +# Prepare repositories used by tests if running in the local mode. +# ++if ($remote != true) + cp -r $src/extra $out/extra + cp -r $src/math $out/math + cp -r $src/stable $out/stable + cp -r $src/testing $out/testing + cp -r $src/alpha $out/alpha + + c = $rep_create 2>! + + $c $out/extra &$out/extra/packages.manifest + $c $out/math &$out/math/packages.manifest + $c $out/stable &$out/stable/packages.manifest + $c $out/testing &$out/testing/packages.manifest + $c $out/alpha &$out/alpha/packages.manifest + + # Create git repositories. + # + $git_extract $src/git/style-basic.tar &$out_git/state0/*** +end + +rep_add += -d cfg 2>! +rep_fetch += -d cfg --auth all --trust-yes 2>! +rep_list += -d cfg --prerequisites --complements +pkg_status += -d cfg + +: invalid-args +: +{ + : clean-all + : + $* --clean --all 2>>EOE != 0 + error: both --clean and --all|-a specified + info: run 'bpkg help rep-remove' for more information + EOE + + : clean-repos + : + $* --clean $rep/extra 2>>EOE != 0 + error: both --clean and repository argument specified + info: run 'bpkg help rep-remove' for more information + EOE + + : all-repos + : + $* --all $rep/extra 2>>EOE != 0 + error: both --all|-a and repository argument specified + info: run 'bpkg help rep-remove' for more information + EOE + + : none + : + $* 2>>EOE != 0 + error: repository name or location argument expected + info: run 'bpkg help rep-remove' for more information + EOE +} + +: clean +: +{ + $clone_cfg; + $rep_add $rep/extra && $rep_fetch; + + $* --clean 2>>"EOE"; + cleaned pkg:build2.org/rep-remove/extra + EOE + + $rep_list >>"EOE"; + pkg:build2.org/rep-remove/extra ($rep/extra) + EOE + + $pkg_status libbar >'libbar unknown' +} + +: all +: +{ + $clone_cfg; + $rep_add $rep/extra && $rep_fetch; + + $* --all 2>>"EOE"; + removed pkg:build2.org/rep-remove/extra + EOE + + $rep_list >:""; + $pkg_status libbar >'libbar unknown' +} + +: by-name +: +{ + $clone_cfg; + $rep_add $rep/extra && $rep_fetch; + + $* 'pkg:build2.org/rep-remove/extra' 2>>"EOE"; + removed pkg:build2.org/rep-remove/extra + EOE + + $rep_list >:""; + $pkg_status libbar >'libbar unknown' +} + +: prerequisites-cycle +: +{ + $clone_cfg; + $rep_add $rep/testing && $rep_fetch; + + $* $rep/testing 2>>"EOE"; + removed pkg:build2.org/rep-remove/testing + EOE + + $rep_list >:""; + $pkg_status libbar >'libbar unknown'; + $pkg_status libfoo >'libfoo unknown' +} + +: reacheable +: +{ + $clone_cfg; + $rep_add $rep/testing && $rep_add $rep/math && $rep_fetch; + + $* $rep/testing 2>>"EOE"; + removed pkg:build2.org/rep-remove/testing + EOE + + $rep_list >>"EOO"; + pkg:build2.org/rep-remove/math ($rep/math) + prerequisite pkg:build2.org/rep-remove/extra ($rep/extra) + prerequisite pkg:build2.org/rep-remove/stable ($rep/stable) + prerequisite pkg:build2.org/rep-remove/math ($rep/math) + EOO + + $pkg_status libbar >'libbar available [1.1.0+1] 1.0.0'; + $pkg_status libfoo >'libfoo available [1.0.0]' +} + +: package-locations +: +{ + $clone_cfg; + $rep_add $rep/testing && $rep_add $rep/alpha && $rep_fetch; + + $* $rep/testing 2>!; + $pkg_status libbar >'libbar available 2.0.0'; + + $* $rep/alpha 2>!; + $pkg_status libbar >'libbar unknown' +} + +: git-rep +: +if ($git_supported != true) +{ + # Skip git repository tests. + # +} +else +{ + rep = "$rep_git/state0" + + : root-complement + : + : Test that git repository root complement is handled properly. Note that + : we also test that the repository state directory is removed. Otherwise + : the testscript would fail to cleanup the working directory. + : + $clone_root_cfg; + $rep_add "$rep/style-basic.git#master" && $rep_fetch; + + $* "$rep/style-basic.git#master" 2>>~%EOO% + %removed git:.+style-basic#master% + EOO +} |