From 9e1398b164f55238990907f63dfdef60588d9b24 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 7 Nov 2020 21:23:57 +0100 Subject: Prepare rred binary for external usage Merging patches is a bit of non-trivial code we have for client-side work, but as we support also server-side merging we can export this functionality so that server software can reuse it. Note that this just cleans up and makes rred behave a bit more like all our other binaries by supporting setting configuration at runtime and supporting --help and --version. If you can make due without this, the now advertised functionality is provided already in earlier versions. --- test/integration/test-00-commands-have-help | 6 ++++- test/integration/test-method-rred | 37 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/integration/test-00-commands-have-help b/test/integration/test-00-commands-have-help index 4a0cc64d4..f91238d5d 100755 --- a/test/integration/test-00-commands-have-help +++ b/test/integration/test-00-commands-have-help @@ -49,7 +49,11 @@ for CMD in 'apt-cache' 'apt-cdrom' 'apt-config' \ checkoptions "$cmd" done -for CMD in 'apt-dump-solver' 'apt-internal-solver' 'apt-internal-planner'; do + +rred() { + runapt "${METHODSDIR}/rred" "$@" +} +for CMD in 'apt-dump-solver' 'apt-internal-solver' 'apt-internal-planner' 'rred'; do checkoptions "$(echo "$CMD" | tr -d '-')" done diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred index 5a885e9d2..00b4b7c0b 100755 --- a/test/integration/test-method-rred +++ b/test/integration/test-method-rred @@ -195,3 +195,40 @@ Package: supercoolstuff failrred 'Wrong order of commands' '7d 17d' failrred 'End before start' '7,6d' + +# deal correctly with patch merging +mergepatches() { + testsuccess runapt "${METHODSDIR}/rred" Packages.ed-* + cp -a rootdir/tmp/testsuccess.output patch.ed + testfileequal 'patch.ed' "$1" +} +createpatch() { + echo "$2" +} + +createpatch 'Change dog to cat + kitties' '19c + And a cat! + +Package: extra-kittens +Version: unavailable +Description: fix later +.' > Packages.ed-0 +createpatch 'Remove more stuff and fix later' '23d, +6d' > Packages.ed-1 +createpatch 'Remove (old) dog paragraph' '10,19d' > Packages.ed-2 +mergepatches '11,19c +Package: extra-kittens +Version: unavailable +. +6d' +testrred 'Apply' 'merged patch' "$(cat patch.ed)" 'Package: coolstuff +Version: 0.8.15 +Description: collection of stuff + A lot, too much to iterate all, but at least this: + - stuff + - even more stuff + . + And a cow. + +Package: extra-kittens +Version: unavailable' -- cgit v1.2.3 From 418f9272606857e312f485778a1ef1b263236463 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 7 Nov 2020 21:39:00 +0100 Subject: Support reading compressed patches in rred direct call modes The acquire system mode does this for a long time already and as it is easy to implement and handy for manual testing as well we can support it in the other modes, too. --- test/integration/test-method-rred | 3 +++ 1 file changed, 3 insertions(+) (limited to 'test') diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred index 00b4b7c0b..bef1a35e0 100755 --- a/test/integration/test-method-rred +++ b/test/integration/test-method-rred @@ -215,6 +215,9 @@ Description: fix later .' > Packages.ed-0 createpatch 'Remove more stuff and fix later' '23d, 6d' > Packages.ed-1 +testsuccess apthelper cat-file --compress gzip Packages.ed-1 +mv rootdir/tmp/testsuccess.output Packages.ed-1.gz +testsuccess rm Packages.ed-1 createpatch 'Remove (old) dog paragraph' '10,19d' > Packages.ed-2 mergepatches '11,19c Package: extra-kittens -- cgit v1.2.3 From e5bb443cf58cec23503ad0deeeb06a080053da8a Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 7 Nov 2020 22:52:20 +0100 Subject: Support compressed output from rred similar to apt-helper cat-file --- test/integration/test-method-rred | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred index bef1a35e0..fcadac146 100755 --- a/test/integration/test-method-rred +++ b/test/integration/test-method-rred @@ -198,9 +198,13 @@ failrred 'End before start' '7,6d' # deal correctly with patch merging mergepatches() { - testsuccess runapt "${METHODSDIR}/rred" Packages.ed-* + local CONTENT="$1" + shift + testsuccess runapt "${METHODSDIR}/rred" Packages.ed-* "$@" cp -a rootdir/tmp/testsuccess.output patch.ed - testfileequal 'patch.ed' "$1" + if [ "$#" = '0' ]; then + testfileequal 'patch.ed' "$CONTENT" + fi } createpatch() { echo "$2" @@ -223,7 +227,14 @@ mergepatches '11,19c Package: extra-kittens Version: unavailable . +6d' -C 'gzip' +mv patch.ed patch.ed.gz +mergepatches '11,19c +Package: extra-kittens +Version: unavailable +. 6d' +testfileequal patch.ed "$(apt-helper cat-file patch.ed.gz)" testrred 'Apply' 'merged patch' "$(cat patch.ed)" 'Package: coolstuff Version: 0.8.15 Description: collection of stuff -- cgit v1.2.3