12 changed files with 528 additions and 252 deletions
@ -0,0 +1,332 @@
|
||||
<?php |
||||
if ( ! function_exists('glob_recursive')) |
||||
{ |
||||
// Does not support flag GLOB_BRACE |
||||
function glob_recursive($pattern, $flags = 0) |
||||
{ |
||||
$files = glob($pattern, $flags); |
||||
|
||||
foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) |
||||
{ |
||||
$files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags)); |
||||
} |
||||
|
||||
return $files; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* This is project's console commands configuration for Robo task runner. |
||||
* |
||||
* @see http://robo.li/ |
||||
*/ |
||||
class RoboFile extends \Robo\Tasks { |
||||
|
||||
/** |
||||
* Directories used by analysis tools |
||||
* |
||||
* @var array |
||||
*/ |
||||
protected $taskDirs = [ |
||||
'build/logs', |
||||
'build/pdepend', |
||||
'build/phpdox', |
||||
]; |
||||
|
||||
/** |
||||
* Directories to remove with the clean task |
||||
* |
||||
* @var array |
||||
*/ |
||||
protected $cleanDirs = [ |
||||
'coverage', |
||||
'docs', |
||||
'phpdoc', |
||||
'build/logs', |
||||
'build/phpdox', |
||||
'build/pdepend' |
||||
]; |
||||
|
||||
|
||||
/** |
||||
* Do static analysis tasks |
||||
*/ |
||||
public function analyze() |
||||
{ |
||||
$this->prepare(); |
||||
$this->lint(); |
||||
$this->phploc(TRUE); |
||||
$this->phpcs(TRUE); |
||||
$this->dependencyReport(); |
||||
$this->phpcpdReport(); |
||||
} |
||||
|
||||
/** |
||||
* Run all tests, generate coverage, generate docs, generate code statistics |
||||
*/ |
||||
public function build() |
||||
{ |
||||
$this->analyze(); |
||||
$this->coverage(); |
||||
$this->docs(); |
||||
} |
||||
|
||||
/** |
||||
* Cleanup temporary files |
||||
*/ |
||||
public function clean() |
||||
{ |
||||
$cleanFiles = [ |
||||
'build/humbug.json', |
||||
'build/humbug-log.txt', |
||||
]; |
||||
array_map(function ($file) { |
||||
@unlink($file); |
||||
}, $cleanFiles); |
||||
|
||||
// So the task doesn't complain, |
||||
// make any 'missing' dirs to cleanup |
||||
array_map(function ($dir) { |
||||
if ( ! is_dir($dir)) |
||||
{ |
||||
`mkdir -p {$dir}`; |
||||
} |
||||
}, $this->cleanDirs); |
||||
|
||||
$this->_cleanDir($this->cleanDirs); |
||||
$this->_deleteDir($this->cleanDirs); |
||||
} |
||||
|
||||
/** |
||||
* Run unit tests and generate coverage reports |
||||
*/ |
||||
public function coverage() |
||||
{ |
||||
$this->taskPhpUnit() |
||||
->configFile('build/phpunit.xml') |
||||
->printed(true) |
||||
->run(); |
||||
} |
||||
|
||||
/** |
||||
* Generate documentation with phpdox |
||||
*/ |
||||
public function docs() |
||||
{ |
||||
$cmd_parts = [ |
||||
'cd build', |
||||
'../vendor/bin/phpdox', |
||||
'cd ..' |
||||
]; |
||||
$this->_run($cmd_parts, ' && '); |
||||
} |
||||
|
||||
/** |
||||
* Verify that source files are valid |
||||
*/ |
||||
public function lint() |
||||
{ |
||||
$files = $this->getAllSourceFiles(); |
||||
|
||||
$chunks = array_chunk($files, (int)`getconf _NPROCESSORS_ONLN`); |
||||
|
||||
foreach($chunks as $chunk) |
||||
{ |
||||
$this->parallelLint($chunk); |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Run mutation tests with humbug |
||||
* |
||||
* @param bool $stats - if true, generates stats rather than running mutation tests |
||||
*/ |
||||
public function mutate($stats = FALSE) |
||||
{ |
||||
$test_parts = [ |
||||
'vendor/bin/humbug' |
||||
]; |
||||
|
||||
$stat_parts = [ |
||||
'vendor/bin/humbug', |
||||
'--skip-killed=yes', |
||||
'-v', |
||||
'./build/humbug.json' |
||||
]; |
||||
|
||||
$cmd_parts = ($stats) ? $stat_parts : $test_parts; |
||||
$this->_run($cmd_parts); |
||||
} |
||||
|
||||
/** |
||||
* Run the phpcs tool |
||||
* |
||||
* @param bool $report - if true, generates reports instead of direct output |
||||
*/ |
||||
public function phpcs($report = FALSE) |
||||
{ |
||||
$dir = __DIR__; |
||||
|
||||
$report_cmd_parts = [ |
||||
'vendor/bin/phpcs', |
||||
"--standard=./build/CodeIgniter", |
||||
"--report-checkstyle=./build/logs/phpcs.xml", |
||||
]; |
||||
|
||||
$normal_cmd_parts = [ |
||||
'vendor/bin/phpcs', |
||||
"--standard=./build/CodeIgniter", |
||||
]; |
||||
|
||||
$cmd_parts = ($report) ? $report_cmd_parts : $normal_cmd_parts; |
||||
|
||||
$this->_run($cmd_parts); |
||||
} |
||||
|
||||
/** |
||||
* Run the phploc tool |
||||
* |
||||
* @param bool $report - if true, generates reports instead of direct output |
||||
*/ |
||||
public function phploc($report = FALSE) |
||||
{ |
||||
// Command for generating reports |
||||
$report_cmd_parts = [ |
||||
'vendor/bin/phploc', |
||||
'--count-tests', |
||||
'--log-csv=build/logs/phploc.csv', |
||||
'--log-xml=build/logs/phploc.xml', |
||||
'src', |
||||
'tests' |
||||
]; |
||||
|
||||
// Command for generating direct output |
||||
$normal_cmd_parts = [ |
||||
'vendor/bin/phploc', |
||||
'--count-tests', |
||||
'src', |
||||
'tests' |
||||
]; |
||||
|
||||
$cmd_parts = ($report) ? $report_cmd_parts : $normal_cmd_parts; |
||||
|
||||
$this->_run($cmd_parts); |
||||
} |
||||
|
||||
/** |
||||
* Create temporary directories |
||||
*/ |
||||
public function prepare() |
||||
{ |
||||
array_map([$this, '_mkdir'], $this->taskDirs); |
||||
} |
||||
|
||||
/** |
||||
* Lint php files and run unit tests |
||||
*/ |
||||
public function test() |
||||
{ |
||||
$this->lint(); |
||||
$this->taskPHPUnit() |
||||
->configFile('phpunit.xml') |
||||
->printed(true) |
||||
->run(); |
||||
} |
||||
|
||||
/** |
||||
* Watches for file updates, and automatically runs appropriate actions |
||||
*/ |
||||
public function watch() |
||||
{ |
||||
$this->taskWatch() |
||||
->monitor('composer.json', function() { |
||||
$this->taskComposerUpdate()->run(); |
||||
}) |
||||
->monitor('src', function () { |
||||
$this->taskExec('test')->run(); |
||||
}) |
||||
->monitor('tests', function () { |
||||
$this->taskExec('test')->run(); |
||||
}) |
||||
->run(); |
||||
} |
||||
|
||||
/** |
||||
* Create pdepend reports |
||||
*/ |
||||
protected function dependencyReport() |
||||
{ |
||||
$cmd_parts = [ |
||||
'vendor/bin/pdepend', |
||||
'--jdepend-xml=build/logs/jdepend.xml', |
||||
'--jdepend-chart=build/pdepend/dependencies.svg', |
||||
'--overview-pyramid=build/pdepend/overview-pyramid.svg', |
||||
'src' |
||||
]; |
||||
$this->_run($cmd_parts); |
||||
} |
||||
|
||||
/** |
||||
* Get the total list of source files, including tests |
||||
* |
||||
* @return array |
||||
*/ |
||||
protected function getAllSourceFiles() |
||||
{ |
||||
$files = array_merge( |
||||
glob_recursive('build/*.php'), |
||||
glob_recursive('src/*.php'), |
||||
glob_recursive('tests/*.php'), |
||||
glob('*.php') |
||||
); |
||||
|
||||
sort($files); |
||||
|
||||
return $files; |
||||
} |
||||
|
||||
/** |
||||
* Run php's linter in one parallel task for the passed chunk |
||||
* |
||||
* @param array $chunk |
||||
*/ |
||||
protected function parallelLint(array $chunk) |
||||
{ |
||||
$task = $this->taskParallelExec() |
||||
->timeout(5) |
||||
->printed(FALSE); |
||||
|
||||
foreach($chunk as $file) |
||||
{ |
||||
$task = $task->process("php -l {$file}"); |
||||
} |
||||
|
||||
$task->run(); |
||||
} |
||||
|
||||
/** |
||||
* Generate copy paste detector report |
||||
*/ |
||||
protected function phpcpdReport() |
||||
{ |
||||
$cmd_parts = [ |
||||
'vendor/bin/phpcpd', |
||||
'--log-pmd build/logs/pmd-cpd.xml', |
||||
'src' |
||||
]; |
||||
$this->_run($cmd_parts); |
||||
} |
||||
|
||||
/** |
||||
* Shortcut for joining an array of command arguments |
||||
* and then running it |
||||
* |
||||
* @param array $cmd_parts - command arguments |
||||
* @param string $join_on - what to join the command arguments with |
||||
*/ |
||||
protected function _run(array $cmd_parts, $join_on = ' ') |
||||
{ |
||||
$this->taskExec(implode($join_on, $cmd_parts))->run(); |
||||
} |
||||
} |
@ -1,56 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Query |
||||
* |
||||
* Free Query Builder / Database Abstraction Layer |
||||
* |
||||
* @package Query |
||||
* @author Timothy J. Warren |
||||
* @copyright Copyright (c) 2012 - 2015 |
||||
* @link https://github.com/aviat4ion/Query |
||||
* @license http://philsturgeon.co.uk/code/dbad-license |
||||
*/ |
||||
|
||||
// -------------------------------------------------------------------------- |
||||
|
||||
/** |
||||
* Autoloader for loading available database classes |
||||
* |
||||
* @package Query |
||||
*/ |
||||
|
||||
namespace Query; |
||||
|
||||
/** |
||||
* Reference to root path |
||||
* @subpackage Core |
||||
*/ |
||||
if ( ! defined('QBASE_PATH')) |
||||
{ |
||||
define('QBASE_PATH', __DIR__.'/src/'); |
||||
} |
||||
/** |
||||
* Path to driver classes |
||||
* @subpackage Core |
||||
*/ |
||||
if ( ! defined('QDRIVER_PATH')) |
||||
{ |
||||
define('QDRIVER_PATH', QBASE_PATH.'drivers/'); |
||||
} |
||||
|
||||
// Require some common functions |
||||
require(QBASE_PATH.'common.php'); |
||||
|
||||
// Load Query Classes |
||||
spl_autoload_register(function ($class) { |
||||
// Load by namespace |
||||
$path = str_replace('\\', DIRECTORY_SEPARATOR, $class); |
||||
$file = QBASE_PATH . "{$path}.php"; |
||||
|
||||
if (file_exists($file)) |
||||
{ |
||||
require_once($file); |
||||
} |
||||
}); |
||||
|
||||
// End of autoload.php |
@ -1,165 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project name="query" default="full-build"> |
||||
<!-- By default, we assume all tools to be on the $PATH --> |
||||
<property name="pdepend" value="pdepend"/> |
||||
<property name="phpcpd" value="phpcpd"/> |
||||
<property name="phpdox" value="phpdox"/> |
||||
<property name="phploc" value="phploc"/> |
||||
<property name="phpmd" value="phpmd"/> |
||||
<property name="phpunit" value="phpunit"/> |
||||
<property name="sonar" value="sonar-runner"/> |
||||
|
||||
<target name="full-build" depends="prepare,static-analysis,phpunit,phpdox,sonar" description="Performs static analysis, runs the tests, and generates project documentation"/> |
||||
<target name="quick-build" depends="prepare,lint,phpunit-no-coverage" description="Performs a lint check and runs the tests (without generating code coverage reports)"/> |
||||
<target name="static-analysis" depends="lint,phploc-ci,pdepend,phpcpd-ci" description="Performs static analysis"/> |
||||
|
||||
<target name="clean" unless="clean.done" description="Cleanup build artifacts"> |
||||
<delete dir="build/api"/> |
||||
<delete dir="build/coverage"/> |
||||
<delete dir="build/logs"/> |
||||
<delete dir="build/pdepend"/> |
||||
<delete dir="build/phpdox"/> |
||||
<property name="clean.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="prepare" unless="prepare.done" depends="clean" description="Prepare for build"> |
||||
<mkdir dir="build/api"/> |
||||
<mkdir dir="build/coverage"/> |
||||
<mkdir dir="build/logs"/> |
||||
<mkdir dir="build/pdepend"/> |
||||
<mkdir dir="build/phpdox"/> |
||||
<property name="prepare.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="lint" unless="lint.done" description="Perform syntax check of sourcecode files"> |
||||
<parallel threadcount="6"> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="src"> |
||||
<include name="*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="src"> |
||||
<include name="Query/*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="src"> |
||||
<include name="Query/Drivers/*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="tests"> |
||||
<include name="*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="tests"> |
||||
<include name="core/*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
<apply executable="php" taskname="lint" passthru="true"> |
||||
<arg value="-l"/> |
||||
|
||||
<fileset dir="tests"> |
||||
<include name="databases/**/*.php"/> |
||||
</fileset> |
||||
</apply> |
||||
</parallel> |
||||
|
||||
<property name="lint.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="phploc" unless="phploc.done" description="Measure project size using PHPLOC and print human readable output. Intended for usage on the command line."> |
||||
<exec executable="${phploc}" taskname="phploc" passthru="true"> |
||||
<arg value="--count-tests"/> |
||||
<arg path="src"/> |
||||
<arg path="tests"/> |
||||
</exec> |
||||
|
||||
<property name="phploc.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="phploc-ci" unless="phploc.done" depends="prepare" description="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."> |
||||
<exec executable="${phploc}" taskname="phploc" passthru="true"> |
||||
<arg value="--count-tests"/> |
||||
<arg value="--log-csv"/> |
||||
<arg path="build/logs/phploc.csv"/> |
||||
<arg value="--log-xml"/> |
||||
<arg path="build/logs/phploc.xml"/> |
||||
<arg path="src"/> |
||||
<arg path="tests"/> |
||||
</exec> |
||||
|
||||
<property name="phploc.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="pdepend" unless="pdepend.done" depends="prepare" description="Calculate software metrics using PHP_Depend and log result in XML format. Intended for usage within a continuous integration environment."> |
||||
<exec executable="${pdepend}" taskname="pdepend" passthru="true"> |
||||
<arg value="--jdepend-xml=build/logs/jdepend.xml"/> |
||||
<arg value="--jdepend-chart=build/pdepend/dependencies.svg"/> |
||||
<arg value="--overview-pyramid=build/pdepend/overview-pyramid.svg"/> |
||||
<arg path="src"/> |
||||
</exec> |
||||
|
||||
<property name="pdepend.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="phpcpd" unless="phpcpd.done" description="Find duplicate code using PHPCPD and print human readable output. Intended for usage on the command line before committing."> |
||||
<exec executable="${phpcpd}" taskname="phpcpd" passthru="true"> |
||||
<arg path="src"/> |
||||
</exec> |
||||
|
||||
<property name="phpcpd.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="phpcpd-ci" unless="phpcpd.done" depends="prepare" description="Find duplicate code using PHPCPD and log result in XML format. Intended for usage within a continuous integration environment."> |
||||
<exec executable="${phpcpd}" taskname="phpcpd" passthru="true"> |
||||
<arg value="--log-pmd"/> |
||||
<arg path="build/logs/pmd-cpd.xml"/> |
||||
<arg path="src"/> |
||||
</exec> |
||||
|
||||
<property name="phpcpd.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="phpunit" unless="phpunit.done" depends="prepare" description="Run unit tests with PHPUnit"> |
||||
<exec executable="${phpunit}" logoutput="true" passthru="true" checkreturn="true" taskname="phpunit"> |
||||
<arg value="--configuration" /> |
||||
<arg path="build/phpunit.xml" /> |
||||
</exec> |
||||
|
||||
<property name="phpunit.done" value="true" /> |
||||
</target> |
||||
|
||||
<target name="phpunit-no-coverage" depends="prepare" unless="phpunit.done" description="Run unit tests with PHPUnit (without generating code coverage reports)"> |
||||
<exec executable="${phpunit}" passthru="true" taskname="phpunit"> |
||||
<arg value="--configuration" /> |
||||
<arg path="build/phpunit.xml" /> |
||||
<arg value="--no-coverage" /> |
||||
</exec> |
||||
|
||||
<property name="phpunit.done" value="true" /> |
||||
</target> |
||||
|
||||
<target name="phpdox" unless="phpdox.done" depends="phploc-ci,phpunit" description="Generate project documentation using phpDox"> |
||||
<exec executable="${phpdox}" dir="build" taskname="phpdox" passthru="true"/> |
||||
|
||||
<property name="phpdox.done" value="true"/> |
||||
</target> |
||||
|
||||
<target name="sonar" depends="phpunit"> |
||||
<exec executable="${sonar}" taskname="sonar" passthru="true"/> |
||||
<property name="sonar.done" value="true"/> |
||||
</target> |
||||
</project> |
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0"?> |
||||
<ruleset name="Tim's Coding Standard"> |
||||
<description>A variation of the CodeIgniter standard</description> |
||||
|
||||
<file>../../src/</file> |
||||
|
||||
<encoding>utf-8</encoding> |
||||
|
||||
<rule ref="Generic.Files.LineEndings"> |
||||
<properties> |
||||
<property name="eolChar" value="\n"/> |
||||
</properties> |
||||
</rule> |
||||
|
||||
<!-- PHP files should OMIT the closing PHP tag --> |
||||
<rule ref="Zend.Files.ClosingTag"/> |
||||
<!-- Always use full PHP opening tags --> |
||||
<rule ref="Generic.PHP.DisallowShortOpenTag"/> |
||||
|
||||
<!-- Constants should always be fully uppercase --> |
||||
<rule ref="Generic.NamingConventions.UpperCaseConstantName"/> |
||||
<!-- TRUE, FALSE, and NULL keywords should always be fully uppercase --> |
||||
<rule ref="Generic.PHP.UpperCaseConstant"/> |
||||
|
||||
<!-- One statement per line --> |
||||
<rule ref="Generic.Formatting.DisallowMultipleStatements"/> |
||||
|
||||
|
||||
|
||||
<!-- Classes and functions should be commented --> |
||||
<rule ref="PEAR.Commenting.ClassComment"> |
||||
<exclude name="PEAR.Commenting.ClassComment.MissingCategoryTag" /> |
||||
<exclude name="PEAR.Commenting.ClassComment.MissingPackageTag" /> |
||||
<exclude name="PEAR.Commenting.ClassComment.MissingAuthorTag" /> |
||||
<exclude name="PEAR.Commenting.ClassComment.MissingLicenseTag" /> |
||||
<exclude name="PEAR.Commenting.ClassComment.MissingLinkTag" /> |
||||
</rule> |
||||
<rule ref="PEAR.Commenting.FunctionComment"> |
||||
<!-- Exclude this sniff because it doesn't understand multiple types --> |
||||
<exclude name="PEAR.Commenting.FunctionComment.MissingParamComment" /> |
||||
<exclude name="PEAR.Commenting.FunctionComment.SpacingAfterParamType" /> |
||||
<exclude name="PEAR.Commenting.FunctionComment.SpacingAfterParamName" /> |
||||
</rule> |
||||
|
||||
<!-- Use warnings for docblock comments for files and variables, since nothing is clearly explained --> |
||||
<rule ref="PEAR.Commenting.FileComment"> |
||||
<exclude name="PEAR.Commenting.FileComment.InvalidVersion" /> |
||||
<exclude name="PEAR.Commenting.FileComment.MissingCategoryTag" /> |
||||
<properties> |
||||
<property name="error" value="false"/> |
||||
</properties> |
||||
</rule> |
||||
|
||||
<rule ref="Squiz.Commenting.FunctionCommentThrowTag"/> |
||||
<rule ref="Squiz.Commenting.VariableComment"> |
||||
<properties> |
||||
<property name="error" value="false"/> |
||||
</properties> |
||||
</rule> |
||||
|
||||
<!-- Use Allman style indenting. With the exception of Class declarations, |
||||
braces are always placed on a line by themselves, and indented at the same level as the control statement that "owns" them. --> |
||||
<rule ref="Generic.Functions.OpeningFunctionBraceBsdAllman"/> |
||||
<rule ref="PEAR.WhiteSpace.ScopeClosingBrace"> |
||||
<exclude name="PEAR.WhiteSpace.ScopeClosingBrace.BreakIndent" /> |
||||
</rule> |
||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing"/> |
||||
|
||||
<!-- Use only short array syntax --> |
||||
<rule ref="Generic.Arrays.DisallowLongArraySyntax" /> |
||||
|
||||
<rule ref="Generic.PHP.ForbiddenFunctions"> |
||||
<properties> |
||||
<property name="forbiddenFunctions" type="array" value="create_function=>null,eval=>null" /> |
||||
</properties> |
||||
</rule> |
||||
|
||||
<!-- Inherit CodeIgniter Rules --> |
||||
<!-- <rule ref="CodeIgniter"> |
||||
<properties> |
||||
<property name="error" value="false" /> |
||||
</properties> |
||||
</rule> --> |
||||
</ruleset> |
@ -0,0 +1,13 @@
|
||||
/** |
||||
* Query |
||||
* |
||||
* SQL Query Builder / Database Abstraction Layer |
||||
* |
||||
* PHP version 5.4 |
||||
* |
||||
* @package Query |
||||
* @author Timothy J. Warren <tim@timshomepage.net> |
||||
* @copyright 2012 - 2015 Timothy J. Warren |
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License |
||||
* @link https://git.timshomepage.net/aviat4ion/Query |
||||
*/ |
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<phpunit |
||||
colors="true" |
||||
stopOnFailure="false" |
||||
bootstrap="tests/bootstrap.php"> |
||||
<filter> |
||||
<whitelist> |
||||
<directory suffix=".php">src</directory> |
||||
<file>autoload.php</file> |
||||
</whitelist> |
||||
</filter> |
||||
<testsuites> |
||||
<testsuite name="CoreTests"> |
||||
<file>tests/core/core_test.php</file> |
||||
<file>tests/core/query_parser_test.php</file> |
||||
<file>tests/core/connection_manager_test.php</file> |
||||
</testsuite> |
||||
<testsuite name="MySQLTests"> |
||||
<file>tests/databases/mysql/MySQLTest.php</file> |
||||
<file>tests/databases/mysql/MySQLQBTest.php</file> |
||||
</testsuite> |
||||
<testsuite name="PgSQLTests"> |
||||
<file>tests/databases/pgsql/PgSQLTest.php</file> |
||||
<file>tests/databases/pgsql/PgSQLQBTest.php</file> |
||||
</testsuite> |
||||
<testsuite name="SQLiteTests"> |
||||
<file>tests/databases/sqlite/SQLiteTest.php</file> |
||||
<file>tests/databases/sqlite/SQLiteQBTest.php</file> |
||||
</testsuite> |
||||
<testsuite name="FirebirdTests"> |
||||
<file>tests/databases/firebird/FirebirdTest.php</file> |
||||
<file>tests/databases/firebird/FirebirdQBTest.php</file> |
||||
</testsuite> |
||||
<!-- <testsuite name="OCITests"> |
||||
<file>tests/databases/oci/OCITest.php</file> |
||||
<file>tests/databases/oci/OCIQBTest.php</file> |
||||
</testsuite> --> |
||||
</testsuites> |
||||
</phpunit> |
Loading…
Reference in new issue