Improve testsuite to make it easily executable by Travis
authorgggeek <giunta.gaetano@gmail.com>
Sun, 7 Dec 2014 20:01:09 +0000 (20:01 +0000)
committergggeek <giunta.gaetano@gmail.com>
Sun, 7 Dec 2014 20:01:09 +0000 (20:01 +0000)
.travis.yml [new file with mode: 0644]
NEWS
debugger/action.php
debugger/controller.php
test/benchmark.php
test/parse_args.php
test/testsuite.php

diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..7fb78ce
--- /dev/null
@@ -0,0 +1,30 @@
+language: php
+
+php:
+  - 5.2
+  - 5.3
+  - 5.4
+  - 5.5
+  - 5.6
+  - hhvm
+
+install:
+  composer install
+
+before_script:
+  # before php 5.4, we can not use the built-in webserver. So we rely on apache
+  - sudo apt-get install apache2
+  - sudo a2enmod actions
+  - sudo a2enmod rewrite
+  - echo "export PATH=/home/vagrant/.phpenv/bin:$PATH" | sudo tee -a /etc/apache2/envvars > /dev/null
+  - echo "$(curl -fsSL https://gist.github.com/roderik/16d751c979fdeb5a14e3/raw/gistfile1.txt)" | sudo tee /etc/apache2/conf.d/phpconfig > /dev/null
+  - echo "$(curl -fsSL https://gist.github.com/roderik/2eb301570ed4a1f4c33d/raw/gistfile1.txt)" | sed -e "s,PATH,`pwd`/web,g" | sudo tee /etc/apache2/sites-available/default > /dev/null
+  - sudo service apache2 restart
+
+script:
+  # TODO: we should set up an Apache instance inside the Travis VM and test it.
+  # But it looks a bit complex, esp. as it seems that php has to be set up differently (cgi vs fpm) depending on version
+  # So for now we just take an easy way out using a known remote server.
+  # See: https://gist.github.com/roderik/3123962
+  # See: http://docs.travis-ci.com/user/languages/php/#Apache-%2B-PHP
+  php -d "include_path=.;./lib;./test" test/testsuite.php LOCALSERVER=gggeek.altervista.org URI=/sw/xmlrpc/demo/server/server.php HTTPSSERVER=gggeek.ssl.altervista.org HTTPSURI=/sw/xmlrpc/demo/server/server.php
diff --git a/NEWS b/NEWS
index e0ba52e..1e71f97 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+XML-RPC for PHP version 3.0.1 - 201X/Y/Z\r
+\r
+Taking baby steps to modern-world php, this release is now tested using Travis ( https://travis-ci.org/ ).\r
+\r
+\r
 XML-RPC for PHP version 3.0.0 - 2014/6/15\r
 \r
 This release corrects all bugs that have been reported and successfully reproduced since\r
index 03a1242..f79aba0 100644 (file)
@@ -36,7 +36,7 @@ td form {margin: 0;}
 <body>
 <?php
 
-  include(getcwd().'/common.php');
+  include(dirname(__FILE__).'/common.php');
   if ($action)
   {
 
index 98550c9..afb34ad 100644 (file)
@@ -13,7 +13,7 @@
  * @todo add http no-cache headers
  **/
 
-  include(getcwd().'/common.php');
+  include(dirname(__FILE__).'/common.php');
   if ($action == '')
     $action = 'list';
 
index 700e487..6758d26 100644 (file)
@@ -8,7 +8,7 @@
  * @todo add a test for response ok in call testing?
  **/
 
-       include(getcwd().'/parse_args.php');
+       include(dirname(__FILE__).'/parse_args.php');
 
        require_once('xmlrpc.inc');
 
index 81f5bd0..d47168c 100644 (file)
                        $PROXYPORT = 8080;
                }
        }
+    // used to silence testsuite warnings about proxy code not being tested
+    if(!isset($NOPROXY))
+    {
+        $NOPROXY = false;
+    }
        if(!isset($URI))
        {
                // GUESTIMATE the url of local demo server
index dbbfa0b..0164c66 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-include(getcwd().'/parse_args.php');
+include(dirname(__FILE__).'/parse_args.php');
 
 require_once('xmlrpc.inc');
 require_once('xmlrpcs.inc');
@@ -561,6 +561,10 @@ And turned it into nylon';
             $this->assertEquals(1, $v->scalarval());
             // now check if we decoded the cookies as we had set them
             $rcookies = $r->cookies();
+            // remove extra cookies which might have been set by proxies
+            foreach($rcookies as $c => $v)
+                if(!in_array($c, array('c2', 'c3', 'c4', 'c5')))
+                    unset($rcookies[$c]);
             foreach($cookies as $c => $v)
                 // format for date string in cookies: 'Mon, 31 Oct 2005 13:50:56 GMT'
                 // but PHP versions differ on that, some use 'Mon, 31-Oct-2005 13:50:56 GMT'...
@@ -677,14 +681,15 @@ class LocalHostMultiTests extends LocalhostTests
 
     function testProxy()
     {
-        global $PROXYSERVER, $PROXYPORT;
+        global $PROXYSERVER, $PROXYPORT, $NOPROXY;
         if ($PROXYSERVER)
         {
             $this->client->setProxy($PROXYSERVER, $PROXYPORT);
             $this->_runtests();
         }
         else
-            $this->fail('PROXY definition missing: cannot test proxy');
+            if (!$NOPROXY)
+                $this->fail('PROXY definition missing: cannot test proxy');
     }
 
     function testHttp11()
@@ -734,7 +739,7 @@ class LocalHostMultiTests extends LocalhostTests
 
     function testHttp11Proxy()
     {
-        global $PROXYSERVER, $PROXYPORT;
+        global $PROXYSERVER, $PROXYPORT, $NOPROXY;
         if(!function_exists('curl_init'))
         {
             $this->fail('CURL missing: cannot test http 1.1 w. proxy');
@@ -742,7 +747,8 @@ class LocalHostMultiTests extends LocalhostTests
         }
         else if ($PROXYSERVER == '')
         {
-            $this->fail('PROXY definition missing: cannot test proxy w. http 1.1');
+            if (!$NOPROXY)
+                $this->fail('PROXY definition missing: cannot test proxy w. http 1.1');
             return;
         }
         $this->method = 'http11'; // not an error the double assignment!
@@ -772,7 +778,7 @@ class LocalHostMultiTests extends LocalhostTests
 
     function testHttpsProxy()
     {
-        global $HTTPSSERVER, $HTTPSURI, $PROXYSERVER, $PROXYPORT;;
+        global $HTTPSSERVER, $HTTPSURI, $PROXYSERVER, $PROXYPORT, $NOPROXY;
         if(!function_exists('curl_init'))
         {
             $this->fail('CURL missing: cannot test https functionality');
@@ -780,7 +786,8 @@ class LocalHostMultiTests extends LocalhostTests
         }
         else if ($PROXYSERVER == '')
         {
-            $this->fail('PROXY definition missing: cannot test proxy w. http 1.1');
+            if (!$NOPROXY)
+                $this->fail('PROXY definition missing: cannot test proxy w. http 1.1');
             return;
         }
         $this->client->server = $HTTPSSERVER;