summaryrefslogtreecommitdiff
path: root/test/libapt/uri_test.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-10-02 17:20:33 +0200
committerJulian Andres Klode <jak@debian.org>2016-10-04 19:30:30 +0200
commit0ecceb5bb9cc8727c117195945b7116aceb984fe (patch)
tree76dd5b2e352b6255699956e21d4e6d02548bed06 /test/libapt/uri_test.cc
parent1f7c56acc6b36b7869294941c8eba2b026eaaeb1 (diff)
Do not read stderr from proxy autodetection scripts
This fixes a regression introduced in commit 8f858d560e3b7b475c623c4e242d1edce246025a don't leak FD in AutoProxyDetect command return parsing which accidentally made the proxy autodetection code also read the scripts output on stderr, not only on stdout when it switched the code from popen() to Popen(). Reported-By: Tim Small <tim@seoss.co.uk>
Diffstat (limited to 'test/libapt/uri_test.cc')
-rw-r--r--test/libapt/uri_test.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc
index 8296ca6a0..09d018049 100644
--- a/test/libapt/uri_test.cc
+++ b/test/libapt/uri_test.cc
@@ -1,4 +1,6 @@
#include <config.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/proxy.h>
#include <apt-pkg/strutl.h>
#include <string>
#include <gtest/gtest.h>
@@ -188,3 +190,27 @@ TEST(URITest, RFC2732)
EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
}
+TEST(URITest, AutoProxyTest)
+{
+ URI u0("http://www.debian.org:90/temp/test");
+ URI u1("http://www.debian.org:91/temp/test");
+
+ _config->Set("Acquire::http::Proxy-Auto-Detect", "./apt-proxy-script");
+
+ // Scenario 0: Autodetecting a simple proxy
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 1: Proxy stays the same if it is already set
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 2: Reading with stderr output works fine
+ _config->Clear("Acquire::http::proxy::www.debian.org");
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+
+ // Scenario 1 again: Proxy stays the same if it is already set
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+}