From 32e4cffb444d4ad936c9037eecea9bd78f81f3d0 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 13 Jun 2023 21:05:35 +0300 Subject: Add --mask-repository pkg-build option --- tests/pkg-build.testscript | 449 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 449 insertions(+) (limited to 'tests/pkg-build.testscript') diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index 90bc490..f9fdd0f 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -1811,6 +1811,12 @@ test.arguments += --sys-no-query $pkg_status libbar >'!libbar configured 1.2.0'; + # While at it, test using --mask-repository instead of rep-remove. + # + $* --upgrade --mask-repository $rep/t2 --mask-repository $rep/t5 2>>/EOE != 0; + error: libbar is not available + EOE + $rep_remove $rep/t2 $rep/t5; $* --upgrade 2>>/EOE != 0; @@ -3240,6 +3246,71 @@ test.arguments += --sys-no-query $pkg_drop libbar libbox } + : satisfy-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_cfg; + $rep_fetch $rep/t0b; + + $* libbar/0.0.1 2>!; + + $pkg_status libbaz >'libbaz configured 0.0.1 available 0.1.0 0.0.4 0.0.3 0.0.2'; + + $* libbar/0.0.2 ?libbaz 2>>EOE; + disfigured libbar/0.0.1 + disfigured libbaz/0.0.1 + disfigured libfox/0.0.1 + purged libfox/0.0.1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbaz/0.0.2 + unpacked libbaz/0.0.2 + fetched libbar/0.0.2 + unpacked libbar/0.0.2 + configured libfoo/1.0.0 + configured libbaz/0.0.2 + configured libbar/0.0.2 + EOE + + $pkg_status libbaz >'libbaz configured 0.0.2 available 0.1.0 0.0.4 0.0.3'; + + # Test that the selected package, that is "better" than the available + # one, is left. + # + $* --mask-repository $rep/t0b libbox ?libbaz 2>>EOE; + fetched libbox/0.0.1 + unpacked libbox/0.0.1 + configured libbox/0.0.1 + EOE + + $pkg_status libbaz >'libbaz configured 0.0.2 available 0.1.0 0.0.4 0.0.3'; + + # Test that the selected package is left as there is no satisfactory + # available package. + # + $* --mask-repository $rep/t0b --mask-repository $rep/t0a ?libbaz; + + # Test that the above behavior is not triggered for the system package. + # + $* --mask-repository $rep/t0b --mask-repository $rep/t0a '?sys:libbaz' 2>>EOE; + disfigured libbar/0.0.2 + disfigured libbox/0.0.1 + disfigured libbaz/0.0.2 + disfigured libfoo/1.0.0 + purged libfoo/1.0.0 + purged libbaz/0.0.2 + configured sys:libbaz/* + configured libbox/0.0.1 + configured libbar/0.0.2 + EOE + + $pkg_status libbaz >'libbaz configured,system !* available 0.1.0 0.0.4 0.0.3 0.0.2 0.0.1'; + + $pkg_drop libbar libbox + } + : unsatisfied : { @@ -3761,6 +3832,17 @@ test.arguments += --sys-no-query $* libbar --recursive --yes } + : unavailable-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_cfg; + + $* libbar --recursive --yes --mask-repository $rep/t0a \ + --mask-repository $rep/t0b --mask-repository $rep/t0c + } + -$pkg_drop libbar libbaz libfoo } @@ -14194,6 +14276,32 @@ test.arguments += --sys-no-query EOE } + : unavailable-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_cfg; + + $* '?sys:libbaz/0.0.3' 2>>EOE; + disfigured libbox/0.0.1 + disfigured libfix/0.0.3 + disfigured libbaz/0.0.3 + disfigured libfoo/1.0.0 + purged libfoo/1.0.0 + purged libbaz/0.0.3 + configured sys:libbaz/0.0.3 + configured libfix/0.0.3 + configured libbox/0.0.1 + EOE + + $rep_fetch $rep/t0b; + + $* ?libbaz --patch --yes --mask-repository $rep/t0c 2>>EOE != 0 + error: patch version for sys:libbaz/0.0.3 is not available from its dependents' repositories + EOE + } + -$pkg_drop libbox libfix libbaz libfoo } @@ -16358,6 +16466,65 @@ else EOO } + : orphan-repointed-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $cfg_create -d h1 --type host --name h1 &h1/***; + $cfg_create -d h2 --type host --name h2 &h2/***; + + $cfg_link -d h1 h2; + + $rep_add -d h1 $rep/t7b && $rep_fetch -d h1; + + test.arguments = $regex.apply($test.arguments, cfg, h1); + + $* foo --yes 2>!; + + $rep_add -d h1 $rep/t7a && $rep_fetch -d h1; + + $rep_add -d h2 $rep/t7a && $rep_fetch -d h2; + + $* libbaz +{ --config-name h2 } --mask-repository $rep/t7b 2>>EOE != 0; + error: package foo/1.1.0 is orphaned + info: explicitly upgrade it to a new version + info: while satisfying foo/1.1.0 + EOE + + # While at it, test foo deorphaning. + # + $* foo +{ --deorphan } libbaz +{ --config-name h2 } --yes --plan "" \ + --mask-repository $rep/t7b 2>>~%EOE%; + % new libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\] \(required by foo\)% + % new libbaz/1.0.0 \[h2.\]% + drop libbaz/1.1.0 (unused) + deorphan/downgrade foo/1.0.0 + disfigured foo/1.1.0 + disfigured libbaz/1.1.0 + %fetched libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %unpacked libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %fetched libbaz/1.0.0 \[h2.\]% + %unpacked libbaz/1.0.0 \[h2.\]% + purged libbaz/1.1.0 + fetched foo/1.0.0 + unpacked foo/1.0.0 + %configured libbuild2-bar/1.0.0 \[h1.\.bpkg.build2.\]% + %configured libbaz/1.0.0 \[h2.\]% + configured foo/1.0.0 + %info: h2.+libbaz-1.0.0.+ is up to date% + %info: h1.+foo-1.0.0.+ is up to date% + %updated libbaz/1.0.0 \[h2.\]% + updated foo/1.0.0 + EOE + + $pkg_status -d h1 -r >>/EOO + !foo configured 1.0.0 available 1.1.0 + !libbaz [h2/] configured 1.0.0 available 1.1.0 + libbuild2-bar [h1/.bpkg/build2/] configured 1.0.0 + EOO + } + : unhold-repointed : { @@ -17724,6 +17891,93 @@ else $pkg_drop libbar } + : basics-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 + EOO + + echo "" >+ libfoo/manifest; + $rep_fetch; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0 to ?libfoo/1.1.0. + # + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --deorphan --mask-repository $cn ?libfoo 2>>~%EOE%; + deorphan/update/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + # Deorphan libfoo/1.1.0#1 to ?libfoo/1.1.0. + # + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + $* --mask-repository $cn --deorphan ?libfoo 2>>~%EOE%; + deorphan/downgrade/unhold libfoo/1.1.0 + reconfigure libbar (dependent of libfoo) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + configured libbar/1.1.0 + %info: .+libbar-1.1.0.+ is up to date% + updated libbar/1.1.0 + EOE + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + libfoo configured 1.1.0 available 1.1.0#1 + EOO + + $pkg_drop libbar + } + : drop : { @@ -17758,6 +18012,49 @@ else EOE } + : drop-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + $rep_fetch $rep/t4b; + + $* libbar 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $pkg_status -r libbar >>EOO; + !libbar configured 1.1.0 + !libfoo configured 1.1.0#1 + EOO + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --deorphan ?libfoo ?libbar --mask-repository $cn 2>>EOE + drop libfoo/1.1.0#1 (unused) + drop libbar/1.1.0 (unused) + disfigured libbar/1.1.0 + disfigured libfoo/1.1.0#1 + purged libfoo/1.1.0#1 + purged libbar/1.1.0 + EOE + } + : no-dependent : { @@ -17782,6 +18079,40 @@ else EOE } + : no-dependent-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + $rep_add --type dir libfoo/ && $rep_fetch; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $rep_fetch $rep/t4b; + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --deorphan ?libfoo --mask-repository $cn 2>>EOE + drop libfoo/1.1.0 (unused) + disfigured libfoo/1.1.0 + purged libfoo/1.1.0 + EOE + } + : preference : { @@ -18126,6 +18457,7 @@ else EOO $rep_remove $~/libbar/; + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; $* --deorphan --immediate libbar 2>>~%EOE%; @@ -18151,6 +18483,58 @@ else $pkg_drop libbar } + : immediate-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + cp -rp ../libbar ./; + + $rep_add --type dir libbar/ && $rep_fetch; + $* libbar ?libfoo/1.1.0 2>!; + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available (1.0.0) + libfoo configured !1.1.0 available [1.2.0] [1.1.1] (1.1.0) + EOO + + $rep_add $rep/t2 $rep/t4b $rep/t14c && $rep_fetch; + + # Note that on Windows the local repository canonical name path part + # is converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libbar)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --deorphan --immediate libbar --mask-repository $cn \ + --mask-repository $rep/t14b --mask-repository $rep/t14f \ + --mask-repository $rep/t14i 2>>~%EOE%; + deorphan/downgrade libfoo/1.0.0 + deorphan/update libbar/1.0.0 + disfigured libbar/1.0.0 + disfigured libfoo/1.1.0 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + fetched libbar/1.0.0 + unpacked libbar/1.0.0 + configured libfoo/1.0.0 + configured libbar/1.0.0 + %info: .+libbar.+ is up to date% + updated libbar/1.0.0 + EOE + + $pkg_status -or libbar >>EOO; + !libbar configured 1.0.0 available 1.1.0 (1.0.0) + libfoo configured !1.0.0 available [1.2.0] [1.1.1] 1.1.0+1 [1.1.0] (1.0.0) + EOO + + $pkg_drop libbar + } + : recursive : { @@ -18461,6 +18845,71 @@ else $pkg_drop libfoo } + : basics-masked + : + : As above but using --mask-repository instead of rep-remove. + : + { + $clone_root_cfg; + + cp -r $src/libfoo-1.1.0 libfoo; + sed -i -e 's/(version:).+/\1 1.0.0/' libfoo/manifest; + + $rep_add --type dir libfoo/ && $rep_fetch; + + $* libfoo 2>!; + + echo "" >+ libfoo/manifest; + $rep_fetch; + $* libfoo 2>!; + + $rep_fetch $rep/t4a $rep/t4c; + + $pkg_status -ro libfoo >>EOO; + !libfoo configured 1.0.0#1 available 1.1.0 (1.0.0#1) 1.0.0 + EOO + + # Deorphan libfoo/1.0.0#1 to libfoo/1.0.0. + # + # Note that on Windows the local repository canonical name path part is + # converted to lower case. + # + cn = "$canonicalize([dir_path] $~/libfoo)"; + if! $posix + cn = $lcase([string] $cn) + end; + cn = "dir:$cn"; + + $* --deorphan --mask-repository $cn libfoo 2>>~%EOE%; + deorphan/downgrade libfoo/1.0.0 + disfigured libfoo/1.0.0#1 + fetched libfoo/1.0.0 + unpacked libfoo/1.0.0 + configured libfoo/1.0.0 + %info: .+libfoo-1.0.0.+ is up to date% + updated libfoo/1.0.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.0.0 available 1.1.0 1.0.0#1'; + + # While at it, use the 'deorphan all held packages' form. + # + $* --deorphan --mask-repository $cn \ + --mask-repository $rep/t4c --mask-repository $rep/t4b 2>>~%EOE%; + deorphan/upgrade libfoo/1.1.0 + disfigured libfoo/1.0.0 + fetched libfoo/1.1.0 + unpacked libfoo/1.1.0 + configured libfoo/1.1.0 + %info: .+libfoo-1.1.0.+ is up to date% + updated libfoo/1.1.0 + EOE + + $pkg_status libfoo >'!libfoo configured 1.1.0'; + + $pkg_drop libfoo + } + : preference : { -- cgit v1.1