diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:12:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:12:14 +0000 |
commit | 4b8a0f3f3dcf60dac2ce308ea08d413a535af29f (patch) | |
tree | 0f09c0ad2a4d0f535d89040a63dc3a866a6606e6 /tests/packagediff.test | |
parent | Initial commit. (diff) | |
download | reprepro-4b8a0f3f3dcf60dac2ce308ea08d413a535af29f.tar.xz reprepro-4b8a0f3f3dcf60dac2ce308ea08d413a535af29f.zip |
Adding upstream version 5.4.4.upstream/5.4.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | tests/packagediff.test | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/tests/packagediff.test b/tests/packagediff.test new file mode 100644 index 0000000..c726bea --- /dev/null +++ b/tests/packagediff.test @@ -0,0 +1,287 @@ +set -u +. "$TESTSDIR"/test.inc + +mkdir conf db pool fakes old +mkdir -p dists/sourcedistribution/main/binary-coal + +cp "$SRCDIR/docs/pdiff.example" conf/pdiff.py +cat > conf/distributions <<EOF +Codename: sourcedistribution +Architectures: coal +Components: main +DebIndices: Packages Release . pdiff.py + +Codename: test +Architectures: coal +Components: main +Update: fromsource +EOF + +testrun - -b . export sourcedistribution 3<<EOF +stdout +-v1*=Exporting sourcedistribution... +-v6*= exporting 'sourcedistribution|main|coal'... +-v6*= creating './dists/sourcedistribution/main/binary-coal/Packages' (uncompressed,script: pdiff.py) +EOF + +dodo test -f dists/sourcedistribution/main/binary-coal/Packages +dodo test -f dists/sourcedistribution/main/binary-coal/Release +dodo test \! -e dists/sourcedistribution/main/binary-coal/Packages.diff + +testrun - -b . _addpackage sourcedistribution fakes/1 a 3<<EOF +stderr +*=_addpackage needs -C and -A and -T set! +-v0*=There have been errors! +returns 255 +EOF + +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 a 3<<EOF +stderr +*=Error 2 opening 'fakes/1': No such file or directory! +-v0*=There have been errors! +return 254 +EOF + +touch fakes/1 + +# TODO: getting a warning here would be nice... +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 a 3<<EOF +EOF +testrun - --nothingiserror -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 a 3<<EOF +returns 1 +EOF + +cat > fakes/1 <<EOF +Package: 5dchess +Priority: extra +Section: games +Installed-Size: 400000 +Maintainer: test <nobody@nowhere> +Architecture: coal +Version: 0.0-1 +Filename: pool/main/5/5dchess/5dchess_0.0-1_coal.deb +MD5sum: $EMPTYMD5ONLY +Size: 0 +Description: the lazy fox + jumps over the quick brown dog. + +Package: a +Priority: critical +Section: required +Installed-Size: 1 +Maintainer: test <nobody@nowhere> +Architecture: all +Version: 1 +Filename: pool/main/a/a/a_1_all.deb +MD5sum: $EMPTYMD5ONLY +Size: 0 +Description: the lazy fox + jumps over the quick brown dog. + +Package: b +Source: baa +Priority: critical +Section: required +Installed-Size: 1 +Maintainer: test <nobody@nowhere> +Architecture: coal +Version: 2 +Filename: pool/main/b/baa/b_2_coal.deb +MD5sum: $EMPTYMD5ONLY +Size: 0 +Description: the lazy fox + jumps over the quick brown dog. +EOF + +cat > fakes/2 <<EOF +Package: a +Priority: critical +Section: required +Installed-Size: 2 +Maintainer: test <nobody@nowhere> +Architecture: all +Version: 2 +Filename: pool/main/a/a/a_2_all.deb +MD5sum: $EMPTYMD5ONLY +Size: 0 +Description: the lazy fox + jumps over the quick brown dog. +EOF + +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 a 3<<EOF +*=Error: package a version 1 lists file pool/main/a/a/a_1_all.deb not yet in the pool! +-v0*=There have been errors! +returns 249 +EOF + +cat > addchecksums.rules <<EOF +stdout +$(ofa 'pool/main/a/a/a_1_all.deb') +$(ofa 'pool/main/a/a/a_2_all.deb') +$(ofa 'pool/main/b/baa/b_2_coal.deb') +$(ofa 'pool/main/5/5dchess/5dchess_0.0-1_coal.deb') +-v0*=4 files were added but not used. +-v0*=The next deleteunreferenced call will delete them. +EOF + +testrun addchecksums -b . _addchecksums <<EOF +pool/main/b/baa/b_2_coal.deb $EMPTYMD5 +pool/main/a/a/a_1_all.deb $EMPTYMD5 +pool/main/a/a/a_2_all.deb $EMPTYMD5 +pool/main/5/5dchess/5dchess_0.0-1_coal.deb $EMPTYMD5 +EOF + +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 a 3<<EOF +stdout +-v1*=Adding 'a' '1' to 'sourcedistribution|main|coal'. +$(opa 'a' x 'sourcedistribution' 'main' 'coal' 'deb') +-v0*=Exporting indices... +-v6*= looking for changes in 'sourcedistribution|main|coal'... +-v6*= replacing './dists/sourcedistribution/main/binary-coal/Packages' (uncompressed,script: pdiff.py) +=making diffs between ./dists/sourcedistribution/main/binary-coal/Packages and ./dists/sourcedistribution/main/binary-coal/Packages.new: +=generating diff +EOF +sleep 1 +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 5dchess 3<<EOF +stdout +-v1*=Adding '5dchess' '0.0-1' to 'sourcedistribution|main|coal'. +$(opa '5dchess' x 'sourcedistribution' 'main' 'coal' 'deb') +-v0*=Exporting indices... +-v6*= looking for changes in 'sourcedistribution|main|coal'... +-v6*= replacing './dists/sourcedistribution/main/binary-coal/Packages' (uncompressed,script: pdiff.py) +=making diffs between ./dists/sourcedistribution/main/binary-coal/Packages and ./dists/sourcedistribution/main/binary-coal/Packages.new: +=generating diff +=This was too fast, diffile already there, waiting a bit... +EOF +sleep 1 +cp dists/sourcedistribution/main/binary-coal/Packages old/1 +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/2 a 3<<EOF +stderr +*=./pool/main/a/a/a_1_all.deb not found, forgetting anyway +stdout +-v1*=Adding 'a' '2' to 'sourcedistribution|main|coal'. +$(opu 'a' x x 'sourcedistribution' 'main' 'coal' 'deb') +-v0*=Exporting indices... +-v6*= looking for changes in 'sourcedistribution|main|coal'... +-v6*= replacing './dists/sourcedistribution/main/binary-coal/Packages' (uncompressed,script: pdiff.py) +=making diffs between ./dists/sourcedistribution/main/binary-coal/Packages and ./dists/sourcedistribution/main/binary-coal/Packages.new: +=generating diff +=This was too fast, diffile already there, waiting a bit... +-v0*=Deleting files no longer referenced... +$(ofd 'pool/main/a/a/a_1_all.deb') +EOF +cp dists/sourcedistribution/main/binary-coal/Packages old/2 +sleep 1 +testrun - -b . -C main -A coal -T deb _addpackage sourcedistribution fakes/1 b 3<<EOF +stdout +-v1*=Adding 'b' '2' to 'sourcedistribution|main|coal'. +$(opa 'b' x 'sourcedistribution' 'main' 'coal' 'deb') +-v0*=Exporting indices... +-v6*= looking for changes in 'sourcedistribution|main|coal'... +-v6*= replacing './dists/sourcedistribution/main/binary-coal/Packages' (uncompressed,script: pdiff.py) +=making diffs between ./dists/sourcedistribution/main/binary-coal/Packages and ./dists/sourcedistribution/main/binary-coal/Packages.new: +=generating diff +=This was too fast, diffile already there, waiting a bit... +EOF + +dodo test -f dists/sourcedistribution/main/binary-coal/Packages +dodo test -f dists/sourcedistribution/main/binary-coal/Release +dodo test -d dists/sourcedistribution/main/binary-coal/Packages.diff +dodo test -f dists/sourcedistribution/main/binary-coal/Packages.diff/Index +testrun empty -b . dumpunreferenced + +# now update from that one.... +cat > conf/updates <<EOF +Name: fromsource +Suite: sourcedistribution +VerifyRelease: blindtrust +GetInRelease: no +DownloadListsAs: .diff +Method: file:$WORKDIR +EOF +mkdir lists +mkdir -p dists/test/main/binary-coal + +cp old/2 lists/fromsource_sourcedistribution_main_coal_Packages + +diffname="$(grep "^ $(sha1 old/2)" dists/sourcedistribution/main/binary-coal/Packages.diff/Index | sed -e 's/.* //')" + +testrun - -b . update test 3<<EOF +stderr +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/Release' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/Release' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/Release' to './lists/fromsource_sourcedistribution_Release'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' to './lists/fromsource_sourcedistribution_main_coal_Packages.diffindex'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' +-v2*=Uncompress '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' into './lists/fromsource_sourcedistribution_main_coal_Packages.diff-${diffname}' using '/bin/gunzip'... +stdout +-v0*=Calculating packages to get... +-v3*= processing updates for 'test|main|coal' +-v5*= reading './lists/fromsource_sourcedistribution_main_coal_Packages' +-v0*=Getting packages... +-v1*=Shutting down aptmethods... +-v0*=Installing (and possibly deleting) packages... +$(opa '5dchess' x 'test' 'main' 'coal' 'deb') +$(opa 'a' x 'test' 'main' 'coal' 'deb') +$(opa 'b' x 'test' 'main' 'coal' 'deb') +-v0*=Exporting indices... +-v6*= looking for changes in 'test|main|coal'... +-v6*= creating './dists/test/main/binary-coal/Packages' (uncompressed,gzipped) +EOF + +dodiff dists/sourcedistribution/main/binary-coal/Packages lists/fromsource_sourcedistribution_main_coal_Packages + +cp old/1 lists/fromsource_sourcedistribution_main_coal_Packages + +diffname2="$(grep "^ $(sha1 old/1)" dists/sourcedistribution/main/binary-coal/Packages.diff/Index | sed -e 's/.* //')" +testrun - --noskipold -b . update test 3<<EOF +stderr +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/Release' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/Release' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/Release' to './lists/fromsource_sourcedistribution_Release'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/Index' to './lists/fromsource_sourcedistribution_main_coal_Packages.diffindex'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname2}.gz' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname2}.gz' +-v2*=Uncompress '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname2}.gz' into './lists/fromsource_sourcedistribution_main_coal_Packages.diff-${diffname2}' using '/bin/gunzip'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' +-v2*=Uncompress '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages.diff/${diffname}.gz' into './lists/fromsource_sourcedistribution_main_coal_Packages.diff-${diffname}' using '/bin/gunzip'... +stdout +-v0*=Calculating packages to get... +-v3*= processing updates for 'test|main|coal' +-v5*= reading './lists/fromsource_sourcedistribution_main_coal_Packages' +EOF + +dodiff dists/sourcedistribution/main/binary-coal/Packages lists/fromsource_sourcedistribution_main_coal_Packages + +# Check without DownLoadListsAs and not index file +cat > conf/updates <<EOF +Name: fromsource +Suite: sourcedistribution +GetInRelease: no +VerifyRelease: blindtrust +Method: file:$WORKDIR +EOF +rm -r lists +mkdir lists +testrun - --noskipold -b . update test 3<<EOF +stderr +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/Release' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/Release' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/Release' to './lists/fromsource_sourcedistribution_Release'... +-v6=aptmethod start 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages' +-v1*=aptmethod got 'file:$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages' +-v2*=Copy file '$WORKDIR/dists/sourcedistribution/main/binary-coal/Packages' to './lists/fromsource_sourcedistribution_main_coal_Packages'... +stdout +-v0*=Calculating packages to get... +-v3*= processing updates for 'test|main|coal' +-v5*= reading './lists/fromsource_sourcedistribution_main_coal_Packages' +EOF + +rm -r conf dists pool db fakes addchecksums.rules old lists +testsuccess |