# file : tests/rep-remove.testscript # copyright : Copyright (c) 2014-2019 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 }