summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration')
-rwxr-xr-xtest/integration/test-apt-helper49
-rwxr-xr-xtest/integration/test-different-methods-for-same-source33
2 files changed, 60 insertions, 22 deletions
diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper
index 8a25859b8..1c163b3ae 100755
--- a/test/integration/test-apt-helper
+++ b/test/integration/test-apt-helper
@@ -71,38 +71,43 @@ E: Download Failed"
testfileequal './downloaded/foo10' 'bar'
}
+setupproxydetect() {
+ local METH="$1"
+ shift
+ {
+ echo '#!/bin/sh -e'
+ echo "$@"
+ } > "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ chmod 755 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ echo "Acquire::${METH}::Proxy-Auto-Detect \"${TMPWORKINGDIRECTORY}/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
+}
+
test_apt_helper_detect_proxy() {
- # no proxy
+ msgmsg 'apt-helper auto-detect-proxy' 'no proxy'
testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
-
-
- # http auto detect proxy script
- cat > apt-proxy-detect <<'EOF'
-#!/bin/sh -e
-echo "http://some-proxy"
-EOF
- chmod 755 apt-proxy-detect
- echo "Acquire::http::Proxy-Auto-Detect \"$(pwd)/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
-
+ setupproxydetect 'http' 'exit 0'
+ testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'exit 1'
+ testfailureequal 'E: Sub-process ProxyAutoDetect returned an error code (1)' apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo'
+ testwarningequal "Using proxy '' for URL 'http://example.com/'
+W: ProxyAutoDetect command returned an empty line" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo DIRECT'
+ testsuccessequal "Using proxy 'DIRECT' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+
+ msgmsg 'apt-helper auto-detect-proxy' 'http proxy'
+ setupproxydetect 'http' 'echo "http://some-proxy"'
testsuccessequal "Using proxy 'http://some-proxy' for URL 'http://www.example.com/'" apthelper auto-detect-proxy http://www.example.com
-
- # https auto detect proxy script
- cat > apt-proxy-detect <<'EOF'
-#!/bin/sh -e
-echo "https://https-proxy"
-EOF
- chmod 755 apt-proxy-detect
- echo "Acquire::https::Proxy-Auto-Detect \"$(pwd)/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
-
+ msgmsg 'apt-helper auto-detect-proxy' 'https proxy'
+ setupproxydetect 'https' 'echo "https://https-proxy"'
testsuccessequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
}
test_apt_helper_download "http://localhost:${APTHTTPPORT}"
test_apt_helper_download "https://localhost:${APTHTTPSPORT}"
test_apt_helper_detect_proxy
-
-# test failure modes
+msgmsg 'test various failure modes'
testfailureequal 'E: Invalid operation download' apthelper download
testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file
testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file 'http://example.org/'
diff --git a/test/integration/test-different-methods-for-same-source b/test/integration/test-different-methods-for-same-source
new file mode 100755
index 000000000..7b78841c6
--- /dev/null
+++ b/test/integration/test-different-methods-for-same-source
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'stable' 'foo' 'all' '1'
+insertsource 'stable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+# install a slowed down file: otherwise its to fast to reproduce combining
+NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
+OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+done
+IFS="$backupIFS"
+ln -s "${OLDMETHODS}/http" "${NEWMETHODS}/http-ng"
+
+changetowebserver
+sed -i -e 's# http:# http-ng:#' $(find rootdir/etc/apt/sources.list.d -name '*-deb-src.list')
+
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output update.log
+# all requests are folded into the first Release file
+testsuccess grep ' http-ng://' update.log
+testfailure grep ' http://' update.log