now we're brave!
authorMichael Wallner <mike@php.net>
Thu, 30 Jul 2015 15:37:28 +0000 (17:37 +0200)
committerMichael Wallner <mike@php.net>
Thu, 30 Jul 2015 15:37:28 +0000 (17:37 +0200)
.travis.yml
gen_travis_yml.php [new file with mode: 0755]
tests/_setup.inc
tests/lob001.phpt
tests/lob002.phpt
tests/lob004.phpt
travis/pecl/Makefile [new file with mode: 0644]
travis/pecl/gen-matrix.php [new file with mode: 0644]
travis/pecl/php-version.php [new file with mode: 0644]

index 2843f3c1eb22939eb6a18814a78dc30959e04dbc..0f5f740e5091f895798bac455b71b47fa25adc9a 100644 (file)
@@ -1,62 +1,44 @@
 # autogenerated file; do not edit
 language: c
 
-env:
-    global:
-        - BUILD_SRC_DIR=/src
-        - BUILD_INSTALL_DIR=/install
-        - PHP_EXTENSIONS="--enable-json --with-mhash"
-        - PG_TEST_DB_NAME=pq_test
-        - PG_TEST_DB_USER=postgres
-        - REPORT_EXIT_STATUS=1
+addons:
+ postgresql: 9.4
 
-matrix:
-    include:
-        - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS=""
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-debug"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS=""
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-debug"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS=""
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-debug"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
-        - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts"
-          addons:
-              postgresql: 9.4
+env:
+ global:
+  - PQ_DSN="postgres://postgres@localhost/test"
+ matrix:
+  - PHP=5.4 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.5 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.6 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.4 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.5 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.6 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes
+  - PHP=5.4 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.5 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.6 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.4 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.5 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.6 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes
+  - PHP=5.4 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.5 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.6 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.4 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.5 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.6 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes
+  - PHP=5.4 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes
+  - PHP=5.5 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes
+  - PHP=5.6 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes
+  - PHP=5.4 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes
+  - PHP=5.5 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes
+  - PHP=5.6 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes
 
 before_script:
-    - ./travis/compile-php.sh
-    - ./travis/compile-ext-raphf.sh
-    - ./travis/compile-ext-pq.sh
-    - ./travis/configure-postgres.sh
-    - $HOME$BUILD_INSTALL_DIR/bin/php --ri pq 
+ - make -f travis/pecl/Makefile php
+ - make -f travis/pecl/Makefile pecl PECL=raphf
+ - make -f travis/pecl/Makefile ext PECL=pq
 
 script:
-    - $HOME$BUILD_INSTALL_DIR/bin/php ./run-tests.php -q -p $HOME$BUILD_INSTALL_DIR/bin/php --show-diff
+ - make -f travis/pecl/Makefile test
 
 sudo: false
diff --git a/gen_travis_yml.php b/gen_travis_yml.php
new file mode 100755 (executable)
index 0000000..8473159
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env php
+# autogenerated file; do not edit
+language: c
+
+addons:
+ postgresql: 9.4
+
+env:
+ global:
+  - PQ_DSN="postgres://postgres@localhost/test"
+ matrix:
+<?php
+
+$gen = include "./travis/pecl/gen-matrix.php";
+$env = $gen([
+       "PHP" => ["5.4", "5.5", "5.6"],
+       "enable_debug",
+       "enable_maintainer_zts",
+       "enable_json",
+       "enable_hash" => ["yes"],
+]);
+foreach ($env as $e) {
+       printf("  - %s\n", $e);
+}
+
+?>
+
+before_script:
+ - make -f travis/pecl/Makefile php
+ - make -f travis/pecl/Makefile pecl PECL=raphf
+ - make -f travis/pecl/Makefile ext PECL=pq
+
+script:
+ - make -f travis/pecl/Makefile test
+
+sudo: false
index d4b5c118abebd1cbe930151ef84595cdee1c84f9..53a17e31e90ca9a9c54ad2957748c1f897003e0c 100644 (file)
@@ -1,2 +1,2 @@
 <?php
-define("PQ_DSN", "host=localhost");
+define("PQ_DSN", getenv("PQ_DSN") ?: "host=localhost");
index 990d6f02a774e7df01f94afa845ce6e4985e35d9..19587e1e2d37c15eb458d0c358c13adbc79f8799 100644 (file)
@@ -20,7 +20,7 @@ var_dump($lob->tell());
 
 $lob->seek(0, SEEK_SET);
 $dat = $lob->read(filesize(__FILE__));
-var_dump(hash("md5", $dat)==hash_file("md5", __FILE__));
+var_dump(md5($dat)===md5_file(__FILE__));
 
 $lob->truncate(5);
 
@@ -35,7 +35,7 @@ DONE
 --EXPECTF--
 Test
 bool(true)
-int(489)
+int(474)
 bool(true)
 string(5) "%c?php"
 DONE
index e2fd056d6f5980913eb9928f0612b9f8c91673a9..3625d8954872f192a9d5ab7399721dd71e88ce85 100644 (file)
@@ -17,7 +17,7 @@ var_dump(ftell($lob->stream));
 
 fseek($lob->stream, 0, SEEK_SET);
 $dat = fread($lob->stream, filesize(__FILE__));
-var_dump(hash("md5", $dat)==hash_file("md5", __FILE__));
+var_dump(md5($dat)===md5_file(__FILE__));
 
 ftruncate($lob->stream, 5);
 
@@ -31,7 +31,7 @@ $t->unlinkLOB($lob->oid);
 DONE
 --EXPECTF--
 Test
-int(503)
+int(488)
 bool(true)
 
 Warning: ftruncate(): Can't truncate this stream! in %s on line %d
index df0d3856bec338c376552c73d7795d642db37fd5..bfa4a573f653011589df9ed98d1470ac3b1a38d1 100644 (file)
@@ -2,8 +2,8 @@
 large object import/export 
 --SKIPIF--
 <?php include "_skipif.inc"; ?>
---CLEANUP--
-rm lob004.tmp
+--CLEAN--
+<?php unlink("lob004.tmp"); ?>
 --FILE--
 <?php
 echo "Test\n";
@@ -17,7 +17,7 @@ $oid = $t->importLOB(__FILE__);
 var_dump($oid);
 $t->exportLOB($oid, "lob004.tmp");
 
-var_dump(hash_file("md5",__FILE__)===hash_file("md5","lob004.tmp"));
+var_dump(md5_file(__FILE__)===md5_file("lob004.tmp"));
 
 ?>
 DONE
diff --git a/travis/pecl/Makefile b/travis/pecl/Makefile
new file mode 100644 (file)
index 0000000..a338a5d
--- /dev/null
@@ -0,0 +1,97 @@
+export
+
+PHP = 5.6
+JOBS ?= 2
+PHP_MIRROR ?= http://us1.php.net/distributions/
+
+prefix ?= $(HOME)
+exec_prefix ?= $(prefix)
+bindir = $(exec_prefix)/bin
+srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
+
+enable_maintainer_zts ?= no
+enable_debug ?= no
+enable_all ?= no
+with_config_file_scan_dir ?= $(prefix)/etc/php.d
+
+with_php_config ?= $(bindir)/php-config
+extdir = $(shell $(with_php_config) --extension-dir 2>/dev/null)
+
+PECL_MIRROR ?= http://pecl.php.net/get/
+PECL_EXTENSION ?= $(shell cut -d: -f1 <<<"$(PECL)")
+PECL_SONAME ?= $(if $(shell cut -d: -f2 <<<"$(PECL)"),$(shell cut -d: -f2 <<<"$(PECL)"),$(PECL_EXTENSION))
+PECL_VERSION ?= $(shell cut -d: -f3 -s <<<"$(PECL)")
+PECL_INI = $(with_config_file_scan_dir)/pecl.ini
+
+PHP_VERSION ?= $(shell php $(srcdir)/php-version.php $(PHP) < php-versions.json)
+
+.PHONY: all php check clean reconf pecl ext test
+.SUFFIXES:
+
+all: php
+
+## -- PHP
+
+clean:
+       @if test -d $(srcdir)/php-$(PHP_VERSION); then cd $(srcdir)/php-$(PHP_VERSION); make distclean || true; done
+
+check: $(srcdir)/php-versions.json
+       @if test -z "$(PHP)"; then echo "No php version specified, e.g. PHP=5.6"; exit 1; fi
+
+reconf: check $(srcdir)/php-$(PHP_VERSION)/configure
+       cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix)
+
+php: check $(bindir)/php
+
+$(srcdir)/php-versions.json: $(srcdir)/php-version.php
+       curl -Sso $@ http://php.net/releases/active.php
+
+$(srcdir)/php-$(PHP_VERSION)/configure: | $(srcdir)/php-versions.json
+       curl -Ss $(PHP_MIRROR)/php-$(PHP_VERSION).tar.bz2 | tar xj -C $(srcdir)
+
+$(srcdir)/php-$(PHP_VERSION)/Makefile: $(srcdir)/php-$(PHP_VERSION)/configure | $(srcdir)/php-versions.json
+       cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix)
+
+$(srcdir)/php-$(PHP_VERSION)/sapi/cli/php: $(srcdir)/php-$(PHP_VERSION)/Makefile | $(srcdir)/php-versions.json
+       cd $(srcdir)/php-$(PHP_VERSION) && make -s -j $(JOBS) V=0 || make
+
+$(bindir)/php: $(srcdir)/php-$(PHP_VERSION)/sapi/cli/php | $(srcdir)/php-versions.json
+       cd $(srcdir)/php-$(PHP_VERSION) && make -s install V=0
+
+$(with_config_file_scan_dir):
+       mkdir -p $@
+
+## -- PECL
+
+pecl-check:
+       @if test -z "$(PECL)"; then echo "No pecl extension specified, e.g. PECL=pecl_http:http"; exit 1; fi
+
+$(PECL_INI): | $(with_config_file_scan_dir)
+       touch $@
+
+$(srcdir)/pecl-$(PECL_EXTENSION):
+       test -e $@ || ln -s $(CURDIR) $@
+
+$(srcdir)/pecl-$(PECL_EXTENSION)/config.m4:
+       mkdir -p $(srcdir)/pecl-$(PECL_EXTENSION)
+       curl -Ss $(PECL_MIRROR)/$(PECL_EXTENSION)$(if $(PECL_VERSION),/$(PECL_VERSION)) | tar xz --strip-components 1 -C $(srcdir)/pecl-$(PECL_EXTENSION)
+
+$(srcdir)/pecl-$(PECL_EXTENSION)/configure: $(srcdir)/pecl-$(PECL_EXTENSION)/config.m4
+       cd $(srcdir)/pecl-$(PECL_EXTENSION) && $(bindir)/phpize
+
+$(srcdir)/pecl-$(PECL_EXTENSION)/Makefile: $(srcdir)/pecl-$(PECL_EXTENSION)/configure
+       cd $(srcdir)/pecl-$(PECL_EXTENSION) && ./configure -C
+
+$(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/Makefile
+       cd $(srcdir)/pecl-$(PECL_EXTENSION) && make -s -j $(JOBS) V=0 || make
+       
+$(extdir)/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so
+       cd $(srcdir)/pecl-$(PECL_EXTENSION) && make -s install V=0
+               
+pecl: pecl-check php $(extdir)/$(PECL_SONAME).so | $(PECL_INI)
+       grep -q extension=$(PECL_SONAME).so $(PECL_INI) || echo extension=$(PECL_SONAME).so >> $(PECL_INI)
+
+ext: pecl-check $(srcdir)/pecl-$(PECL_EXTENSION) pecl
+
+test: php
+       REPORT_EXIT_STATUS=1 NO_INTERACTION=1 $(bindir)/php run-tests.php -p $(bindir)/php --show-diff tests
diff --git a/travis/pecl/gen-matrix.php b/travis/pecl/gen-matrix.php
new file mode 100644 (file)
index 0000000..90e0011
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+return function ($array) {
+       foreach ($array as $key => $values) {
+               if (is_numeric($key) && is_string($values)) {
+                       $key = $values;
+                       $values = ["no","yes"];
+               }
+               if (empty($apc)) {
+                       // seed
+                       foreach ($values as $val) {
+                               $apc[] = "$key=$val";
+                       }
+               } else {
+                       // combine
+                       $cpc = $apc;
+                       $apc = [];
+                       foreach ($values as $val) {
+                               foreach ($cpc as $e) {
+                                       $apc[] = "$e $key=$val";
+                               }
+                       }
+               }
+       }
+       return $apc;
+};
diff --git a/travis/pecl/php-version.php b/travis/pecl/php-version.php
new file mode 100644 (file)
index 0000000..761f09a
--- /dev/null
@@ -0,0 +1,10 @@
+<?php 
+
+$version = $argv[1];
+$versions = json_decode(stream_get_contents(STDIN), 1);
+
+list($major) = explode(".", $version, 2);
+
+if (isset($versions[$major][$version])) {
+       printf("%s\n", $versions[$major][$version]["version"]);
+}