test cleanups
[plcapi.git] / tests / 3LocalhostTest.php
index 9be1f3a..2ec0150 100644 (file)
@@ -5,11 +5,17 @@ include_once __DIR__ . '/../lib/xmlrpc_wrappers.inc';
 
 include_once __DIR__ . '/parse_args.php';
 
+include_once __DIR__ . '/PolyfillTestCase.php';
+
+use PHPUnit\Extensions\SeleniumCommon\RemoteCoverage;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Runner\BaseTestRunner;
+
 /**
  * Tests which involve interaction between the client and the server.
  * They are run against the server found in demo/server.php
  */
-class LocalhostTest extends PHPUnit_Framework_TestCase
+class LocalhostTest extends PhpXmlRpc_PolyfillTestCase
 {
     /** @var xmlrpc_client $client */
     protected $client = null;
@@ -26,7 +32,10 @@ class LocalhostTest extends PHPUnit_Framework_TestCase
     protected $collectCodeCoverageInformation;
     protected $coverageScriptUrl;
 
-    public static function fail($message = '')
+    /**
+     * @todo instead of overriding fail via _fail, implement Yoast\PHPUnitPolyfills\TestListeners\TestListenerDefaultImplementation
+     */
+    public static function _fail($message = '')
     {
         // save in a static var that this particular test has failed
         // (but only if not called from subclass objects / multitests)
@@ -40,18 +49,20 @@ class LocalhostTest extends PHPUnit_Framework_TestCase
             }
         }
 
-        parent::fail($message);
+        parent::_fail($message);
     }
 
     /**
      * Reimplemented to allow us to collect code coverage info from the target server.
      * Code taken from PHPUnit_Extensions_Selenium2TestCase
      *
-     * @param PHPUnit_Framework_TestResult $result
-     * @return PHPUnit_Framework_TestResult
+     * @param TestResult $result
+     * @return TestResult
      * @throws Exception
+     *
+     * @todo instead of overriding run via _run, try to achieve this by implementing Yoast\PHPUnitPolyfills\TestListeners\TestListenerDefaultImplementation
      */
-    public function run(PHPUnit_Framework_TestResult $result = NULL)
+    public function _run($result = NULL)
     {
         $this->testId = get_class($this) . '__' . $this->getName();
 
@@ -61,10 +72,10 @@ class LocalhostTest extends PHPUnit_Framework_TestCase
 
         $this->collectCodeCoverageInformation = $result->getCollectCodeCoverageInformation();
 
-        parent::run($result);
+        parent::_run($result);
 
         if ($this->collectCodeCoverageInformation) {
-            $coverage = new PHPUnit_Extensions_SeleniumCommon_RemoteCoverage(
+            $coverage = new RemoteCoverage(
                 $this->coverageScriptUrl,
                 $this->testId
             );
@@ -79,35 +90,35 @@ class LocalhostTest extends PHPUnit_Framework_TestCase
         return $result;
     }
 
-    public function setUp()
+    public function set_up()
     {
         $this->args = argParser::getArgs();
 
-        $server = explode(':', $this->args['LOCALSERVER']);
+        $server = explode(':', $this->args['HTTPSERVER']);
         if (count($server) > 1) {
-            $this->client = new xmlrpc_client($this->args['URI'], $server[0], $server[1]);
+            $this->client = new xmlrpc_client($this->args['HTTPURI'], $server[0], $server[1]);
         } else {
-            $this->client = new xmlrpc_client($this->args['URI'], $this->args['LOCALSERVER']);
+            $this->client = new xmlrpc_client($this->args['HTTPURI'], $this->args['HTTPSERVER']);
         }
 
         $this->client->setDebug($this->args['DEBUG']);
         $this->client->request_compression = $this->request_compression;
         $this->client->accepted_compression = $this->accepted_compression;
 
-        $this->coverageScriptUrl = 'http://' . $this->args['LOCALSERVER'] . '/' . str_replace( '/demo/server/server.php', 'tests/phpunit_coverage.php', $this->args['URI'] );
+        $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . '/' . str_replace( '/demo/server/server.php', 'tests/phpunit_coverage.php', $this->args['HTTPURI'] );
 
         if ($this->args['DEBUG'] == 1)
             ob_start();
     }
 
-    protected function tearDown()
+    protected function tear_down()
     {
         if ($this->args['DEBUG'] != 1)
             return;
         $out = ob_get_clean();
         $status = $this->getStatus();
-        if ($status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR
-            || $status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) {
+        if ($status == BaseTestRunner::STATUS_ERROR
+            || $status == BaseTestRunner::STATUS_FAILURE) {
             echo $out;
         }
     }
@@ -500,6 +511,7 @@ And turned it into nylon';
     {
         // NB: This test will NOT pass if server does not support system.multicall.
 
+        $noMultiCall = $this->client->no_multicall;
         $this->client->no_multicall = false;
 
         $good1 = new xmlrpcmsg('system.methodHelp',
@@ -537,12 +549,15 @@ And turned it into nylon';
         $this->assertTrue($this->client->no_multicall == false,
             "server does not support system.multicall"
         );
+
+        $this->client->no_multicall = $noMultiCall;
     }
 
     public function testClientMulticall2()
     {
         // NB: This test will NOT pass if server does not support system.multicall.
 
+        $noMultiCall = $this->client->no_multicall;
         $this->client->no_multicall = true;
 
         $good1 = new xmlrpcmsg('system.methodHelp',
@@ -574,12 +589,17 @@ And turned it into nylon';
             $val = $r[3]->value();
             $this->assertTrue($val->kindOf() == 'array', "good2 did not return array");
         }
+
+        $this->client->no_multicall = $noMultiCall;
     }
 
     public function testClientMulticall3()
     {
         // NB: This test will NOT pass if server does not support system.multicall.
 
+        $noMultiCall = $this->client->no_multicall;
+        $returnType = $this->client->return_type;
+
         $this->client->return_type = 'phpvals';
         $this->client->no_multicall = false;
 
@@ -610,7 +630,9 @@ And turned it into nylon';
             $val = $r[3]->value();
             $this->assertTrue(is_array($val), "good2 did not return array");
         }
-        //$this->client->return_type = 'xmlrpcvals';
+
+        $this->client->return_type = $returnType;
+        $this->client->no_multicall = $noMultiCall;
     }
 
     public function testCatchWarnings()
@@ -846,19 +868,23 @@ And turned it into nylon';
             $this->fail('Registration of remote server failed');
         } else {
             $obj = new $class();
-            $v = $obj->examples_getStateName(23);
-            // work around bug in current (or old?) version of phpunit when reporting the error
-            /*if (is_object($v)) {
-                $v = var_export($v, true);
-            }*/
-            $this->assertEquals('Michigan', $v);
+            if (!is_callable(array($obj, 'examples_getStateName'))) {
+                $this->fail('Registration of remote server failed to import method "examples_getStateName"');
+            } else {
+                $v = $obj->examples_getStateName(23);
+                // work around bug in current (or old?) version of phpunit when reporting the error
+                /*if (is_object($v)) {
+                    $v = var_export($v, true);
+                }*/
+                $this->assertEquals('Michigan', $v);
+            }
         }
     }
 
     public function testTransferOfObjectViaWrapping()
     {
         // make a 'deep client copy' as the original one might have many properties set
-        $func = wrap_xmlrpc_method($this->client, 'tests.returnPhpObject', array('simple_client_copy' => true,
+        $func = wrap_xmlrpc_method($this->client, 'tests.returnPhpObject', array('simple_client_copy' => 0,
             'decode_php_objs' => true));
         if ($func == false) {
             $this->fail('Registration of tests.returnPhpObject failed');
@@ -950,7 +976,7 @@ And turned it into nylon';
             new xmlrpcval('hello world', 'string'),
         ));
         $r = $this->send($m, 0, true);
-        $this->assertContains('hello world', $r->raw_data);
+        $this->assertStringContainsString('hello world', $r->raw_data);
     }
 
     public function testSendTwiceSameMsg()