From 66ddfda7a211d0c8dbba8d622fe08918a0fbfe15 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Thu, 26 Jun 2008 21:07:59 +0000 Subject: - Patch #274994 by R.Muilwijk, boombatower: bring back the includes-tests. --- includes/bootstrap.test | 83 ------------------- includes/common.test | 54 ------------- includes/registry.test | 152 ----------------------------------- includes/tests/bootstrap.test | 83 +++++++++++++++++++ includes/tests/common.test | 54 +++++++++++++ includes/tests/registry.test | 152 +++++++++++++++++++++++++++++++++++ includes/tests/xmlrpc.test | 126 +++++++++++++++++++++++++++++ includes/xmlrpc.test | 126 ----------------------------- modules/simpletest/simpletest.module | 5 ++ 9 files changed, 420 insertions(+), 415 deletions(-) delete mode 100644 includes/bootstrap.test delete mode 100644 includes/common.test delete mode 100644 includes/registry.test create mode 100644 includes/tests/bootstrap.test create mode 100644 includes/tests/common.test create mode 100644 includes/tests/registry.test create mode 100644 includes/tests/xmlrpc.test delete mode 100644 includes/xmlrpc.test diff --git a/includes/bootstrap.test b/includes/bootstrap.test deleted file mode 100644 index beb94edf0..000000000 --- a/includes/bootstrap.test +++ /dev/null @@ -1,83 +0,0 @@ - t('IP address test'), - 'description' => t('Get the IP address from the current visitor from the server variables.'), - 'group' => t('Bootstrap') - ); - } - - /** - * Implementation of setUp(). - */ - function setUp() { - $this->oldserver = $_SERVER; - - $this->remote_ip = '127.0.0.1'; - $this->proxy_ip = '127.0.0.2'; - $this->forwarded_ip = '127.0.0.3'; - $this->cluster_ip = '127.0.0.4'; - $this->untrusted_ip = '0.0.0.0'; - - $_SERVER['REMOTE_ADDR'] = $this->remote_ip; - unset($_SERVER['HTTP_X_FORWARDED_FOR']); - unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']); - - parent::setUp(); - } - - /** - * Implementation of tearDown(). - */ - function tearDown() { - $_SERVER = $this->oldserver; - parent::tearDown(); - } - - /** - * testIPAddress - */ - function testIPAddress() { - // Test the normal IP address. - $this->assertTrue( - ip_address(true) == $this->remote_ip, - t('Got remote IP address') - ); - - // Proxy forwarding on but no proxy addresses defined. - variable_set('reverse_proxy', 1); - $this->assertTrue( - ip_address(true) == $this->remote_ip, - t('Proxy forwarding without trusted proxies got remote IP address') - ); - - // Proxy forwarding on and proxy address not trusted. - variable_set('reverse_proxy_addresses', array($this->proxy_ip)); - $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip; - $this->assertTrue( - ip_address(true) == $this->untrusted_ip, - t('Proxy forwarding with untrusted proxy got remote IP address') - ); - - // Proxy forwarding on and proxy address trusted. - $_SERVER['REMOTE_ADDR'] = $this->proxy_ip; - $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip; - $this->assertTrue( - ip_address(true) == $this->forwarded_ip, - t('Proxy forwarding with trusted proxy got forwarded IP address') - ); - - // Cluster environment. - $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip; - $this->assertTrue( - ip_address(true) == $this->cluster_ip, - t('Cluster environment got cluster client IP') - ); - } -} diff --git a/includes/common.test b/includes/common.test deleted file mode 100644 index d3f907608..000000000 --- a/includes/common.test +++ /dev/null @@ -1,54 +0,0 @@ - t('Format size test'), - 'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'), - 'group' => t('System') - ); - } - - /** - * Implementation of setUp(). - */ - function setUp() { - $this->exact_test_cases = array( - '1 byte' => 1, // byte - '1 KB' => 1000, // kilobyte - '1 MB' => 1000000, // megabyte - '1 GB' => 1000000000, // gigabyte - '1 TB' => 1000000000000, // terabyte - '1 PB' => 1000000000000000, // petabyte - '1 EB' => 1000000000000000000, // exabyte - '1 ZB' => 1000000000000000000000, // zettabyte - '1 YB' => 1000000000000000000000000, // yottabyte - ); - $this->rounded_test_cases = array( - '2 bytes' => 2, // bytes - '1 MB' => 999999, // 1 MB (not 1000 kilobyte!) - '3.62 MB' => 3623651, // megabytes - '67.23 PB' => 67234178751368124, // petabytes - '235.35 YB' => 235346823821125814962843827, // yottabytes - ); - parent::setUp(); - } - - /** - * testCommonFormatSize - */ - function testCommonFormatSize() { - foreach (array($this->exact_test_cases, $this->rounded_test_cases) as $test_cases) { - foreach ($test_cases as $expected => $size) { - $this->assertTrue( - ($result = format_size($size, NULL)) == $expected, - $expected . " == " . $result . " (" . $size . " bytes) %s" - ); - } - } - } -} diff --git a/includes/registry.test b/includes/registry.test deleted file mode 100644 index 93fea4009..000000000 --- a/includes/registry.test +++ /dev/null @@ -1,152 +0,0 @@ - t('Registry parse file test'), - 'description' => t('Parse a simple file and check that its resources are saved to the database.'), - 'group' => t('System') - ); - } - - /** - * Implementation of setUp(). - */ - function setUp() { - $this->fileName = 'registry_test_' . md5(rand()); - $this->functionName = 'registry_test_function' . md5(rand()); - $this->className = 'registry_test_class' . md5(rand()); - $this->interfaceName = 'registry_test_interface' . md5(rand()); - parent::setUp(); - } - - /** - * testRegistryParseFile - */ - function testRegistryParseFile() { - _registry_parse_file($this->fileName, $this->getFileContents()); - foreach (array('functionName', 'className', 'interfaceName') as $resource) { - $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$resource)); - $this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource))); - } - } - - /** - * getFileContents - */ - function getFileContents() { - $file_contents = <<functionName}() {} - -class {$this->className} {} - -interface {$this->interfaceName} {} - -CONTENTS; - return $file_contents; - } - -} - -class RegistryParseFilesTestCase extends DrupalWebTestCase { - - protected $fileTypes = array('new', 'existing_changed'); - - /** - * Implementation of getInfo(). - */ - function getInfo() { - return array( - 'name' => t('Registry parse files test'), - 'description' => t('Read two a simple files from disc, and check that their resources are saved to the database.'), - 'group' => t('System') - ); - } - - /** - * Implementation of setUp(). - */ - function setUp() { - parent::setUp(); - // Create files with some php to parse - one 'new', one 'existing' so - // we test all the important code paths in _registry_parse_files. - foreach ($this->fileTypes as $fileType) { - $this->$fileType = new StdClass(); - $this->$fileType->fileName = file_directory_path() . '/registry_test_' . md5(rand()); - $this->$fileType->functionName = 'registry_test_function' . md5(rand()); - $this->$fileType->className = 'registry_test_class' . md5(rand()); - $this->$fileType->interfaceName = 'registry_test_interface' . md5(rand()); - $this->$fileType->contents = $this->getFileContents($fileType); - file_save_data($this->$fileType->contents, $this->$fileType->fileName); - - if ($fileType == 'existing_changed') { - // Insert a record with a dodgy md5. - $this->$fileType->fakeMD5 = md5($this->$fileType->contents . rand()); - db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, './' . $this->$fileType->fileName); - - // Insert some fake resource records. - foreach (array('function', 'class', 'interface') as $type) { - db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, './' . $this->$fileType->fileName); - } - } - } - } - - /** - * testRegistryParseFiles - */ - function testRegistryParseFiles() { - _registry_parse_files($this->getFiles()); - foreach ($this->fileTypes as $fileType) { - // Test that we have all the right resources. - foreach (array('functionName', 'className', 'interfaceName') as $resource) { - $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$fileType->$resource)); - $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource))); - } - // Test that we have the right md5. - $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", './' . $this->$fileType->fileName)); - $this->assertTrue(md5($this->$fileType->contents) == $md5, t('MD5 for "@filename" matched.' . $fileType . $md5, array('@filename' => $this->$fileType->fileName))); - } - } - - /** - * getFiles - */ - function getFiles() { - $files = array(); - foreach ($this->fileTypes as $fileType) { - if ($fileType == 'existing_changed') { - $files['./' . $this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5); - } - else { - $files['./' . $this->$fileType->fileName] = array(); - } - } - return $files; - } - - /** - * getFileContents - */ - function getFileContents($fileType) { - $file_contents = <<$fileType->functionName}() {} - -class {$this->$fileType->className} {} - -interface {$this->$fileType->interfaceName} {} - -CONTENTS; - return $file_contents; - } - -} - diff --git a/includes/tests/bootstrap.test b/includes/tests/bootstrap.test new file mode 100644 index 000000000..beb94edf0 --- /dev/null +++ b/includes/tests/bootstrap.test @@ -0,0 +1,83 @@ + t('IP address test'), + 'description' => t('Get the IP address from the current visitor from the server variables.'), + 'group' => t('Bootstrap') + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + $this->oldserver = $_SERVER; + + $this->remote_ip = '127.0.0.1'; + $this->proxy_ip = '127.0.0.2'; + $this->forwarded_ip = '127.0.0.3'; + $this->cluster_ip = '127.0.0.4'; + $this->untrusted_ip = '0.0.0.0'; + + $_SERVER['REMOTE_ADDR'] = $this->remote_ip; + unset($_SERVER['HTTP_X_FORWARDED_FOR']); + unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']); + + parent::setUp(); + } + + /** + * Implementation of tearDown(). + */ + function tearDown() { + $_SERVER = $this->oldserver; + parent::tearDown(); + } + + /** + * testIPAddress + */ + function testIPAddress() { + // Test the normal IP address. + $this->assertTrue( + ip_address(true) == $this->remote_ip, + t('Got remote IP address') + ); + + // Proxy forwarding on but no proxy addresses defined. + variable_set('reverse_proxy', 1); + $this->assertTrue( + ip_address(true) == $this->remote_ip, + t('Proxy forwarding without trusted proxies got remote IP address') + ); + + // Proxy forwarding on and proxy address not trusted. + variable_set('reverse_proxy_addresses', array($this->proxy_ip)); + $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip; + $this->assertTrue( + ip_address(true) == $this->untrusted_ip, + t('Proxy forwarding with untrusted proxy got remote IP address') + ); + + // Proxy forwarding on and proxy address trusted. + $_SERVER['REMOTE_ADDR'] = $this->proxy_ip; + $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip; + $this->assertTrue( + ip_address(true) == $this->forwarded_ip, + t('Proxy forwarding with trusted proxy got forwarded IP address') + ); + + // Cluster environment. + $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip; + $this->assertTrue( + ip_address(true) == $this->cluster_ip, + t('Cluster environment got cluster client IP') + ); + } +} diff --git a/includes/tests/common.test b/includes/tests/common.test new file mode 100644 index 000000000..d3f907608 --- /dev/null +++ b/includes/tests/common.test @@ -0,0 +1,54 @@ + t('Format size test'), + 'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'), + 'group' => t('System') + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + $this->exact_test_cases = array( + '1 byte' => 1, // byte + '1 KB' => 1000, // kilobyte + '1 MB' => 1000000, // megabyte + '1 GB' => 1000000000, // gigabyte + '1 TB' => 1000000000000, // terabyte + '1 PB' => 1000000000000000, // petabyte + '1 EB' => 1000000000000000000, // exabyte + '1 ZB' => 1000000000000000000000, // zettabyte + '1 YB' => 1000000000000000000000000, // yottabyte + ); + $this->rounded_test_cases = array( + '2 bytes' => 2, // bytes + '1 MB' => 999999, // 1 MB (not 1000 kilobyte!) + '3.62 MB' => 3623651, // megabytes + '67.23 PB' => 67234178751368124, // petabytes + '235.35 YB' => 235346823821125814962843827, // yottabytes + ); + parent::setUp(); + } + + /** + * testCommonFormatSize + */ + function testCommonFormatSize() { + foreach (array($this->exact_test_cases, $this->rounded_test_cases) as $test_cases) { + foreach ($test_cases as $expected => $size) { + $this->assertTrue( + ($result = format_size($size, NULL)) == $expected, + $expected . " == " . $result . " (" . $size . " bytes) %s" + ); + } + } + } +} diff --git a/includes/tests/registry.test b/includes/tests/registry.test new file mode 100644 index 000000000..93fea4009 --- /dev/null +++ b/includes/tests/registry.test @@ -0,0 +1,152 @@ + t('Registry parse file test'), + 'description' => t('Parse a simple file and check that its resources are saved to the database.'), + 'group' => t('System') + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + $this->fileName = 'registry_test_' . md5(rand()); + $this->functionName = 'registry_test_function' . md5(rand()); + $this->className = 'registry_test_class' . md5(rand()); + $this->interfaceName = 'registry_test_interface' . md5(rand()); + parent::setUp(); + } + + /** + * testRegistryParseFile + */ + function testRegistryParseFile() { + _registry_parse_file($this->fileName, $this->getFileContents()); + foreach (array('functionName', 'className', 'interfaceName') as $resource) { + $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$resource)); + $this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource))); + } + } + + /** + * getFileContents + */ + function getFileContents() { + $file_contents = <<functionName}() {} + +class {$this->className} {} + +interface {$this->interfaceName} {} + +CONTENTS; + return $file_contents; + } + +} + +class RegistryParseFilesTestCase extends DrupalWebTestCase { + + protected $fileTypes = array('new', 'existing_changed'); + + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('Registry parse files test'), + 'description' => t('Read two a simple files from disc, and check that their resources are saved to the database.'), + 'group' => t('System') + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp(); + // Create files with some php to parse - one 'new', one 'existing' so + // we test all the important code paths in _registry_parse_files. + foreach ($this->fileTypes as $fileType) { + $this->$fileType = new StdClass(); + $this->$fileType->fileName = file_directory_path() . '/registry_test_' . md5(rand()); + $this->$fileType->functionName = 'registry_test_function' . md5(rand()); + $this->$fileType->className = 'registry_test_class' . md5(rand()); + $this->$fileType->interfaceName = 'registry_test_interface' . md5(rand()); + $this->$fileType->contents = $this->getFileContents($fileType); + file_save_data($this->$fileType->contents, $this->$fileType->fileName); + + if ($fileType == 'existing_changed') { + // Insert a record with a dodgy md5. + $this->$fileType->fakeMD5 = md5($this->$fileType->contents . rand()); + db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, './' . $this->$fileType->fileName); + + // Insert some fake resource records. + foreach (array('function', 'class', 'interface') as $type) { + db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, './' . $this->$fileType->fileName); + } + } + } + } + + /** + * testRegistryParseFiles + */ + function testRegistryParseFiles() { + _registry_parse_files($this->getFiles()); + foreach ($this->fileTypes as $fileType) { + // Test that we have all the right resources. + foreach (array('functionName', 'className', 'interfaceName') as $resource) { + $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$fileType->$resource)); + $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource))); + } + // Test that we have the right md5. + $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", './' . $this->$fileType->fileName)); + $this->assertTrue(md5($this->$fileType->contents) == $md5, t('MD5 for "@filename" matched.' . $fileType . $md5, array('@filename' => $this->$fileType->fileName))); + } + } + + /** + * getFiles + */ + function getFiles() { + $files = array(); + foreach ($this->fileTypes as $fileType) { + if ($fileType == 'existing_changed') { + $files['./' . $this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5); + } + else { + $files['./' . $this->$fileType->fileName] = array(); + } + } + return $files; + } + + /** + * getFileContents + */ + function getFileContents($fileType) { + $file_contents = <<$fileType->functionName}() {} + +class {$this->$fileType->className} {} + +interface {$this->$fileType->interfaceName} {} + +CONTENTS; + return $file_contents; + } + +} + diff --git a/includes/tests/xmlrpc.test b/includes/tests/xmlrpc.test new file mode 100644 index 000000000..72a230e43 --- /dev/null +++ b/includes/tests/xmlrpc.test @@ -0,0 +1,126 @@ + t('XML-RPC validator'), + 'description' => t('See !validator-link. note: simpletest_xmlrpc.module must be enabled', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))), + 'group' => t('XML-RPC') + ); + } + + function setUp() { + parent::setUp('simpletest_xmlrpc'); + } + + function test_run_all_tests() { + if (!module_exists('simpletest_xmlrpc')) { + return FALSE; + } + $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php'; + srand(); + mt_srand(); + + + $array_1 = array(array('curly' => mt_rand(-100,100)), + array('curly' => mt_rand(-100,100)), + array('larry' => mt_rand(-100,100)), + array('larry' => mt_rand(-100,100)), + array('moe' => mt_rand(-100,100)), + array('moe' => mt_rand(-100,100)), + array('larry' => mt_rand(-100,100))); + shuffle($array_1); + $l_res_1 = simpletest_xmlrpc_arrayOfStructsTest($array_1); + $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1); + $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s'); + + + $string_2 = 't\'&>>zf"md>yr>xlcev">>uai"np&s>>q\'&b<>"&&&'; + $l_res_2 = simpletest_xmlrpc_countTheEntities($string_2); + $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2); + $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s'); + + + $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100)); + $l_res_3 = simpletest_xmlrpc_easyStructTest($struct_3); + $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3); + $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s'); + + + $struct_4 = array('sub1' => array('bar' => 13), + 'sub2' => 14, + 'sub3' => array('foo' => 1, 'baz' => 2), + 'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss')))); + $l_res_4 = simpletest_xmlrpc_echoStructTest($struct_4); + $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4); + $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s'); + + $int_5 = mt_rand(-100,100); + $bool_5 = (($int_5 % 2) == 0); + $string_5 = $this->randomName(); + $double_5 = (double)(mt_rand(-1000,1000) / 100); + $time_5 = time(); + $base64_5 = $this->randomName(100); + $l_res_5 = simpletest_xmlrpc_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5); + $l_res_5[5] = $l_res_5[5]->data; /* override warpping */ + $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5)); + /* Contains objects, objects are not equal */ + // See http://drupal.org/node/37766 why this currnetly fails + $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s'); + + + $size = mt_rand(100,200); + $array_6 = array(); + for ($i = 0; $i < $size; $i++) { + $array_6[] = $this->randomName(mt_rand(8,12)); + } + + $l_res_6 = simpletest_xmlrpc_moderateSizeArrayCheck($array_6); + $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6); + $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s'); + + + $struct_7 = array(); + for ($y = 2000; $y < 2002; $y++) { + for ($m = 3; $m < 5; $m++) { + for ($d = 1; $d < 6; $d++) { + $ys = (string)$y; + $ms = sprintf('%02d', $m); + $ds = sprintf('%02d', $d); + $struct_7[$ys][$ms][$ds]['moe'] = mt_rand(-100,100); + $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100); + $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100); + } + } + } + $l_res_7 = simpletest_xmlrpc_nestedStructTest($struct_7); + $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7); + $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s'); + + + $int_8 = mt_rand(-100,100); + $l_res_8 = simpletest_xmlrpc_simpleStructReturnTest($int_8); + $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8); + $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s'); + + /* Now test multicall */ + $x = array(); + $x[] = array('validator1.arrayOfStructsTest', $array_1); + $x[] = array('validator1.countTheEntities', $string_2); + $x[] = array('validator1.easyStructTest', $struct_3); + $x[] = array('validator1.echoStructTest', $struct_4); + $x[] = array('validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5)); + $x[] = array('validator1.moderateSizeArrayCheck', $array_6); + $x[] = array('validator1.nestedStructTest', $struct_7); + $x[] = array('validator1.simpleStructReturnTest', $int_8); + + $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8); + $a_r_res = xmlrpc($xml_url, $x); + $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result'); + } +} +?> diff --git a/includes/xmlrpc.test b/includes/xmlrpc.test deleted file mode 100644 index 72a230e43..000000000 --- a/includes/xmlrpc.test +++ /dev/null @@ -1,126 +0,0 @@ - t('XML-RPC validator'), - 'description' => t('See !validator-link. note: simpletest_xmlrpc.module must be enabled', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))), - 'group' => t('XML-RPC') - ); - } - - function setUp() { - parent::setUp('simpletest_xmlrpc'); - } - - function test_run_all_tests() { - if (!module_exists('simpletest_xmlrpc')) { - return FALSE; - } - $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php'; - srand(); - mt_srand(); - - - $array_1 = array(array('curly' => mt_rand(-100,100)), - array('curly' => mt_rand(-100,100)), - array('larry' => mt_rand(-100,100)), - array('larry' => mt_rand(-100,100)), - array('moe' => mt_rand(-100,100)), - array('moe' => mt_rand(-100,100)), - array('larry' => mt_rand(-100,100))); - shuffle($array_1); - $l_res_1 = simpletest_xmlrpc_arrayOfStructsTest($array_1); - $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1); - $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s'); - - - $string_2 = 't\'&>>zf"md>yr>xlcev">>uai"np&s>>q\'&b<>"&&&'; - $l_res_2 = simpletest_xmlrpc_countTheEntities($string_2); - $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2); - $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s'); - - - $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100)); - $l_res_3 = simpletest_xmlrpc_easyStructTest($struct_3); - $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3); - $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s'); - - - $struct_4 = array('sub1' => array('bar' => 13), - 'sub2' => 14, - 'sub3' => array('foo' => 1, 'baz' => 2), - 'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss')))); - $l_res_4 = simpletest_xmlrpc_echoStructTest($struct_4); - $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4); - $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s'); - - $int_5 = mt_rand(-100,100); - $bool_5 = (($int_5 % 2) == 0); - $string_5 = $this->randomName(); - $double_5 = (double)(mt_rand(-1000,1000) / 100); - $time_5 = time(); - $base64_5 = $this->randomName(100); - $l_res_5 = simpletest_xmlrpc_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5); - $l_res_5[5] = $l_res_5[5]->data; /* override warpping */ - $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5)); - /* Contains objects, objects are not equal */ - // See http://drupal.org/node/37766 why this currnetly fails - $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s'); - - - $size = mt_rand(100,200); - $array_6 = array(); - for ($i = 0; $i < $size; $i++) { - $array_6[] = $this->randomName(mt_rand(8,12)); - } - - $l_res_6 = simpletest_xmlrpc_moderateSizeArrayCheck($array_6); - $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6); - $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s'); - - - $struct_7 = array(); - for ($y = 2000; $y < 2002; $y++) { - for ($m = 3; $m < 5; $m++) { - for ($d = 1; $d < 6; $d++) { - $ys = (string)$y; - $ms = sprintf('%02d', $m); - $ds = sprintf('%02d', $d); - $struct_7[$ys][$ms][$ds]['moe'] = mt_rand(-100,100); - $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100); - $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100); - } - } - } - $l_res_7 = simpletest_xmlrpc_nestedStructTest($struct_7); - $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7); - $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s'); - - - $int_8 = mt_rand(-100,100); - $l_res_8 = simpletest_xmlrpc_simpleStructReturnTest($int_8); - $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8); - $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s'); - - /* Now test multicall */ - $x = array(); - $x[] = array('validator1.arrayOfStructsTest', $array_1); - $x[] = array('validator1.countTheEntities', $string_2); - $x[] = array('validator1.easyStructTest', $struct_3); - $x[] = array('validator1.echoStructTest', $struct_4); - $x[] = array('validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5)); - $x[] = array('validator1.moderateSizeArrayCheck', $array_6); - $x[] = array('validator1.nestedStructTest', $struct_7); - $x[] = array('validator1.simpleStructReturnTest', $int_8); - - $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8); - $a_r_res = xmlrpc($xml_url, $x); - $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result'); - } -} -?> diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module index ee072c275..4d041492b 100644 --- a/modules/simpletest/simpletest.module +++ b/modules/simpletest/simpletest.module @@ -427,6 +427,10 @@ function simpletest_get_all_tests() { } } + foreach (file_scan_directory('includes/tests', '\.test$') as $file) { + $files[] = $file->filename; + } + $existing_classes = get_declared_classes(); foreach ($files as $file) { include_once($file); @@ -459,6 +463,7 @@ function simpletest_categorize_tests($tests) { $info = $instance->getInfo(); $groups[$info['group']][$test] = $instance; } + uksort($groups, 'strnatcasecmp'); return $groups; } -- cgit v1.2.3