summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/it_url.t149
-rw-r--r--tests/it_url_server.php33
-rwxr-xr-xtests/it_url_slow.t53
3 files changed, 116 insertions, 119 deletions
diff --git a/tests/it_url.t b/tests/it_url.t
index de1cd0b..45e882c 100755
--- a/tests/it_url.t
+++ b/tests/it_url.t
@@ -123,120 +123,99 @@ ok(
'it_url::get() static call'
);
-$server = proc_open(
- 'php -S localhost:8000 ' . dirname($_SERVER['PHP_SELF']) . '/it_url.testserver.php',
- array(0 => fopen('/dev/null', 'r'), 1 => fopen('/dev/null', 'w'), 2 => array('pipe', 'w')),
- $pipes
-);
-usleep(100000);
-stream_set_blocking($pipes[2], 0);
-function server_output() {
- $result = array();
- while (($result[] = trim(fgets($GLOBALS['pipes'][2])))) {};
- return array_filter($result);
-}
-
-$res = is(
- it_url::get('http://localhost:8000/'),
- "Testserver root output",
- 'it_url::get() static call with port',
-);
-$output = server_output();
-if (!$res)
- diag($output);
+require 'it_url_server.php';
-$res = is(
- it_url::get('http://localhost:8000/temp_redirect'),
- "Testserver output after temporary redirect",
- 'it_url::get() follows temproary redirect',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/'),
+ "Testserver root output",
+ 'it_url::get() static call with port',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = is(
- it_url::get('http://localhost:8000/perm_redirect'),
- "Testserver output after permanent redirect",
- 'it_url::get() follows permanent redirect',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/temp_redirect'),
+ "Testserver output after temporary redirect",
+ 'it_url::get() follows temproary redirect',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = is(
- it_url::get('http://localhost:8000/relative_redirect'),
- "Testserver output after relative redirect",
- 'TODO: it_url::get() follows relative redirect correctly',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/perm_redirect'),
+ "Testserver output after permanent redirect",
+ 'it_url::get() follows permanent redirect',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = is(
- it_url::get('http://localhost:8000/nohost_redirect'),
- "Testserver output after nohost redirect",
- 'TODO: it_url::get() follows redirect without host correctly',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/relative_redirect'),
+ "Testserver output after relative redirect",
+ 'TODO: it_url::get() follows relative redirect correctly',
+ )
+);
+
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/nohost_redirect'),
+ "Testserver output after nohost redirect",
+ 'TODO: it_url::get() follows redirect without host correctly',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = ok(
- !it_url::get(U('http://localhost:8000/redirect_loop', 'num' => 10)),
- 'it_url::get() handles redirect loop',
+$output = handle_server(
+ ok(
+ !it_url::get(U('http://localhost:8000/redirect_loop', 'num' => 10)),
+ 'it_url::get() handles redirect loop',
+ )
);
-$output = server_output();
$last_num = it::match('num=(\d+)', end($output));
-$res2 = ok(
+if (!ok(
$last_num == 5,
'it_url::get() aborts redirect loop after 5 redirects',
-);
-if (!$res || !$res2)
+))
diag($output);
-$res = ok(
- !it_url::get('url' => 'http://localhost:8000/does_not_exist', 'retries' => 4),
- 'it_url::get() retries on empty response',
+$output = handle_server(
+ ok(
+ !it_url::get('url' => 'http://localhost:8000/does_not_exist', 'retries' => 4),
+ 'it_url::get() retries on empty response',
+ )
);
-$output = server_output();
-$res2 = ok(
+if (!ok(
count(preg_grep('/^Got Request:/', $output)) == 5,
'it_url::get() respects set retry count',
-);
-if (!$res || !$res2)
+))
diag($output);
-$res = is(
- it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_HOST')),
- 'localhost:8000',
- 'TODO it_url::get() sets correct Host header',
+handle_server(
+ is(
+ it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_HOST')),
+ 'localhost:8000',
+ 'TODO it_url::get() sets correct Host header',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = is(
- it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_ACCEPT_LANGUAGE')),
- T_lang(),
- 'it_url::get() sets correct Accept-Language header',
+handle_server(
+ is(
+ it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_ACCEPT_LANGUAGE')),
+ T_lang(),
+ 'it_url::get() sets correct Accept-Language header',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-$res = ok(
- it::match('Mozilla', it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_USER_AGENT'))),
- 'it_url::get() sets User-Agent containing Mozilla',
+handle_server(
+ ok(
+ it::match('Mozilla', it_url::get(U('http://localhost:8000/get_server_value', 'key' => 'HTTP_USER_AGENT'))),
+ 'it_url::get() sets User-Agent containing Mozilla',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
$pages = it_url::get_multi('urls' => array('a' => 'http://www.gna.ch/', 'b' => 'http://search.ch/'));
ok(strpos($pages['a'], '</html>'), 'it_url::get_multi got first url'); # UTF8SAFE
ok(strpos($pages['b'], '</html>'), 'it_url::get_multi got second url'); # UTF8SAFE
is(count($pages), 2, 'it_url::get_multi no additional array elements');
-proc_terminate($server);
-
?>
diff --git a/tests/it_url_server.php b/tests/it_url_server.php
new file mode 100644
index 0000000..a407ab5
--- /dev/null
+++ b/tests/it_url_server.php
@@ -0,0 +1,33 @@
+<?php
+$server = proc_open(
+ 'php -S localhost:8000 ' . dirname($_SERVER['PHP_SELF']) . '/it_url.testserver.php',
+ array(0 => fopen('/dev/null', 'r'), 1 => fopen('/dev/null', 'w'), 2 => array('pipe', 'w')),
+ $pipes
+);
+register_shutdown_function(
+ function ($server) {
+ proc_terminate($server);
+ },
+ $server
+);
+
+usleep(100000);
+stream_set_blocking($pipes[2], 0);
+
+function server_output() {
+ $result = array();
+ while (($result[] = trim(fgets($GLOBALS['pipes'][2])))) {};
+ return array_filter($result);
+}
+
+function handle_server($args) {
+ $res = true;
+ foreach ((array)$args as $arg)
+ $res = $res && $arg;
+ $output = server_output();
+ if (!$res)
+ diag($output);
+ else
+ return $output;
+}
+
diff --git a/tests/it_url_slow.t b/tests/it_url_slow.t
index 215528d..74440ce 100755
--- a/tests/it_url_slow.t
+++ b/tests/it_url_slow.t
@@ -5,27 +5,15 @@
# TESTFLAGS SLOW
-$server = proc_open(
- 'php -S localhost:8000 ' . dirname($_SERVER['PHP_SELF']) . '/it_url.testserver.php',
- array(0 => fopen('/dev/null', 'r'), 1 => fopen('/dev/null', 'w'), 2 => array('pipe', 'w')),
- $pipes
-);
-usleep(100000);
-stream_set_blocking($pipes[2], 0);
-function server_output() {
- $result = array();
- while (($result[] = trim(fgets($GLOBALS['pipes'][2])))) {};
- return array_filter($result);
-}
+require 'it_url_server.php';
-$res = is(
- it_url::get('http://localhost:8000/short_sleep'),
- "Testserver output after short sleep",
- 'it_url::get() waits for 4 seconds',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/short_sleep'),
+ "Testserver output after short sleep",
+ 'it_url::get() waits for 4 seconds',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
$start = microtime(true);
$res = ok(
@@ -41,14 +29,13 @@ $output = server_output();
if (!$res || !$res2)
diag($output);
-$res = is(
- it_url::get('http://localhost:8000/slow_response'),
- join('', it::map('"Testserver slow output $v\n"', range(0, 5))),
- 'it_url::get() waits for slow response with continuous output',
+handle_server(
+ is(
+ it_url::get('http://localhost:8000/slow_response'),
+ join('', it::map('"Testserver slow output $v\n"', range(0, 5))),
+ 'it_url::get() waits for slow response with continuous output',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
$start = microtime(true);
$res = ok(
@@ -59,17 +46,15 @@ $res2 = is(
floor(microtime(true) - $start), 5,
'... and fails as soon as totaltimeout is surpassed'
);
+sleep(1); # wait for testserver
$output = server_output();
if (!$res || !$res2)
diag($output);
-$res = ok(
- it_url::get(U('http://localhost:8000/repeat', 'string' => "abc", 'num' => 1024 * 1024)) == str_repeat("abc", 1024 * 1024),
- 'it_url::get() handles large response',
+handle_server(
+ ok(
+ it_url::get(U('http://localhost:8000/repeat', 'string' => "abc", 'num' => 1024 * 1024)) == str_repeat("abc", 1024 * 1024),
+ 'it_url::get() handles large response',
+ )
);
-$output = server_output();
-if (!$res)
- diag($output);
-
-proc_terminate($server);