Commit:    5bfcd27d56f557e23760435c4fd0ca83f6d077ba
Author:    zoe slattery <z...@php.net>         Tue, 9 Oct 2012 13:34:11 +0100
Parents:   2a000e34b920604b6633d5a96950d30fdd9285d0
Branches:  master

Link:       
http://git.php.net/?p=phpruntests.git;a=commitdiff;h=5bfcd27d56f557e23760435c4fd0ca83f6d077ba

Log:
Code to generate phar and mods deal with phar relative path issues

Changed paths:
  A  .gitignore
  D  build.xml
  A  build/build.xml
  A  build/buildPhar.php
  A  build/phpdefinitions.txt_sample
  D  phpdefinitions.txt_sample
  M  src/configuration/settings/rtTestDirectorySetting.php
  M  src/configuration/settings/rtTestFileSetting.php
  M  src/testrun/rtPhpTestRun.php
  M  tests/rtTestBootstrap.php

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2cb6c57
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+build_output/*
+.project
+
diff --git a/build.xml b/build.xml
deleted file mode 100755
index c17a71d..0000000
--- a/build.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="runtests" default="qa" basedir=".">
-<property file="phpdefinitions.txt" />
-
-  <target name="clean">
-    <delete dir="_compare" />
-    <delete dir="_coverage" />
-    <delete dir="_docs" />
-    <delete dir="_sniff" />
-    <delete dir="QA/ext" />
-    <delete dir="QA/sapi" />
-    <delete dir="QA/tests" />
-    <delete dir="QA/Zend" />
-    <delete>
-       <fileset dir="phpt-tests" includes="*.out" />
-       <fileset dir="phpt-tests" includes="*.exp" />
-       <fileset dir="phpt-tests" includes="*.diff" />
-       <fileset dir="phpt-tests" includes="*.log" />
-       <fileset dir="phpt-tests" includes="*.sh" />
-       <fileset dir="phpt-tests" includes="*.post" />
-       <fileset dir="phpt-tests" includes="*.php" />
-    </delete>
-  </target>
-
-  <target name="qa" depends="lint, test, coverage, compare, doc" 
description="Perform quality assurance.">
-  </target>
-  
-  <target name="doc" description="Create API documentation in _docs/html/.">
-    <delete dir="_docs" />
-    <exec command="doxygen" checkReturn="true"/>
-  </target>
-
-  <target name="lint" description="Lint check all PHP files.">
-    <phplint haltonfailure="true">
-      <fileset dir="src">
-        <include name="*.php"/>
-        <include name="**/*.php"/>
-      </fileset>
-    </phplint>
-  </target>
-
-  <target name="test" description="Run all unit tests.">
-    <delete dir="_coverage" />
-    <exec command="phpunit tests" passthru="true" checkReturn="true"/>
-  </target>
-
-  <target name="coverage" description="Create code coverage report in 
_coverage.">
-    <delete dir="_coverage" />
-    <exec command="phpunit --coverage-html _coverage tests" />
-  </target>
-
-  <target name="compare" description="Old/New comparison of phpt results.">
-    <fail unless="php" message="Path to standard PHP executable not defined, 
use -Dphp=/path/to/php" />
-    <fail unless="php_to_test" message="Path to test PHP source dir not 
defined, use -Dphp_to_test=/path/to/php/to/test" />
-    <fail unless="php_source" message="Path to test PHP source dir not 
defined, use -Dphp_to_test=/path/to/php_source_dir" />
-
-
-    <delete dir="_compare" />
-    <mkdir dir="_compare" />
-
-    <delete dir="${temp_directory}/phpruntests" />
-    <mkdir dir="${temp_directory}/phpruntests" />
-
-    <echo msg="Copying QATESTS tar file to temporary directory" />
-
-    <copy file="${project.basedir}/QA/QATESTS.tgz" 
tofile="${temp_directory}/phpruntests/QATESTS.tgz" />
-
-    <echo msg="Extracting QATESTS.." />
-
-    <exec command="tar xfz QATESTS.tgz" dir="${temp_directory}/phpruntests" />
-
-    <echo msg="Running the tests using standard (old) run-tests.php.." />
-
-    <exec command="${php} -n ${php_source}/run-tests.php -n -p ${php_to_test} 
${temp_directory}/phpruntests/Zend ${temp_directory}/phpruntests/ext 
${temp_directory}/phpruntests/sapi ${temp_directory}/phpruntests/tests > 
${project.basedir}/_compare/old.out" dir="${temp_directory}/phpruntests" 
passthru="true" checkReturn="true"/>
-
-    <echo msg="Running the tests using new run-tests.php.." />
-
-    <exec command="${php} -n ${project.basedir}/src/run-tests.php -n -p 
${php_to_test} -o csv -s ${project.basedir}/_compare/new.out 
${temp_directory}/phpruntests" dir="${temp_directory}/phpruntests" 
passthru="true" checkReturn="true" />
-    
-    <echo msg="Comparing the results from new and old runs" />
-
-    <exec command="${php} -n QA/compareNewOld.php 
${project.basedir}/_compare/new.out ${project.basedir}/_compare/old.out 
phpruntests > ${project.basedir}/_compare/compare_new_old.out" 
dir="${project.basedir}" passthru="true" checkReturn="true"/>
-    
-
-  </target>
-
-  <target name="sniff" description="Run all PHP_CodeSniffer sniffs.">
-    <delete dir="_sniff" />
-    <mkdir dir="_sniff" />
-    
-    <exec command="phpcs -n --extensions=php --report=full src > 
${project.basedir}/_sniff/sniff.out" passthru="true"/>
-  </target>
-
-</project>
diff --git a/build/build.xml b/build/build.xml
new file mode 100644
index 0000000..5dd285e
--- /dev/null
+++ b/build/build.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+
+<project name="runtests" default="qa" basedir="..">
+<property file="build/phpdefinitions.txt" />
+
+  <target name="clean">
+    <delete dir="_compare" />
+    <delete dir="_coverage" />
+    <delete dir="_docs" />
+    <delete dir="_sniff" />
+    <delete dir="QA/ext" />
+    <delete dir="QA/sapi" />
+    <delete dir="QA/tests" />
+    <delete dir="QA/Zend" />
+    <delete>
+       <fileset dir="phpt-tests" includes="*.out" />
+       <fileset dir="phpt-tests" includes="*.exp" />
+       <fileset dir="phpt-tests" includes="*.diff" />
+       <fileset dir="phpt-tests" includes="*.log" />
+       <fileset dir="phpt-tests" includes="*.sh" />
+       <fileset dir="phpt-tests" includes="*.post" />
+       <fileset dir="phpt-tests" includes="*.php" />
+    </delete>
+  </target>
+
+  <target name="qa" depends="lint, test, coverage, compare, doc" 
description="Perform quality assurance.">
+  </target>
+  
+  <target name="doc" description="Create API documentation in _docs/html/.">
+    <delete dir="_docs" />
+    <exec command="doxygen" checkReturn="true"/>
+  </target>
+
+  <target name="lint" description="Lint check all PHP files.">
+    <phplint haltonfailure="true">
+      <fileset dir="src">
+        <include name="*.php"/>
+        <include name="**/*.php"/>
+      </fileset>
+    </phplint>
+  </target>
+
+  <target name="test" description="Run all unit tests.">
+    <delete dir="_coverage" />
+    <exec command="phpunit tests" passthru="true" checkReturn="true"/>
+  </target>
+
+  <target name="coverage" description="Create code coverage report in 
_coverage.">
+    <delete dir="_coverage" />
+    <exec command="phpunit --coverage-html _coverage tests" />
+  </target>
+
+  <target name="compare" description="Old/New comparison of phpt results.">
+    <fail unless="php" message="Path to standard PHP executable not defined, 
use -Dphp=/path/to/php" />
+    <fail unless="php_to_test" message="Path to test PHP source dir not 
defined, use -Dphp_to_test=/path/to/php/to/test" />
+    <fail unless="php_source" message="Path to test PHP source dir not 
defined, use -Dphp_to_test=/path/to/php_source_dir" />
+
+
+    <delete dir="_compare" />
+    <mkdir dir="_compare" />
+
+    <delete dir="${temp_directory}/phpruntests" />
+    <mkdir dir="${temp_directory}/phpruntests" />
+
+    <echo msg="Copying QATESTS tar file to temporary directory" />
+
+    <copy file="${project.basedir}/QA/QATESTS.tgz" 
tofile="${temp_directory}/phpruntests/QATESTS.tgz" />
+
+    <echo msg="Extracting QATESTS.." />
+
+    <exec command="tar xfz QATESTS.tgz" dir="${temp_directory}/phpruntests" />
+
+    <echo msg="Running the tests using standard (old) run-tests.php.." />
+
+    <exec command="${php} -n ${php_source}/run-tests.php -n -p ${php_to_test} 
${temp_directory}/phpruntests/Zend ${temp_directory}/phpruntests/ext 
${temp_directory}/phpruntests/sapi ${temp_directory}/phpruntests/tests > 
${project.basedir}/_compare/old.out" dir="${temp_directory}/phpruntests" 
passthru="true" checkReturn="true"/>
+
+    <echo msg="Running the tests using new run-tests.php.." />
+
+    <exec command="${php} -n ${project.basedir}/src/run-tests.php -n -p 
${php_to_test} -o csv -s ${project.basedir}/_compare/new.out 
${temp_directory}/phpruntests" dir="${temp_directory}/phpruntests" 
passthru="true" checkReturn="true" />
+    
+    <echo msg="Comparing the results from new and old runs" />
+
+    <exec command="${php} -n QA/compareNewOld.php 
${project.basedir}/_compare/new.out ${project.basedir}/_compare/old.out 
phpruntests > ${project.basedir}/_compare/compare_new_old.out" 
dir="${project.basedir}" passthru="true" checkReturn="true"/>
+    
+
+  </target>
+
+  <target name="sniff" description="Run all PHP_CodeSniffer sniffs.">
+    <delete dir="_sniff" />
+    <mkdir dir="_sniff" />
+    
+    <exec command="phpcs -n --extensions=php --report=full src > 
${project.basedir}/_sniff/sniff.out" passthru="true"/>
+  </target>
+
+  <target name="phar" description="Build run-tests.phar file">
+     <exec command="${phpphar} ${project.basedir}/build/buildPhar.php 
${project.basedir}/src ${project.basedir}/build_output" passthru="true" />
+  </target>
+
+</project>
diff --git a/build/buildPhar.php b/build/buildPhar.php
new file mode 100644
index 0000000..67cef44
--- /dev/null
+++ b/build/buildPhar.php
@@ -0,0 +1,14 @@
+<?php
+
+$srcRoot = $argv[1];
+$targetRoot = $argv[2]; 
+
+$targetname = $targetRoot . "/run-tests.phar";
+
+if(file_exists($targetname)) {
+    unlink($targetname);
+}
+$phar = new Phar($targetname, FilesystemIterator::CURRENT_AS_FILEINFO| 
FilesystemIterator::KEY_AS_FILENAME, "run-tests.phar");
+$phar->setStub($phar->createDefaultStub("run-tests.php"));
+$phar->buildFromDirectory($srcRoot,'/\.php$|\.txt$/');
+?>
diff --git a/build/phpdefinitions.txt_sample b/build/phpdefinitions.txt_sample
new file mode 100644
index 0000000..5cf6d34
--- /dev/null
+++ b/build/phpdefinitions.txt_sample
@@ -0,0 +1,27 @@
+# This file is used as a phing property file and is also read by 
rtTestBoootstrap.php to determine which 
+# PHP exectables to use in running unit tests
+
+#These are example settings, you will change them to the right paths on your 
system
+#then copy this to phpdefinitions.txt
+#
+#The version of PHP that you are using to run unit tests 
+php=/usr/local/php540naked/bin/php
+#
+#The version of PHP that you intend to test
+php_to_test=/usr/local/php5xx/bin/php
+#
+#The version of PHP CGI that you intend to test
+php_cgi_to_test=/usr/local/php5xx/bin/php-cgi
+#
+#The version of PHP that you are using to build the phar file. NB php.ini must 
have phar.readonly = 0;
+phpphar=/usr/bin/php
+#
+#If  the versions of PHP that you intent to test have NOT been 
+#built --with-zlib, put zlib=0 on the next line. 
+zlib=1
+#
+#The location of a copy run-tests.php for running comparison results (qa 
target)
+php_source=/Users/zoe/Workspaces/php-src
+#
+#Temporary (writable) directory - also used buy qa target
+temp_directory=/tmp
diff --git a/phpdefinitions.txt_sample b/phpdefinitions.txt_sample
deleted file mode 100644
index 3363812..0000000
--- a/phpdefinitions.txt_sample
+++ /dev/null
@@ -1,24 +0,0 @@
-# This file is used as a phing property file and is also read by 
rtTestBoootstrap.php to determine which 
-# PHP exectables to use in running unit tests
-
-#These are example settings, you will change them to the right paths on your 
system
-#then copy this to phpdefinitions.txt
-#
-#The version of PHP that you are using to run unit tests 
-php=/usr/local/php540naked/bin/php
-#
-#The version of PHP that you intend to test
-php_to_test=/usr/local/php5xx/bin/php
-#
-#The version of PHP CGI that you intend to test
-php_cgi_to_test=/usr/local/php5xx/bin/php-cgi
-#
-#If  the versions of PHP that you intent to test have NOT been 
-#built --with-zlib, put zlib=0 on the next line. 
-zlib=1
-#
-#The location of a copy run-tests.php for running comparison results (qa 
target)
-php_source=/Users/zoe/Workspaces/php-src
-#
-#Temporary (writable) directory - also used buy qa target
-temp_directory=/tmp
diff --git a/src/configuration/settings/rtTestDirectorySetting.php 
b/src/configuration/settings/rtTestDirectorySetting.php
index f2cce9f..690e491 100644
--- a/src/configuration/settings/rtTestDirectorySetting.php
+++ b/src/configuration/settings/rtTestDirectorySetting.php
@@ -29,6 +29,17 @@ class rtTestDirectorySetting extends rtSetting
     public function init(rtRuntestsConfiguration $configuration)
     {
         $fileArray = $configuration->getTestFilename();
+        
+        //phar does not understand relative paths, so if we have just given a 
relative path from the
+        //currrent working directory phar will not find the file. Here, if the 
file does not exist 
+        //but a file with cwd prepended does, we reset the name with the cwd 
prepend.
+        for ($i=0; $i<count($fileArray); $i++) {
+               if(!file_exists($fileArray[$i])) {
+                       
if(file_exists($configuration->getSetting('CurrentDirectory') . '/' . 
$fileArray[$i]))
+                       $fileArray[$i] = 
$configuration->getSetting('CurrentDirectory') . '/' . $fileArray[$i];
+               }
+        }
+        
 
         foreach ($fileArray as $file) {
             if (is_dir($file)) {
diff --git a/src/configuration/settings/rtTestFileSetting.php 
b/src/configuration/settings/rtTestFileSetting.php
index d6e747f..bdf80da 100644
--- a/src/configuration/settings/rtTestFileSetting.php
+++ b/src/configuration/settings/rtTestFileSetting.php
@@ -29,6 +29,18 @@ class rtTestFileSetting extends rtSetting
     public function init(rtRuntestsConfiguration $configuration)
     {
         $fileArray = $configuration->getTestFilename();
+        
+        //phar does not understand relative paths, so if we have just given a 
relative path from the
+        //currrent working directory phar will not find the file. Here, if the 
file does not exist 
+        //but a file with cwd prepended does, we reset the name with the cwd 
prepend.
+        //TODO: If this only applies to phar is there a better way? 
+        
+       for ($i=0; $i<count($fileArray); $i++) {
+               if(!file_exists($fileArray[$i])) {
+                       
if(file_exists($configuration->getSetting('CurrentDirectory') . '/' . 
$fileArray[$i]))
+                       $fileArray[$i] = 
$configuration->getSetting('CurrentDirectory') . '/' . $fileArray[$i];
+               }
+        }
 
         foreach ($fileArray as $fn) {
             if (!is_dir($fn) && substr($fn, -5) == ".phpt") {
diff --git a/src/testrun/rtPhpTestRun.php b/src/testrun/rtPhpTestRun.php
index 8b4c358..d42094c 100644
--- a/src/testrun/rtPhpTestRun.php
+++ b/src/testrun/rtPhpTestRun.php
@@ -64,6 +64,7 @@ class rtPhpTestRun
                
                //Set reporting option
                $this->setReportStatus();
+               
 
         /*
          * Main decision point. Either we start this with a directory (or set 
of directories, in which case tests are 
@@ -194,8 +195,8 @@ class rtPhpTestRun
                //This section deals with running single test cases, or lists 
of test cases.
 
                foreach ($testNames as $testName) {
-
-                       if (!file_exists($testName)) {
+            
+                       if (!file_exists($testName)) {                          
                                echo rtText::get('invalidTestFileName', 
array($testName));
                                exit();
                        }
@@ -240,6 +241,8 @@ class rtPhpTestRun
        }
        
        public function buildSubDirectoryList($testDirectories){
+               
+            
        $subDirectories = array();
                foreach ($testDirectories as $testDirectory) {
                        $subDirectories = array_merge($subDirectories, 
rtUtil::parseDir($testDirectory));
diff --git a/tests/rtTestBootstrap.php b/tests/rtTestBootstrap.php
index 2e2d90f..7251a61 100644
--- a/tests/rtTestBootstrap.php
+++ b/tests/rtTestBootstrap.php
@@ -5,8 +5,8 @@ require_once __DIR__ . '/../src/rtAutoload.php';
 /**
  * Check to see if the PHP and CGI executables are in a config file
  */
-if(file_exists(__DIR__ . '/../phpdefinitions.txt')) {
-       $phpdefs=file(__DIR__ . '/../phpdefinitions.txt');
+if(file_exists(__DIR__ . '/../build/phpdefinitions.txt')) {
+       $phpdefs=file(__DIR__ . '/../build/phpdefinitions.txt');
        foreach($phpdefs as $line) {
                if(preg_match('/^php_to_test=(.*)/', $line, $matches)) {
          define('RT_PHP_PATH', trim($matches[1]));
@@ -19,6 +19,6 @@ if(file_exists(__DIR__ . '/../phpdefinitions.txt')) {
                }
        }
 } else {
-       echo "You must provide PHP versions in phpdefinitions.txt\n";
+       echo "You must provide PHP versions in build/phpdefinitions.txt\n";
 }
 ?>
-- 
PHP Quality Assurance Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to