Skip to content

Commit 6156907

Browse files
authored
[k2] provide more tests (#1575)
1 parent 4564345 commit 6156907

5 files changed

Lines changed: 90 additions & 27 deletions

File tree

tests/phpt/dl/482_ob.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
@ok k2_skip
1+
@ok
22
<?php
33
ob_start();
44
echo "1:blah\n";
55
ob_start();
6-
echo "2:blah";
6+
echo "2:blah\n";
7+
ob_start();
8+
echo "3:blah\n";
9+
ob_clean();
10+
var_dump(ob_get_clean());
11+
var_dump("0");
712
var_dump(ob_get_clean());
813
var_dump("0");
914
var_dump(ob_get_clean());

tests/phpt/dl/495_sort.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ function cmp ($a, $b) {
4444
$to_sort[rand(0, 1000000000)] = rand(0, 1000000000);
4545
}
4646

47+
shuffle ($to_sort);
48+
4749
asort ($to_sort);
4850

4951
krsort ($to_sort);

tests/python/tests/diagnostic/php/index.php

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function forkable() {
7676
return wait($f);
7777
}
7878

79-
function main() {
79+
function test_backtrace() {
8080
foreach (json_decode(file_get_contents('php://input')) as $action) {
8181
switch ($action["op"]) {
8282
case "check_main_trace":
@@ -109,5 +109,61 @@ function main() {
109109
}
110110
}
111111

112+
function make_custom_exception() {
113+
return err('TEST', 'London is the capital of Great Britain');
114+
}
115+
116+
function check_exception(Exception $e) {
117+
if ($e->getFile() != 'index.php')
118+
return 'expected "index.php" but "' . $e->getFile() . '" found';
119+
120+
if ($e->getLine() != 113)
121+
return 'expected 113 but ' . $e->getLine() . ' found';
122+
123+
if ($e->getCode() != 0)
124+
return 'expected 0 but ' . $e->getCode() . ' found';
125+
126+
if ($e->getMessage() != 'ERR_TEST: London is the capital of Great Britain')
127+
return 'expected "ERR_TEST: London is the capital of Great Britain" but "' . $e->getMessage() . '" found';
128+
129+
return 'ok';
130+
}
131+
132+
function test_err() {
133+
foreach (json_decode(file_get_contents('php://input')) as $action) {
134+
switch ($action["op"]) {
135+
case "just_make":
136+
$e = make_custom_exception();
137+
$res = check_exception($e);
138+
echo $res;
139+
break;
140+
case "throw_catch":
141+
try {
142+
throw make_custom_exception();
143+
} catch (Exception $e) {
144+
$res = check_exception($e);
145+
}
146+
echo $res;
147+
break;
148+
default:
149+
echo "unknown operation";
150+
return;
151+
}
152+
}
153+
}
154+
155+
function main() {
156+
switch ($_SERVER["PHP_SELF"]) {
157+
case "/test_backtrace":
158+
test_backtrace();
159+
break;
160+
case "/test_err":
161+
test_err();
162+
break;
163+
default:
164+
critical_error("unknown test");
165+
}
166+
}
167+
112168
main();
113169

tests/python/tests/diagnostic/test_backtrace.py

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,20 @@ class TestBacktrace(WebServerAutoTestCase):
66
@classmethod
77
def extra_kphp2cpp_options(cls):
88
return {"KPHP_EXTRA_CXXFLAGS" : "-O0 -g"}
9-
10-
def test_main_fork_trace(self):
11-
resp = self.web_server.http_post(
12-
json=[
13-
{"op": "check_main_trace"},
14-
])
9+
10+
def query(self, op: str):
11+
resp = self.web_server.http_post(uri="/test_backtrace", json=[{"op": op}])
1512
self.assertEqual(resp.text, "ok")
1613
self.assertEqual(resp.status_code, 200)
1714

15+
def test_main_fork_trace(self):
16+
self.query("check_main_trace")
17+
1818
def test_fork_trace(self):
19-
resp = self.web_server.http_post(
20-
json=[
21-
{"op": "check_fork_trace"},
22-
])
23-
self.assertEqual(resp.text, "ok")
24-
self.assertEqual(resp.status_code, 200)
19+
self.query("check_fork_trace")
2520

2621
def test_fork_switch_trace(self):
27-
resp = self.web_server.http_post(
28-
json=[
29-
{"op": "check_fork_switch_trace"},
30-
])
31-
self.assertEqual(resp.text, "ok")
32-
self.assertEqual(resp.status_code, 200)
22+
self.query("check_fork_switch_trace")
3323

3424
def test_nested_fork_trace(self):
35-
resp = self.web_server.http_post(
36-
json=[
37-
{"op": "check_nested_fork_trace"},
38-
])
39-
self.assertEqual(resp.text, "ok")
40-
self.assertEqual(resp.status_code, 200)
25+
self.query("check_nested_fork_trace")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import pytest
2+
from python.lib.testcase import WebServerAutoTestCase
3+
4+
5+
class TestErr(WebServerAutoTestCase):
6+
def query(self, op: str):
7+
resp = self.web_server.http_post(uri="/test_err", json=[{"op": op}])
8+
self.assertEqual(resp.text, "ok")
9+
self.assertEqual(resp.status_code, 200)
10+
11+
def test_just_make(self):
12+
self.query("just_make")
13+
14+
def test_throw_catch(self):
15+
self.query("throw_catch")

0 commit comments

Comments
 (0)