1
0
Fork 0
devscripts/test/test_uscan_group
Daniel Baumann b543f2e88d
Adding upstream version 2.25.15.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 11:04:07 +02:00

210 lines
6.6 KiB
Bash
Executable file

#!/bin/bash
# Copyright (C) 2020, Xavier Guimard <yadd@debian.org>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# On Debian systems, the complete text of the GNU General Public License
# version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
set -u
TESTTYPE=base
test_dir=$(readlink -f "${0%/*}")
. "$test_dir/lib_test_uscan"
SUFFIX="1"
if command -v dpkg-vendor >/dev/null; then
VENDER="$(dpkg-vendor --query Vendor 2>/dev/null|tr 'A-Z' 'a-z')"
case "$VENDER" in
debian) SUFFIX="1" ;;
*) SUFFIX="0${VENDER}1" ;;
esac
fi
if test "${1:-}" = --installed; then
COMMAND="uscan --no-conf --compression=gz"
shift
else
top_srcdir=$(readlink -f "${0%/*}/..")
make -C "$top_srcdir/scripts" uscan mk-origtargz uupdate debchange
PATH="$top_srcdir/scripts:$PATH"
export PATH
PERL5LIB="$top_srcdir/lib"
export PERL5LIB
COMMAND="uscan --no-conf --compression=xz"
fi
COMMANDDEHS="$COMMAND --dehs"
# comment out for debug
#COMMAND="$COMMAND --debug"
tearDown(){
killHttpServer
echo
}
trap tearDown EXIT
containsName(){
echo "$1" | grep -qF "$2"
echo $?
}
makeRepo() {
lv="$1"
cmpopt1="$2"
lv1="$3"
cmpopt2="$4"
lv2="$5"
cmpopt3="$6"
lv3="$7"
cmpopt4="$8"
lv4="$9"
prev="${10}"
PKG=foo
TEMP_PKG_DIR=$(mktemp -d -p "$SHUNIT_TMPDIR")
mkdir -p "$TEMP_PKG_DIR"/$PKG/debian/source
spawnHttpServer
PORT=$(cat "$TEMP_PKG_DIR"/repo/port)
cat <<END > "$TEMP_PKG_DIR"/$PKG/debian/watch
version=4
http://localhost:$PORT/ .*$PKG-([\d\.]+).tar.gz $lv
opts="dversionmangle=auto,component=bar1$cmpopt1" http://localhost:$PORT/ .*bar1-([\d\.]+).tar.gz $lv1
opts="dversionmangle=auto,component=bar2$cmpopt2" http://localhost:$PORT/ .*bar2-([\d\.]+).tar.gz $lv2
opts="dversionmangle=auto,component=bar3$cmpopt3" http://localhost:$PORT/ .*bar3-([\d\.]+).tar.gz $lv3
opts="dversionmangle=auto,component=bar4$cmpopt4" http://localhost:$PORT/ .*bar4-([\d\.]+).tar.gz $lv4
END
cat <<END > "$TEMP_PKG_DIR"/$PKG/debian/changelog
$PKG ($prev) unstable; urgency=medium
* Initial release
-- Joe Developer <jd@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
END
echo -n '3.0 (quilt)' > "$TEMP_PKG_DIR"/$PKG/debian/source/format
mkdir -p "$TEMP_PKG_DIR"/repo/foo
touch "$TEMP_PKG_DIR"/repo/foo/content
# Upstream repo
( cd "$TEMP_PKG_DIR"/repo ;
tar -czf $PKG-1.0.0.tar.gz $PKG/* )
for i in 1 2 3 4; do
# Upstream repo
mkdir -p "$TEMP_PKG_DIR"/repo/bar$i
touch "$TEMP_PKG_DIR"/repo/bar$i/content
( cd "$TEMP_PKG_DIR"/repo ;
tar -czf bar$i-2.0.$i.tar.gz bar$i/* )
# Debian dir
mkdir $TEMP_PKG_DIR/$PKG/bar$i
echo '{"name":"bar'$i'","version":"'1.0.$i'"}' > $TEMP_PKG_DIR/$PKG/bar$i/package.json
done
}
helperDownload() {
next="${11}"
makeRepo "$@"
OUTPUT=$( cd "$TEMP_PKG_DIR"/$PKG ; $COMMANDDEHS --dehs )
BASETARBALL=${PKG}_$next.orig
assertTrue 'pristine tarball foo is not created' "[ -f "$TEMP_PKG_DIR"/$BASETARBALL.tar.gz ]"
assertTrue "malformed target in dehs output: $OUTPUT" \
$(containsName "$OUTPUT" "<target>$BASETARBALL.tar.gz</target>")
for i in 1 2 3 4; do
assertTrue "pristine tarball bar$i is not created" "[ -f "$TEMP_PKG_DIR"/$BASETARBALL-bar$i.tar.gz ]"
assertTrue "malformed target in dehs output: $OUTPUT" \
$(containsName "$OUTPUT" "<component-target>$BASETARBALL-bar$i.tar.gz</component-target>")
done
#cat "$TEMP_PKG_DIR"/$PKG/debian/watch
}
testCmpIgnore() {
helperDownload "debian" "" "ignore" "" "ignore" "" "ignore" "" "ignore" "0.0.1" "1.0.0"
}
testCmpGroup() {
helperDownload "group" "" "group" "" "group" "" "group" "" "group" "0.0.1+~1" "1.0.0+~2.0.1+~2.0.2+~2.0.3+~2.0.4"
}
testCmpGroupOneCmpChanged() {
helperDownload "group" "" "group" "" "group" "" "group" "" "group" "1.0.0+~2.0.1+~2.0.2+~2.0.2+~2.0.4" "1.0.0+~2.0.1+~2.0.2+~2.0.3+~2.0.4"
}
testCmpPartialGroup() {
helperDownload "group" "" "group" "" "group" "" "ignore" "" "ignore" "0.0.1+~1" "1.0.0+~2.0.1+~2.0.2"
}
testCmpPartialGroup2() {
helperDownload "group" "" "group" "" "ignore" "" "group" "" "ignore" "0.0.1+~1" "1.0.0+~2.0.1+~2.0.3"
}
testCmpChecksum() {
helperDownload "group" "" "checksum" "" "checksum" "" "checksum" "" "checksum" "0.0.1+~1" "1.0.0+~cs8.0.10"
}
testCmpChecksumOneCmpChanged() {
helperDownload "group" "" "checksum" "" "checksum" "" "checksum" "" "checksum" "1.0.0+~cs8.0.9" "1.0.0+~cs8.0.10"
}
testCmpGroupAndChecksum() {
helperDownload "group" "" "group" "" "checksum" "" "checksum" "" "checksum" "0.0.1+~1" "1.0.0+~2.0.1+~cs6.0.9"
}
testCmpGroupIgnoreAndChecksum() {
helperDownload "group" "" "group" "" "ignore" "" "checksum" "" "checksum" "0.0.1+~1" "1.0.0+~2.0.1+~cs4.0.7"
}
helperNoDownload() {
next="${10}"
makeRepo "$@"
OUTPUT=$( cd "$TEMP_PKG_DIR"/$PKG ; $COMMANDDEHS --dehs 2>&1 )
assertTrue "bad change detected: $OUTPUT" \
$(containsName "$OUTPUT" "<status>up to date</status>")
BASETARBALL=${PKG}_$next.orig
assertTrue 'pristine tarball foo is created' "[ ! -f "$TEMP_PKG_DIR"/$BASETARBALL.tar.gz ]"
}
testCmpIgnoreND() {
helperNoDownload "debian" "" "ignore" "" "ignore" "" "ignore" "" "ignore" "1.0.0"
}
testCmpGroupND() {
helperNoDownload "group" "" "group" "" "group" "" "group" "" "group" "1.0.0+~2.0.1+~2.0.2+~2.0.3+~2.0.4"
}
testCmpGroupRepackND() {
helperNoDownload "group" "" "group" "" "group" "" "group" "" "group" "1.0.0+~2.0.1~ds+~2.0.2+~2.0.3+~2.0.4"
}
testCmpChecksumND() {
helperNoDownload "group" "" "checksum" "" "checksum" "" "checksum" "" "checksum" "1.0.0+~cs8.0.10"
}
# Same test but here Ctype detects change even if previous checksum is wrong
testCmpChecksumCtype() {
helperDownload "group" ",ctype=nodejs" "checksum" ",ctype=nodejs" "checksum" ",ctype=nodejs" "checksum" ",ctype=nodejs" "checksum" "1.0.0+~cs8.0.10" "1.0.0+~cs8.0.10"
}
testCmpIgnoreCtype() {
helperNoDownload "debian" ",ctype=nodejs" "ignore" "" "ignore" "" "ignore" "" "ignore" "1.0.0"
assertTrue "Component change is not detected: $OUTPUT" \
$(containsName "$OUTPUT" "Newest version of bar1 on remote site is 2.0.1, local version is 1.0.1")
}
. shunit2