aboutsummaryrefslogtreecommitdiff
path: root/tests/rep-remove.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rep-remove.testscript')
-rw-r--r--tests/rep-remove.testscript212
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
+}