@@ -31,9 +31,99 @@ public function testLogs()
3131 // Use vars to resolve adapter key
3232 $ this ->assertEquals (4 , Console::log ('log ' ));
3333 $ this ->assertEquals (17 , Console::success ('success ' ));
34- $ this ->assertEquals (15 , Console::error ('error ' ));
3534 $ this ->assertEquals (14 , Console::info ('info ' ));
3635 $ this ->assertEquals (19 , Console::warning ('warning ' ));
36+ $ this ->assertEquals (15 , Console::error ('error ' ));
3737 $ this ->assertEquals ('this is an answer ' , Console::confirm ('this is a question ' ));
3838 }
39+
40+ public function testExecuteBasic ()
41+ {
42+ $ stdout = '' ;
43+ $ stderr = '' ;
44+ $ stdin = '' ;
45+ $ code = Console::execute ('php -r "echo \'hello world \';" ' , $ stdin , $ stdout , $ stderr , 10 );
46+
47+ $ this ->assertEquals ('' , $ stderr );
48+ $ this ->assertEquals ('hello world ' , $ stdout );
49+ $ this ->assertEquals (0 , $ code );
50+ }
51+
52+ public function testExecuteStdOut ()
53+ {
54+ $ stdout = '' ;
55+ $ stderr = '' ;
56+ $ stdin = '' ;
57+ $ code = Console::execute ('>&1 echo "success" ' , $ stdin , $ stdout , $ stderr , 3 );
58+
59+ $ this ->assertEquals ('' , $ stderr );
60+ $ this ->assertEquals ("success \n" , $ stdout );
61+ $ this ->assertEquals (0 , $ code );
62+ }
63+
64+ public function testExecuteStdErr ()
65+ {
66+ $ stdout = '' ;
67+ $ stderr = '' ;
68+ $ stdin = '' ;
69+ $ code = Console::execute ('>&2 echo "error" ' , $ stdin , $ stdout , $ stderr , 3 );
70+
71+ $ this ->assertEquals ("error \n" , $ stderr );
72+ $ this ->assertEquals ('' , $ stdout );
73+ $ this ->assertEquals (0 , $ code );
74+ }
75+
76+ public function testExecuteSyntaxError ()
77+ {
78+ $ stdout = '' ;
79+ $ stderr = '' ;
80+ $ stdin = '' ;
81+ $ code = Console::execute ('php -r "echo \'hello world \'" ' , $ stdin , $ stdout , $ stderr , 10 );
82+
83+ $ this ->assertEquals ('' , $ stderr );
84+ $ this ->assertEquals ("\nParse error: syntax error, unexpected end of file, expecting ',' or ';' in Command line code on line 1 \n" , $ stdout );
85+ $ this ->assertEquals (254 , $ code );
86+ }
87+
88+ public function testExecuteExitCode ()
89+ {
90+ $ stdout = '' ;
91+ $ stderr = '' ;
92+ $ stdin = '' ;
93+ $ code = Console::execute ('php -r "echo \'hello world \'; exit(2);" ' , $ stdin , $ stdout , $ stderr , 10 );
94+
95+ $ this ->assertEquals ('' , $ stderr );
96+ $ this ->assertEquals ('hello world ' , $ stdout );
97+ $ this ->assertEquals (2 , $ code );
98+
99+ $ stdout = '' ;
100+ $ stderr = '' ;
101+ $ stdin = '' ;
102+ $ code = Console::execute ('php -r "echo \'hello world \'; exit(100);" ' , $ stdin , $ stdout , $ stderr , 10 );
103+
104+ $ this ->assertEquals ('' , $ stderr );
105+ $ this ->assertEquals ('hello world ' , $ stdout );
106+ $ this ->assertEquals (100 , $ code );
107+ }
108+
109+ public function testExecuteTimeout ()
110+ {
111+ $ stdout = '' ;
112+ $ stderr = '' ;
113+ $ stdin = '' ;
114+ $ code = Console::execute ('php -r "sleep(1); echo \'hello world \'; exit(0);" ' , $ stdin , $ stdout , $ stderr , 3 );
115+
116+ $ this ->assertEquals ('' , $ stderr );
117+ $ this ->assertEquals ('hello world ' , $ stdout );
118+ $ this ->assertEquals (0 , $ code );
119+
120+ $ stdout = '' ;
121+ $ stderr = '' ;
122+ $ stdin = '' ;
123+ $ code = Console::execute ('php -r "sleep(4); echo \'hello world \'; exit(0);" ' , $ stdin , $ stdout , $ stderr , 3 );
124+
125+ $ this ->assertEquals ('' , $ stderr );
126+ $ this ->assertEquals ('' , $ stdout );
127+ $ this ->assertEquals (1 , $ code );
128+ }
39129}
0 commit comments