summaryrefslogtreecommitdiff
path: root/ext/pdo_odbc/tests/common.phpt
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-03-14 05:42:27 +0000
committer <>2013-04-03 16:25:08 +0000
commitc4dd7a1a684490673e25aaf4fabec5df138854c4 (patch)
tree4d57c44caae4480efff02b90b9be86f44bf25409 /ext/pdo_odbc/tests/common.phpt
downloadphp2-master.tar.gz
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/pdo_odbc/tests/common.phpt')
-rw-r--r--ext/pdo_odbc/tests/common.phpt77
1 files changed, 77 insertions, 0 deletions
diff --git a/ext/pdo_odbc/tests/common.phpt b/ext/pdo_odbc/tests/common.phpt
new file mode 100644
index 0000000..276f2b7
--- /dev/null
+++ b/ext/pdo_odbc/tests/common.phpt
@@ -0,0 +1,77 @@
+--TEST--
+ODBC
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo_odbc')) print 'skip';
+if (substr(PHP_OS, 0, 3) == 'WIN' &&
+ false === getenv('PDOTEST_DSN') &&
+ false === getenv('PDO_ODBC_TEST_DSN') &&
+ !extension_loaded('com_dotnet')) {
+ die('skip - either PDOTEST_DSN or com_dotnet extension is needed to setup the connection');
+}
+--REDIRECTTEST--
+# magic auto-configuration
+
+$config = array(
+ 'TESTS' => 'ext/pdo/tests',
+ 'ENV' => array()
+);
+
+// try loading PDO driver using ENV vars and if none given, and on Windows, try using MS Access
+// and if not, skip the test
+//
+// try to use common PDO env vars, instead of PDO_ODBC specific
+if (false !== getenv('PDOTEST_DSN')) {
+ // user should have to set PDOTEST_DSN so that:
+ // 1. test is skipped if user doesn't want to test it, even if they have MS Access installed
+ // 2. it detects if ODBC driver is not installed - to avoid test bug
+ // 3. it detects if ODBC driver is installed - so test will be run
+ // 4. so a specific ODBC driver can be tested - if system has multiple ODBC drivers
+
+ $config['ENV']['PDOTEST_DSN'] = getenv('PDOTEST_DSN');
+ $config['ENV']['PDOTEST_USER'] = getenv('PDOTEST_USER');
+ $config['ENV']['PDOTEST_PASS'] = getenv('PDOTEST_PASS');
+ if (false !== getenv('PDOTEST_ATTR')) {
+ $config['ENV']['PDOTEST_ATTR'] = getenv('PDOTEST_ATTR');
+ }
+} else if (false !== getenv('PDO_ODBC_TEST_DSN')) {
+ // user set these from their shell instead
+ $config['ENV']['PDOTEST_DSN'] = getenv('PDO_ODBC_TEST_DSN');
+ $config['ENV']['PDOTEST_USER'] = getenv('PDO_ODBC_TEST_USER');
+ $config['ENV']['PDOTEST_PASS'] = getenv('PDO_ODBC_TEST_PASS');
+ if (false !== getenv('PDO_ODBC_TEST_ATTR')) {
+ $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_ODBC_TEST_ATTR');
+ }
+} elseif (preg_match('/^WIN/i', PHP_OS)) {
+ // on Windows and user didn't set PDOTEST_DSN, try this as a fallback:
+ // check if MS Access DB is installed, and if yes, try using it. create a temporary MS access database.
+ //
+ $path = realpath(dirname(__FILE__)) . '\pdo_odbc.mdb';
+ if (!file_exists($path)) {
+ try {
+ // try to create database
+ $adox = new COM('ADOX.Catalog');
+ $adox->Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' . $path);
+ $adox = null;
+
+ } catch (Exception $e) {
+ }
+ }
+ if (file_exists($path)) {
+ // database was created and written to file system
+ $config['ENV']['PDOTEST_DSN'] = "odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$path;Uid=Admin";
+ } // else: $config['ENV']['PDOTEST_DSN'] not set
+} // else: $config['ENV']['PDOTEST_DSN'] not set
+// test will be skipped. see SKIPIF section of long_columns.phpt
+
+# other magic autodetection here, eg: for DB2 by inspecting env
+/*
+$USER = 'db2inst1';
+$PASSWD = 'ibmdb2';
+$DBNAME = 'SAMPLE';
+
+$CONNECTION = "odbc:DSN=$DBNAME;UID=$USER;PWD=$PASSWD;";
+*/
+
+
+return $config;