From 632454716d31ca444b1c8964c86ce716ec884173 Mon Sep 17 00:00:00 2001 From: Paul Sohier Date: Sat, 18 Jun 2011 22:09:12 +0200 Subject: [PATCH] Reverted a change from this afternoon to fix includes. Added a phpunits for first parts, rest follow soon hopefully. Fixed a few bugs I found while writing the tests. --- includes/tests/test_base.php | 11 ++- includes/tests/tests_code.php | 10 +-- phpunit.xml.all | 25 +++++++ phpunit.xml.dist | 31 +++++++++ tests/bootstrap.php | 13 ++++ tests/code/binary_test.php | 50 ++++++++++++++ tests/code/db_test.php | 59 ++++++++++++++++ tests/code/empty_test.php | 49 +++++++++++++ tests/code/function_test.php | 68 +++++++++++++++++++ tests/code/in_phpbb_test.php | 58 ++++++++++++++++ tests/code/include_test.php | 64 +++++++++++++++++ tests/code/request_var_test.php | 51 ++++++++++++++ tests/code/short_test.php | 52 ++++++++++++++ tests/code/testcode/dbal/db2 | 1 + tests/code/testcode/dbal/ibase | 1 + tests/code/testcode/dbal/mssql | 1 + tests/code/testcode/dbal/mysql | 1 + tests/code/testcode/dbal/mysqli | 1 + tests/code/testcode/dbal/oci | 1 + tests/code/testcode/dbal/odbc | 1 + tests/code/testcode/dbal/pg | 1 + tests/code/testcode/dbal/sqlite | 1 + tests/code/testcode/dbal/sqlsrv | 1 + tests/code/testcode/emptyFile | 0 tests/code/testcode/functions/addslashes | 1 + tests/code/testcode/functions/backticks | 1 + tests/code/testcode/functions/die | 1 + tests/code/testcode/functions/eval | 1 + tests/code/testcode/functions/exec | 1 + tests/code/testcode/functions/getenv | 1 + tests/code/testcode/functions/include_once | 1 + tests/code/testcode/functions/include_once2 | 1 + tests/code/testcode/functions/md5 | 1 + tests/code/testcode/functions/md52 | 8 +++ tests/code/testcode/functions/passthru | 1 + tests/code/testcode/functions/require_once | 1 + tests/code/testcode/functions/require_once2 | 1 + tests/code/testcode/functions/sha1 | 1 + tests/code/testcode/functions/stripslashes | 1 + tests/code/testcode/functions/system | 1 + tests/code/testcode/include/include1 | 3 + tests/code/testcode/include/include2 | 3 + tests/code/testcode/include/include3 | 3 + tests/code/testcode/include/include4 | 6 ++ tests/code/testcode/include/include5 | 6 ++ tests/code/testcode/include/include6 | 3 + tests/code/testcode/include/include7 | 3 + tests/code/testcode/include/includeonce1 | 3 + tests/code/testcode/include/includeonce2 | 3 + tests/code/testcode/include/require1 | 3 + tests/code/testcode/include/require2 | 3 + tests/code/testcode/include/requireonce1 | 3 + tests/code/testcode/include/requireonce2 | 3 + tests/code/testcode/inphpbb.php | 3 + tests/code/testcode/inphpbb3.php | 3 + tests/code/testcode/noBinary | 1 + tests/code/testcode/noExtension | 2 + tests/code/testcode/noShort | 3 + tests/code/testcode/noinphpbb.php | 3 + tests/code/testcode/phpbb.php | 6 ++ tests/code/testcode/requestVar1 | 5 ++ tests/code/testcode/requestVar2 | 5 ++ tests/code/testcode/requestVar3 | 5 ++ tests/code/testcode/short1 | 2 + tests/code/testcode/short2 | 2 + tests/code/testcode/short3 | 2 + tests/code/testcode/short4 | 3 + tests/code/testcode/unixFile | 5 ++ tests/code/testcode/windowsFile | 5 ++ tests/code/unix_test.php | 49 +++++++++++++ tests/test_framework/mpv_mock.php | 37 ++++++++++ tests/test_framework/phpbb_test_case.php | 43 ++++++++++++ .../phpbb_test_case_helpers.php | 44 ++++++++++++ 73 files changed, 841 insertions(+), 6 deletions(-) create mode 100644 phpunit.xml.all create mode 100644 phpunit.xml.dist create mode 100644 tests/bootstrap.php create mode 100644 tests/code/binary_test.php create mode 100644 tests/code/db_test.php create mode 100644 tests/code/empty_test.php create mode 100644 tests/code/function_test.php create mode 100644 tests/code/in_phpbb_test.php create mode 100644 tests/code/include_test.php create mode 100644 tests/code/request_var_test.php create mode 100644 tests/code/short_test.php create mode 100644 tests/code/testcode/dbal/db2 create mode 100644 tests/code/testcode/dbal/ibase create mode 100644 tests/code/testcode/dbal/mssql create mode 100644 tests/code/testcode/dbal/mysql create mode 100644 tests/code/testcode/dbal/mysqli create mode 100644 tests/code/testcode/dbal/oci create mode 100644 tests/code/testcode/dbal/odbc create mode 100644 tests/code/testcode/dbal/pg create mode 100644 tests/code/testcode/dbal/sqlite create mode 100644 tests/code/testcode/dbal/sqlsrv create mode 100644 tests/code/testcode/emptyFile create mode 100644 tests/code/testcode/functions/addslashes create mode 100644 tests/code/testcode/functions/backticks create mode 100644 tests/code/testcode/functions/die create mode 100644 tests/code/testcode/functions/eval create mode 100644 tests/code/testcode/functions/exec create mode 100644 tests/code/testcode/functions/getenv create mode 100644 tests/code/testcode/functions/include_once create mode 100644 tests/code/testcode/functions/include_once2 create mode 100644 tests/code/testcode/functions/md5 create mode 100644 tests/code/testcode/functions/md52 create mode 100644 tests/code/testcode/functions/passthru create mode 100644 tests/code/testcode/functions/require_once create mode 100644 tests/code/testcode/functions/require_once2 create mode 100644 tests/code/testcode/functions/sha1 create mode 100644 tests/code/testcode/functions/stripslashes create mode 100644 tests/code/testcode/functions/system create mode 100644 tests/code/testcode/include/include1 create mode 100644 tests/code/testcode/include/include2 create mode 100644 tests/code/testcode/include/include3 create mode 100644 tests/code/testcode/include/include4 create mode 100644 tests/code/testcode/include/include5 create mode 100644 tests/code/testcode/include/include6 create mode 100644 tests/code/testcode/include/include7 create mode 100644 tests/code/testcode/include/includeonce1 create mode 100644 tests/code/testcode/include/includeonce2 create mode 100644 tests/code/testcode/include/require1 create mode 100644 tests/code/testcode/include/require2 create mode 100644 tests/code/testcode/include/requireonce1 create mode 100644 tests/code/testcode/include/requireonce2 create mode 100644 tests/code/testcode/inphpbb.php create mode 100644 tests/code/testcode/inphpbb3.php create mode 100644 tests/code/testcode/noBinary create mode 100644 tests/code/testcode/noExtension create mode 100644 tests/code/testcode/noShort create mode 100644 tests/code/testcode/noinphpbb.php create mode 100644 tests/code/testcode/phpbb.php create mode 100644 tests/code/testcode/requestVar1 create mode 100644 tests/code/testcode/requestVar2 create mode 100644 tests/code/testcode/requestVar3 create mode 100644 tests/code/testcode/short1 create mode 100644 tests/code/testcode/short2 create mode 100644 tests/code/testcode/short3 create mode 100644 tests/code/testcode/short4 create mode 100644 tests/code/testcode/unixFile create mode 100644 tests/code/testcode/windowsFile create mode 100644 tests/code/unix_test.php create mode 100644 tests/test_framework/mpv_mock.php create mode 100644 tests/test_framework/phpbb_test_case.php create mode 100644 tests/test_framework/phpbb_test_case_helpers.php diff --git a/includes/tests/test_base.php b/includes/tests/test_base.php index dbc528d..d2197d5 100644 --- a/includes/tests/test_base.php +++ b/includes/tests/test_base.php @@ -248,7 +248,14 @@ protected function extract_dir($file) **/ public function unittest($function, $parameters) { - call_user_func_array(array($this, $function), $parameters); - } + return call_user_func_array(array($this, $function), $parameters); + } + + public function setFilename($file) + { + $this->file_name = $file; + $this->file_contents = @file_get_contents($file); + $this->file_contents_file = @file($file); + } } ?> diff --git a/includes/tests/tests_code.php b/includes/tests/tests_code.php index 752d47b..f85bc57 100644 --- a/includes/tests/tests_code.php +++ b/includes/tests/tests_code.php @@ -238,7 +238,7 @@ protected function test_dbal() $functions = array( 'mysql_', - 'mysqli_', + 'mysqli_', 'oci_', 'sqlite_', 'pg_', @@ -251,6 +251,7 @@ protected function test_dbal() foreach ($functions as $function) { + if (preg_match("#(^\s*|[^a-z0-9_])" . preg_quote($function, '#') . "{1}([a-zA-Z0-9_]+){1,}\s*\({1}#si", $this->file_contents)) { $return = $this->display_line_code(mpv::ERROR_FAIL, 'USAGE_' . strtoupper(str_replace(array('_', '$', '('), '', $function)), false, "#(^\s*|[^a-z0-9_])" . preg_quote($function, '#') . "{1}([a-zA-Z0-9_]+){1,}\s*\({1}#si", array('new', 'function')); @@ -272,7 +273,7 @@ protected function test_code() $functions = array( 'eval', 'exec', - 'sytem', + 'system', 'passthru', 'getenv', 'die', @@ -312,7 +313,7 @@ protected function test_code() foreach ($functions_notice as $function) { - if (preg_match("#(^\s*|[^a-z0-9_])" . preg_quote($function, '#') . "{1}\s*\({1}#si", $this->file_contents)) + if (preg_match("#(^\s*|[^a-z0-9_])" . preg_quote($function, '#') . "{1}\s*\({0,1}#si", $this->file_contents)) { $return = $this->display_line_code(mpv::ERROR_NOTICE, 'USAGE_' . strtoupper(str_replace(array('_', '$', '('), '', $function)), false, "#(^\s*|[^a-z0-9_])" . preg_quote($function) . "([ \(|\(| ]+)#si"); } @@ -496,7 +497,7 @@ protected function test_include() $content_new = substr($content_new, 0, $loc + 2); } - if (preg_match("#^(include_once|require_once|include|require)(\s'|\s\"|\s\$|\s\(|\()#", $content_new)) + if (preg_match("#(include_once|require_once|include|require)(\s'|\s\"|\s\$|\s\(|\()#", $content_new)) { if (strpos($content_new, '$phpbb_root_path') === false && strpos($content_new, '$phpbb_admin_path') === false) { @@ -512,5 +513,6 @@ protected function test_include() } } } + return $return; } } diff --git a/phpunit.xml.all b/phpunit.xml.all new file mode 100644 index 0000000..1be2830 --- /dev/null +++ b/phpunit.xml.all @@ -0,0 +1,25 @@ + + + + + + ./tests/ + + + + + + ./tests/ + + + diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..de8134d --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + ./tests/ + + + + + + slow + + + + + + ./tests/ + + + diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..f30fef5 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,13 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/noExtension', false, true), + array('testcode/ignoreFile.php', false, false), + array('testcode/noBinary', 'FILE_NON_BINARY', false), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_binary($test, $expected_error, $expected_result) + { + global $user; + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('check_binary', array(('tests/code/' . $test))); + + $this->assertEquals($expected_result, $result); + + } +} + diff --git a/tests/code/db_test.php b/tests/code/db_test.php new file mode 100644 index 0000000..5c9c65c --- /dev/null +++ b/tests/code/db_test.php @@ -0,0 +1,59 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/dbal/mysql', 'USAGE_MYSQL', false), + array('testcode/dbal/mysqli', 'USAGE_MYSQLI', false), + array('testcode/dbal/oci', 'USAGE_OCI', false), + array('testcode/dbal/sqlite', 'USAGE_SQLITE', false), + array('testcode/dbal/pg', 'USAGE_PG', false), + array('testcode/dbal/mssql', 'USAGE_MSSQL', false), + array('testcode/dbal/odbc', 'USAGE_ODBC', false), + array('testcode/dbal/sqlsrv', 'USAGE_SQLSRV', false), + array('testcode/dbal/ibase', 'USAGE_IBASE', false), + array('testcode/dbal/db2', 'USAGE_DB2', false), + array('testcode/short2', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_mysql($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_dbal', array()); + + $this->assertEquals($expected_result, $result); + + } +} + diff --git a/tests/code/empty_test.php b/tests/code/empty_test.php new file mode 100644 index 0000000..3343730 --- /dev/null +++ b/tests/code/empty_test.php @@ -0,0 +1,49 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/emptyFile', 'FILE_EMPTY', false), + array('testcode/noExtension', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_empty($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_empty', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/function_test.php b/tests/code/function_test.php new file mode 100644 index 0000000..8177e82 --- /dev/null +++ b/tests/code/function_test.php @@ -0,0 +1,68 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/dbal/mysql', false, true), + array('testcode/functions/eval', 'USAGE_EVAL', false), + array('testcode/functions/exec', 'USAGE_EXEC', false), + array('testcode/functions/system', 'USAGE_SYSTEM', false), + array('testcode/functions/passthru', 'USAGE_PASSTHRU', false), + array('testcode/functions/getenv', 'USAGE_GETENV', false), + array('testcode/functions/die', 'USAGE_DIE', false), + array('testcode/functions/sha1', 'USAGE_SHA1', false), + array('testcode/functions/addslashes', 'USAGE_ADDSLASHES', false), + array('testcode/functions/stripslashes', 'USAGE_STRIPSLASHES', false), + + array('testcode/functions/backticks', 'USAGE_`', false), + + array('testcode/functions/include_once', 'USAGE_INCLUDEONCE', false), + array('testcode/functions/include_once2', 'USAGE_INCLUDEONCE', false), + array('testcode/functions/require_once', 'USAGE_REQUIREONCE', false), + array('testcode/functions/require_once2', 'USAGE_REQUIREONCE', false), + array('testcode/functions/md5', 'USAGE_MD5', false), + array('testcode/functions/md52', false, true), + array('testcode/short2', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_function($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_code', array()); + + if ($expected_error === false) + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/in_phpbb_test.php b/tests/code/in_phpbb_test.php new file mode 100644 index 0000000..b121266 --- /dev/null +++ b/tests/code/in_phpbb_test.php @@ -0,0 +1,58 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array(/* + array('testcode/short1', 'SHORT_TAGS', false), + array('testcode/short2', 'SHORT_TAGS', false), + array('testcode/short3', 'SHORT_TAGS', false), + array('testcode/short4', 'SHORT_TAGS', false),*/ + array('mcp/info/mcp_test.php', false, true), + array('acp/info/acp_test.php', false, true), + array('ucp/info/ucp_test.php', false, true), + array('testcode/inphpbb.php', false, true), + array('testcode/inphpbb3.php', false, true), + array('testcode/phpbb.php', false, true), + array('testcode/noinphpbb.php', 'NO_IN_PHPBB', false), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_in_phpbb($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_in_phpbb', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/include_test.php b/tests/code/include_test.php new file mode 100644 index 0000000..513fe93 --- /dev/null +++ b/tests/code/include_test.php @@ -0,0 +1,64 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/include/include1', 'INCLUDE_NO_ROOT', false), + array('testcode/include/includeonce1', 'INCLUDE_NO_ROOT', false), + array('testcode/include/require1', 'INCLUDE_NO_ROOT', false), + array('testcode/include/requireonce1', 'INCLUDE_NO_ROOT', false), + + array('testcode/include/include2', 'INCLUDE_NO_PHP', false), + array('testcode/include/includeonce2', 'INCLUDE_NO_PHP', false), + array('testcode/include/require2', 'INCLUDE_NO_PHP', false), + array('testcode/include/requireonce2', 'INCLUDE_NO_PHP', false), + + array('testcode/include/include3', false, true), + array('testcode/include/include4', 'INCLUDE_NO_ROOT', false), + array('testcode/include/include5', 'INCLUDE_NO_PHP', false), + array('testcode/include/include6', false, true), + array('testcode/include/include7', false, true), + + array('testcode/short2', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_include($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_include', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/request_var_test.php b/tests/code/request_var_test.php new file mode 100644 index 0000000..3e557f3 --- /dev/null +++ b/tests/code/request_var_test.php @@ -0,0 +1,51 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/requestVar1', false, true), + array('testcode/requestVar2', 'USAGE_REQUEST_VAR_INT', false), + array('testcode/requestVar3', false, true), + array('testcode/short2', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_request_var($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_request_var', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/short_test.php b/tests/code/short_test.php new file mode 100644 index 0000000..2b1b562 --- /dev/null +++ b/tests/code/short_test.php @@ -0,0 +1,52 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/short1', 'SHORT_TAGS', false), + array('testcode/short2', 'SHORT_TAGS', false), + array('testcode/short3', 'SHORT_TAGS', false), + array('testcode/short4', 'SHORT_TAGS', false), + array('testcode/noShort', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_short($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_short_tags', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/code/testcode/dbal/db2 b/tests/code/testcode/dbal/db2 new file mode 100644 index 0000000..48283d4 --- /dev/null +++ b/tests/code/testcode/dbal/db2 @@ -0,0 +1 @@ +db2_connect(); diff --git a/tests/code/testcode/dbal/ibase b/tests/code/testcode/dbal/ibase new file mode 100644 index 0000000..63e2819 --- /dev/null +++ b/tests/code/testcode/dbal/ibase @@ -0,0 +1 @@ +ibase_connect(); diff --git a/tests/code/testcode/dbal/mssql b/tests/code/testcode/dbal/mssql new file mode 100644 index 0000000..e0df504 --- /dev/null +++ b/tests/code/testcode/dbal/mssql @@ -0,0 +1 @@ +mssql_connect(); diff --git a/tests/code/testcode/dbal/mysql b/tests/code/testcode/dbal/mysql new file mode 100644 index 0000000..ff68198 --- /dev/null +++ b/tests/code/testcode/dbal/mysql @@ -0,0 +1 @@ +mysql_connect(); diff --git a/tests/code/testcode/dbal/mysqli b/tests/code/testcode/dbal/mysqli new file mode 100644 index 0000000..9f27a68 --- /dev/null +++ b/tests/code/testcode/dbal/mysqli @@ -0,0 +1 @@ +mysqli_connect(); diff --git a/tests/code/testcode/dbal/oci b/tests/code/testcode/dbal/oci new file mode 100644 index 0000000..3d0cc79 --- /dev/null +++ b/tests/code/testcode/dbal/oci @@ -0,0 +1 @@ +oci_connect(); diff --git a/tests/code/testcode/dbal/odbc b/tests/code/testcode/dbal/odbc new file mode 100644 index 0000000..45719a0 --- /dev/null +++ b/tests/code/testcode/dbal/odbc @@ -0,0 +1 @@ +odbc_connect(); diff --git a/tests/code/testcode/dbal/pg b/tests/code/testcode/dbal/pg new file mode 100644 index 0000000..091e2c8 --- /dev/null +++ b/tests/code/testcode/dbal/pg @@ -0,0 +1 @@ +pg_connect(); diff --git a/tests/code/testcode/dbal/sqlite b/tests/code/testcode/dbal/sqlite new file mode 100644 index 0000000..f80443a --- /dev/null +++ b/tests/code/testcode/dbal/sqlite @@ -0,0 +1 @@ +sqlite_connect(); diff --git a/tests/code/testcode/dbal/sqlsrv b/tests/code/testcode/dbal/sqlsrv new file mode 100644 index 0000000..c1e888e --- /dev/null +++ b/tests/code/testcode/dbal/sqlsrv @@ -0,0 +1 @@ +sqlsrv_connect(); diff --git a/tests/code/testcode/emptyFile b/tests/code/testcode/emptyFile new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/testcode/functions/addslashes b/tests/code/testcode/functions/addslashes new file mode 100644 index 0000000..604ef88 --- /dev/null +++ b/tests/code/testcode/functions/addslashes @@ -0,0 +1 @@ +addslashes(); diff --git a/tests/code/testcode/functions/backticks b/tests/code/testcode/functions/backticks new file mode 100644 index 0000000..52af9ca --- /dev/null +++ b/tests/code/testcode/functions/backticks @@ -0,0 +1 @@ +`test` diff --git a/tests/code/testcode/functions/die b/tests/code/testcode/functions/die new file mode 100644 index 0000000..c56c188 --- /dev/null +++ b/tests/code/testcode/functions/die @@ -0,0 +1 @@ +die(); diff --git a/tests/code/testcode/functions/eval b/tests/code/testcode/functions/eval new file mode 100644 index 0000000..187a5d1 --- /dev/null +++ b/tests/code/testcode/functions/eval @@ -0,0 +1 @@ +eval(); diff --git a/tests/code/testcode/functions/exec b/tests/code/testcode/functions/exec new file mode 100644 index 0000000..e7f4d17 --- /dev/null +++ b/tests/code/testcode/functions/exec @@ -0,0 +1 @@ +exec(); diff --git a/tests/code/testcode/functions/getenv b/tests/code/testcode/functions/getenv new file mode 100644 index 0000000..457a5e2 --- /dev/null +++ b/tests/code/testcode/functions/getenv @@ -0,0 +1 @@ +getenv(); diff --git a/tests/code/testcode/functions/include_once b/tests/code/testcode/functions/include_once new file mode 100644 index 0000000..0bfcb59 --- /dev/null +++ b/tests/code/testcode/functions/include_once @@ -0,0 +1 @@ +include_once(); diff --git a/tests/code/testcode/functions/include_once2 b/tests/code/testcode/functions/include_once2 new file mode 100644 index 0000000..2931c27 --- /dev/null +++ b/tests/code/testcode/functions/include_once2 @@ -0,0 +1 @@ +include_once ''; diff --git a/tests/code/testcode/functions/md5 b/tests/code/testcode/functions/md5 new file mode 100644 index 0000000..fb9ec7c --- /dev/null +++ b/tests/code/testcode/functions/md5 @@ -0,0 +1 @@ +md5(); diff --git a/tests/code/testcode/functions/md52 b/tests/code/testcode/functions/md52 new file mode 100644 index 0000000..44a45f0 --- /dev/null +++ b/tests/code/testcode/functions/md52 @@ -0,0 +1,8 @@ + diff --git a/tests/code/testcode/include/include2 b/tests/code/testcode/include/include2 new file mode 100644 index 0000000..750c6f5 --- /dev/null +++ b/tests/code/testcode/include/include2 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/include3 b/tests/code/testcode/include/include3 new file mode 100644 index 0000000..2cfe0d8 --- /dev/null +++ b/tests/code/testcode/include/include3 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/include4 b/tests/code/testcode/include/include4 new file mode 100644 index 0000000..1d22d5c --- /dev/null +++ b/tests/code/testcode/include/include4 @@ -0,0 +1,6 @@ + diff --git a/tests/code/testcode/include/include5 b/tests/code/testcode/include/include5 new file mode 100644 index 0000000..7d925be --- /dev/null +++ b/tests/code/testcode/include/include5 @@ -0,0 +1,6 @@ + diff --git a/tests/code/testcode/include/include6 b/tests/code/testcode/include/include6 new file mode 100644 index 0000000..fd9a878 --- /dev/null +++ b/tests/code/testcode/include/include6 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/include7 b/tests/code/testcode/include/include7 new file mode 100644 index 0000000..8ae9bad --- /dev/null +++ b/tests/code/testcode/include/include7 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/includeonce1 b/tests/code/testcode/include/includeonce1 new file mode 100644 index 0000000..a68f319 --- /dev/null +++ b/tests/code/testcode/include/includeonce1 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/includeonce2 b/tests/code/testcode/include/includeonce2 new file mode 100644 index 0000000..c6f5b48 --- /dev/null +++ b/tests/code/testcode/include/includeonce2 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/require1 b/tests/code/testcode/include/require1 new file mode 100644 index 0000000..70064c4 --- /dev/null +++ b/tests/code/testcode/include/require1 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/require2 b/tests/code/testcode/include/require2 new file mode 100644 index 0000000..6b8e060 --- /dev/null +++ b/tests/code/testcode/include/require2 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/requireonce1 b/tests/code/testcode/include/requireonce1 new file mode 100644 index 0000000..9e98015 --- /dev/null +++ b/tests/code/testcode/include/requireonce1 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/include/requireonce2 b/tests/code/testcode/include/requireonce2 new file mode 100644 index 0000000..9afc2fd --- /dev/null +++ b/tests/code/testcode/include/requireonce2 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/inphpbb.php b/tests/code/testcode/inphpbb.php new file mode 100644 index 0000000..38f046a --- /dev/null +++ b/tests/code/testcode/inphpbb.php @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/inphpbb3.php b/tests/code/testcode/inphpbb3.php new file mode 100644 index 0000000..f066844 --- /dev/null +++ b/tests/code/testcode/inphpbb3.php @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/noBinary b/tests/code/testcode/noBinary new file mode 100644 index 0000000..65b09c0 --- /dev/null +++ b/tests/code/testcode/noBinary @@ -0,0 +1 @@ +This is only a textfile diff --git a/tests/code/testcode/noExtension b/tests/code/testcode/noExtension new file mode 100644 index 0000000..503dd74 --- /dev/null +++ b/tests/code/testcode/noExtension @@ -0,0 +1,2 @@ +This is a binary file. +� diff --git a/tests/code/testcode/noShort b/tests/code/testcode/noShort new file mode 100644 index 0000000..62a2de0 --- /dev/null +++ b/tests/code/testcode/noShort @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/noinphpbb.php b/tests/code/testcode/noinphpbb.php new file mode 100644 index 0000000..62a2de0 --- /dev/null +++ b/tests/code/testcode/noinphpbb.php @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/phpbb.php b/tests/code/testcode/phpbb.php new file mode 100644 index 0000000..6aca170 --- /dev/null +++ b/tests/code/testcode/phpbb.php @@ -0,0 +1,6 @@ + diff --git a/tests/code/testcode/requestVar1 b/tests/code/testcode/requestVar1 new file mode 100644 index 0000000..dbdb00b --- /dev/null +++ b/tests/code/testcode/requestVar1 @@ -0,0 +1,5 @@ + diff --git a/tests/code/testcode/requestVar2 b/tests/code/testcode/requestVar2 new file mode 100644 index 0000000..3902b92 --- /dev/null +++ b/tests/code/testcode/requestVar2 @@ -0,0 +1,5 @@ + diff --git a/tests/code/testcode/requestVar3 b/tests/code/testcode/requestVar3 new file mode 100644 index 0000000..ec44933 --- /dev/null +++ b/tests/code/testcode/requestVar3 @@ -0,0 +1,5 @@ + diff --git a/tests/code/testcode/short1 b/tests/code/testcode/short1 new file mode 100644 index 0000000..471f06d --- /dev/null +++ b/tests/code/testcode/short1 @@ -0,0 +1,2 @@ + diff --git a/tests/code/testcode/short2 b/tests/code/testcode/short2 new file mode 100644 index 0000000..2efda24 --- /dev/null +++ b/tests/code/testcode/short2 @@ -0,0 +1,2 @@ + diff --git a/tests/code/testcode/short3 b/tests/code/testcode/short3 new file mode 100644 index 0000000..a6b0c86 --- /dev/null +++ b/tests/code/testcode/short3 @@ -0,0 +1,2 @@ + diff --git a/tests/code/testcode/short4 b/tests/code/testcode/short4 new file mode 100644 index 0000000..bbf79c4 --- /dev/null +++ b/tests/code/testcode/short4 @@ -0,0 +1,3 @@ + diff --git a/tests/code/testcode/unixFile b/tests/code/testcode/unixFile new file mode 100644 index 0000000..929ec5f --- /dev/null +++ b/tests/code/testcode/unixFile @@ -0,0 +1,5 @@ +This is a file with UNIX line ends +This is a file with UNIX line ends +This is a file with UNIX line ends +This is a file with UNIX line ends +This is a file with UNIX line ends diff --git a/tests/code/testcode/windowsFile b/tests/code/testcode/windowsFile new file mode 100644 index 0000000..ad6053a --- /dev/null +++ b/tests/code/testcode/windowsFile @@ -0,0 +1,5 @@ +This is a file with windows line ends +This is a file with windows line ends +This is a file with windows line ends +This is a file with windows line ends +This is a file with windows line ends diff --git a/tests/code/unix_test.php b/tests/code/unix_test.php new file mode 100644 index 0000000..78ceef0 --- /dev/null +++ b/tests/code/unix_test.php @@ -0,0 +1,49 @@ + redirect(), expected triggered error (else false), expected returned result url (else false)) + return array( + array('testcode/windowsFile', 'NO_UNIX_ENDINGS', false), + array('testcode/unixFile', false, true), + ); + } + + protected function setUp() + { + parent::setUp(); + + $this->test = new mpv_tests_code(new mpv); + } + + /** + * @dataProvider provider + */ + public function test_unix($test, $expected_error, $expected_result) + { + global $user; + $this->test->setFilename('tests/code/' . $test); + + if ($expected_error !== false) + { + $this->setExpectedTriggerError(E_USER_ERROR, $expected_error); + } + + $result = $this->test->unittest('test_unix_endings', array()); + + $this->assertEquals($expected_result, $result); + } +} + diff --git a/tests/test_framework/mpv_mock.php b/tests/test_framework/mpv_mock.php new file mode 100644 index 0000000..47ec375 --- /dev/null +++ b/tests/test_framework/mpv_mock.php @@ -0,0 +1,37 @@ + diff --git a/tests/test_framework/phpbb_test_case.php b/tests/test_framework/phpbb_test_case.php new file mode 100644 index 0000000..f189da3 --- /dev/null +++ b/tests/test_framework/phpbb_test_case.php @@ -0,0 +1,43 @@ +backupStaticAttributesBlacklist += array( + 'PHP_CodeCoverage' => array('instance'), + 'PHP_CodeCoverage_Filter' => array('instance'), + 'PHP_CodeCoverage_Util' => array('ignoredLines', 'templateMethods'), + 'PHP_Timer' => array('startTimes',), + 'PHP_Token_Stream' => array('customTokens'), + 'PHP_Token_Stream_CachingFactory' => array('cache'), + + 'phpbb_database_test_case' => array('already_connected'), + ); + } + + public function get_test_case_helpers() + { + if (!$this->test_case_helpers) + { + $this->test_case_helpers = new phpbb_test_case_helpers($this); + } + + return $this->test_case_helpers; + } + + public function setExpectedTriggerError($errno, $message = '') + { + $this->get_test_case_helpers()->setExpectedTriggerError($errno, $message); + } +} diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php new file mode 100644 index 0000000..0acdce3 --- /dev/null +++ b/tests/test_framework/phpbb_test_case_helpers.php @@ -0,0 +1,44 @@ +test_case = $test_case; + } + + public function setExpectedTriggerError($errno, $message = '') + { + $exceptionName = ''; + switch ($errno) + { + case E_NOTICE: + case E_STRICT: + PHPUnit_Framework_Error_Notice::$enabled = true; + $exceptionName = 'PHPUnit_Framework_Error_Notice'; + break; + + case E_WARNING: + PHPUnit_Framework_Error_Warning::$enabled = true; + $exceptionName = 'PHPUnit_Framework_Error_Warning'; + break; + + default: + $exceptionName = 'PHPUnit_Framework_Error'; + break; + } + $this->expectedTriggerError = true; + $this->test_case->setExpectedException($exceptionName, (string) $message, $errno); + } +}