Add 'php/phpxmlrpc/' from commit 'cd5dbb4a511e7a616a61187a5de1a611a9748cbd'
[plcapi.git] / php / phpxmlrpc / tests / LocalFileTestCase.php
diff --git a/php/phpxmlrpc/tests/LocalFileTestCase.php b/php/phpxmlrpc/tests/LocalFileTestCase.php
new file mode 100644 (file)
index 0000000..59818c8
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+include_once __DIR__ . '/parse_args.php';
+
+abstract class PhpXmlRpc_LocalFileTestCase extends PHPUnit_Framework_TestCase
+{
+    public $args = array();
+
+    protected $baseUrl;
+
+    protected $testId;
+    /** @var boolean $collectCodeCoverageInformation */
+    protected $collectCodeCoverageInformation;
+    protected $coverageScriptUrl;
+
+    public function run(PHPUnit_Framework_TestResult $result = NULL)
+    {
+        $this->testId = get_class($this) . '__' . $this->getName();
+
+        if ($result === NULL) {
+            $result = $this->createResult();
+        }
+
+        $this->collectCodeCoverageInformation = $result->getCollectCodeCoverageInformation();
+
+        parent::run($result);
+
+        if ($this->collectCodeCoverageInformation) {
+            $coverage = new PHPUnit_Extensions_SeleniumCommon_RemoteCoverage(
+                $this->coverageScriptUrl,
+                $this->testId
+            );
+            $result->getCodeCoverage()->append(
+                $coverage->get(), $this
+            );
+        }
+
+        // do not call this before to give the time to the Listeners to run
+        //$this->getStrategy()->endOfTest($this->session);
+
+        return $result;
+    }
+
+    protected function request($file, $method = 'GET', $payload = '', $emptyPageOk = false)
+    {
+        $url = $this->baseUrl . $file;
+
+        $ch = curl_init($url);
+        curl_setopt_array($ch, array(
+            CURLOPT_RETURNTRANSFER => true,
+            CURLOPT_FAILONERROR => true
+        ));
+        if ($method == 'POST')
+        {
+            curl_setopt_array($ch, array(
+                CURLOPT_POST => true,
+                CURLOPT_POSTFIELDS => $payload
+            ));
+        }
+        if ($this->collectCodeCoverageInformation)
+        {
+            curl_setopt($ch, CURLOPT_COOKIE, 'PHPUNIT_SELENIUM_TEST_ID=true');
+        }
+        if ($this->args['DEBUG'] > 0) {
+            curl_setopt($ch, CURLOPT_VERBOSE, 1);
+        }
+        $page = curl_exec($ch);
+        curl_close($ch);
+
+        $this->assertNotFalse($page);
+        if (!$emptyPageOk) {
+            $this->assertNotEquals('', $page);
+        }
+        $this->assertNotContains('Fatal error', $page);
+        $this->assertNotContains('Notice:', $page);
+
+        return $page;
+    }
+
+}