diff options
author | David Kalnischkies <david@kalnischkies.de> | 2021-11-09 20:37:18 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2021-11-23 14:18:25 +0100 |
commit | dd81b736095f244454c7f179e67f21c08f3fbce9 (patch) | |
tree | 72dab24369cf26bc9d7a4e30986b25a18a2f002a /test | |
parent | d08b87a711e4aad3e0c9b8777262cba6bd755099 (diff) |
Support more than exact release matches in 'source'
The Debian 11 release notes elevate matching with regex to a documented
and much used feature, which it previously wasn't. For binary packages
this is not a problem, but source packages are special and it turns out
that matching by release is here an exact string match only.
A bit of refactoring later we can reuse the code we use for Packages
files also for Release files, which is what we have for Sources files as
those files itself have no representation in the cache.
This means that we do not support matching based on components (c=main)
in source, but we didn't before and we can cross that bridge if anyone
notices…
Closes: #998444
Diffstat (limited to 'test')
-rwxr-xr-x | test/integration/test-bug-998444-regex-as-target-release | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/integration/test-bug-998444-regex-as-target-release b/test/integration/test-bug-998444-regex-as-target-release new file mode 100755 index 000000000..97970bccd --- /dev/null +++ b/test/integration/test-bug-998444-regex-as-target-release @@ -0,0 +1,65 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +addpackage() { + insertpackage "$@" + insertsource "$@" +} + +addpackage 'stable' 'foo' 'all' '1' +addpackage 'stable-security' 'foo' 'all' '1.1~security.1' +addpackage 'stable-updates' 'foo' 'all' '2~stable.1' +addpackage 'unstable' 'foo' 'all' '2' +addpackage 'experimental' 'foo' 'all' '3' +addpackage 'external' 'foo' 'all' '4' + +cat > rootdir/etc/apt/preferences <<EOF +Package: * +Pin: release a=external +Pin-Priority: -10 +EOF + +setupaptarchive + +APTARCHIVE="file:${TMPWORKINGDIRECTORY}/aptarchive" + +testfoo() { + testsuccessequal "foo: + Installed: (none) + Candidate: $1 + Version table: + 4 $2 + $(printf '%3s' "$2") ${APTARCHIVE} external/main all Packages + 3 $3 + $(printf '%3s' "$3") ${APTARCHIVE} experimental/main all Packages + 2 $4 + $(printf '%3s' "$4") ${APTARCHIVE} unstable/main all Packages + 2~stable.1 $5 + $(printf '%3s' "$5") ${APTARCHIVE} stable-updates/main all Packages + 1.1~security.1 $6 + $(printf '%3s' "$6") ${APTARCHIVE} stable-security/main all Packages + 1 $7 + $(printf '%3s' "$7") ${APTARCHIVE} stable/main all Packages" apt policy foo -t "$8" + testsuccessequal "'${APTARCHIVE}/pool/main/foo/foo_$(apthelper quote-string "${1}" '+~ ')_all.deb' foo_${1}_all.deb 42 SHA256:0000000000000000000000000000000000000000000000000000000000000000" apt download foo --print-uris -t "$8" + testsuccess apt source -t "$8" --print-uris foo + tail -n 2 rootdir/tmp/testsuccess.output | cut -d' ' -f 2 > aptsource.output + testfileequal 'aptsource.output' "foo_${9:-$1}.dsc +foo_${9:-$1}.tar.gz" +} +testfoo '2' '-10' '1' '500' '500' '500' '500' '' '4' +testfoo '2' '-10' '1' '990' '500' '500' '500' 'unstable' '2' +testfoo '1' '-10' '1' '500' '500' '500' '990' 'stable' +testfoo '2~stable.1' '-10' '1' '500' '990' '500' '500' 'stable-updates' +testfoo '1.1~security.1' '-10' '1' '500' '500' '990' '500' 'stable-security' +testfoo '4' '990' '1' '500' '500' '500' '500' 'a=external' +testfoo '2' '-10' '1' '990' '990' '990' '990' '/stable/' +testfoo '2~stable.1' '-10' '1' '500' '990' '990' '990' '/^stable/' +testfoo '1.1~security.1' '-10' '1' '500' '500' '990' '990' '/^stable(|-security)$/' +testfoo '2~stable.1' '-10' '1' '500' '990' '990' '500' '/^stable(-security|-updates)$/' +testfoo '2~stable.1' '-10' '1' '500' '990' '990' '990' '/^stable(|-security|-updates)$/' +testfoo '4' '990' '990' '990' '990' '990' '990' '/./' |