Cleanup a bunch of Simpletest weirdness from the tests

This commit is contained in:
Timothy Warren 2023-03-17 16:00:56 -04:00
parent 282935d9f8
commit 2d80d8ea15
11 changed files with 51 additions and 221 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" beStrictAboutOutputDuringTests="false" colors="true" stopOnFailure="false" bootstrap="./../tests/bootstrap.php" verbose="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" beStrictAboutOutputDuringTests="false" colors="true" stopOnFailure="false" bootstrap="./../tests/bootstrap.php" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd" cacheDirectory=".phpunit.cache">
<coverage> <coverage>
<include> <include>
<directory suffix=".php">./../src/</directory> <directory suffix=".php">./../src/</directory>

View File

@ -32,7 +32,7 @@
"ext-pdo": "*" "ext-pdo": "*"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.4" "phpunit/phpunit": "^10.0.16"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -51,7 +51,7 @@
"build": "tools/vendor/bin/robo build", "build": "tools/vendor/bin/robo build",
"clean": "tools/vendor/bin/robo clean", "clean": "tools/vendor/bin/robo clean",
"docs": "php tools/phpDocumentor run --sourcecode", "docs": "php tools/phpDocumentor run --sourcecode",
"coverage": "phpdbg -qrr -- vendor/bin/phpunit -c build", "coverage": "php -dpcov.enabled=1 -dpcov.directory=. -dpcov.exclude=\"~vendor~\" ./vendor/bin/phpunit -c build",
"pcov": "vendor/bin/phpunit -c build", "pcov": "vendor/bin/phpunit -c build",
"phpstan": "tools/vendor/bin/phpstan analyse -l 3 -c phpstan.neon src tests", "phpstan": "tools/vendor/bin/phpstan analyse -l 3 -c phpstan.neon src tests",
"test": "phpunit -c build --no-coverage" "test": "phpunit -c build --no-coverage"

View File

@ -21,7 +21,7 @@ use Query\QueryBuilderInterface;
/** /**
* Parent Database Test Class * Parent Database Test Class
*/ */
abstract class BaseDriverTest extends TestCase abstract class BaseDriverTest extends BaseTestCase
{ {
/** /**
* @var QueryBuilderInterface|null * @var QueryBuilderInterface|null
@ -80,7 +80,7 @@ abstract class BaseDriverTest extends TestCase
]]; ]];
$keys = self::$db->getFks('testconstraints2'); $keys = self::$db->getFks('testconstraints2');
$this->assertEqual($expected, $keys); $this->assertEquals($expected, $keys);
} }
public function testGetIndexes(): void public function testGetIndexes(): void
@ -119,7 +119,7 @@ abstract class BaseDriverTest extends TestCase
$expected = ['newtable_seq']; $expected = ['newtable_seq'];
$this->assertIsArray($seqs); $this->assertIsArray($seqs);
$this->assertEqual($expected, $seqs); $this->assertEquals($expected, $seqs);
} }
public function testGetProcedures(): void public function testGetProcedures(): void

View File

@ -24,7 +24,7 @@ use Query\QueryBuilderInterface;
/** /**
* Query builder parent test class * Query builder parent test class
*/ */
abstract class BaseQueryBuilderTest extends TestCase abstract class BaseQueryBuilderTest extends BaseTestCase
{ {
/** /**
* @var QueryBuilderInterface|null * @var QueryBuilderInterface|null
@ -91,7 +91,7 @@ abstract class BaseQueryBuilderTest extends TestCase
$query = self::$db->get('test'); $query = self::$db->get('test');
$numrows = count($query->fetchAll(PDO::FETCH_NUM)); $numrows = count($query->fetchAll(PDO::FETCH_NUM));
$this->assertEqual(self::$db->numRows(), $numrows); $this->assertEquals(self::$db->numRows(), $numrows);
} }
public function testGetLimit(): void public function testGetLimit(): void
@ -583,7 +583,7 @@ abstract class BaseQueryBuilderTest extends TestCase
$row = $query->fetch(PDO::FETCH_ASSOC); $row = $query->fetch(PDO::FETCH_ASSOC);
$this->assertIsA($query, 'PDOStatement'); $this->assertIsA($query, 'PDOStatement');
$this->assertEqual([ $this->assertEquals([
'id' => 99, 'id' => 99,
'key' => 84, 'key' => 84,
'val' => 120, 'val' => 120,
@ -647,7 +647,7 @@ abstract class BaseQueryBuilderTest extends TestCase
$this->assertIsA($query, 'PDOStatement'); $this->assertIsA($query, 'PDOStatement');
$row = $query->fetch(PDO::FETCH_ASSOC); $row = $query->fetch(PDO::FETCH_ASSOC);
$this->assertEqual([ $this->assertEquals([
'key' => 'gogle', 'key' => 'gogle',
], $row, json_encode($query->errorInfo())); ], $row, json_encode($query->errorInfo()));
@ -840,6 +840,6 @@ abstract class BaseQueryBuilderTest extends TestCase
])->insert('test'); ])->insert('test');
$res = self::$db->numRows(); $res = self::$db->numRows();
$this->assertEqual(NULL, $res); $this->assertNull($res);
} }
} }

View File

@ -13,35 +13,31 @@
* @link https://git.timshomepage.net/aviat/Query * @link https://git.timshomepage.net/aviat/Query
* @version 4.0.0 * @version 4.0.0
*/ */
namespace Query\Tests; namespace Query\Tests;
use PHPUnit\Framework\TestCase as PHPUnit_TestCase; use PHPUnit\Framework\TestCase;
/** /**
* Base class for TestCases * Base class for TestCases
*/ */
class TestCase extends PHPUnit_TestCase { abstract class BaseTestCase extends TestCase
{
/** /**
* Wrapper for Simpletest's assertEqual * Wrapper for Simpletest's assertEqual
* *
* @param mixed $expected * @param mixed $expected
* @param mixed $actual * @param mixed $actual
* @param string $message
*/ */
public function assertEqual($expected, $actual, $message='') // public function assertEqual($expected, $actual, $message='')
{ // {
$this->assertEquals($expected, $actual, $message); // $this->assertEquals($expected, $actual, $message);
} // }
/** /**
* Wrapper for SimpleTest's assertIsA * Wrapper for SimpleTest's assertIsA
*
* @param mixed $object
* @param string $type
* @param string $message
*/ */
public function assertIsA($object, $type, $message='') public function assertIsA(mixed $object, string $type, string $message='')
{ {
$this->assertTrue(is_a($object, $type), $message); $this->assertTrue(is_a($object, $type), $message);
} }
@ -53,20 +49,20 @@ class TestCase extends PHPUnit_TestCase {
* @param mixed $second * @param mixed $second
* @param string $message * @param string $message
*/ */
public function assertReference($first, $second, $message='') // public function assertReference($first, $second, $message='')
{ // {
if (\is_object($first)) // if (\is_object($first))
{ // {
$res = ($first === $second); // $res = ($first === $second);
} // }
else // else
{ // {
$temp = $first; // $temp = $first;
$first = uniqid('test', TRUE); // $first = uniqid('test', TRUE);
$isRef = ($first === $second); // $isRef = ($first === $second);
$first = $temp; // $first = $temp;
$res = $isRef; // $res = $isRef;
} // }
$this->assertTrue($res, $message); // $this->assertTrue($res, $message);
} // }
} }

View File

@ -19,7 +19,7 @@ namespace Query\Tests;
use DomainException; use DomainException;
use Query\{ConnectionManager, QueryBuilderInterface}; use Query\{ConnectionManager, QueryBuilderInterface};
class ConnectionManagerTest extends TestCase class ConnectionManagerTest extends BaseTestCase
{ {
protected static $instance; protected static $instance;
@ -77,7 +77,7 @@ class ConnectionManagerTest extends TestCase
['foo' => 'bar'], ['foo' => 'bar'],
]; ];
$this->assertEqual($expected, self::$instance->parseParams($params)); $this->assertEquals($expected, self::$instance->parseParams($params));
} }
public function testConnect(): void public function testConnect(): void
@ -94,7 +94,7 @@ class ConnectionManagerTest extends TestCase
$conn = self::$instance->connect($params); $conn = self::$instance->connect($params);
// Check that the connection just made is returned from the get_connection method // Check that the connection just made is returned from the get_connection method
$this->assertEqual($conn, self::$instance->getConnection()); $this->assertEquals($conn, self::$instance->getConnection());
} }
public function testGetConnection(): void public function testGetConnection(): void
@ -111,7 +111,7 @@ class ConnectionManagerTest extends TestCase
$conn = self::$instance->connect($params); $conn = self::$instance->connect($params);
$this->assertEqual($conn, self::$instance->getConnection('conn_manager')); $this->assertEquals($conn, self::$instance->getConnection('conn_manager'));
} }
} }
// End of connection_manager_test.php // End of connection_manager_test.php

View File

@ -22,10 +22,8 @@ use function regexInArray;
/** /**
* CoreTest class - Compatibility and core functionality tests * CoreTest class - Compatibility and core functionality tests
*
* @extends UnitTestCase
*/ */
class CoreTest extends TestCase class CoreTest extends BaseTestCase
{ {
/** /**
* TestHasPDO function. * TestHasPDO function.

View File

@ -79,7 +79,7 @@ INSERT INTO "create_test" ("id","key","val") VALUES (587,1,2);
INSERT INTO "create_test" ("id","key","val") VALUES (999,'''ring''','''sale'''); INSERT INTO "create_test" ("id","key","val") VALUES (999,'''ring''','''sale''');
SQL; SQL;
$expectedArray = explode("\n", $expected); $expectedArray = explode("\n", $expected);
$this->assertEqual($expectedArray, $sqlArray); $this->assertEquals($expectedArray, $sqlArray);
}*/ }*/
public function testBackupStructure(): void public function testBackupStructure(): void
@ -154,7 +154,7 @@ SQL;
$expectedArray = explode("\n", $expected); $expectedArray = explode("\n", $expected);
$resultArray = explode("\n", $sql); $resultArray = explode("\n", $sql);
$this->assertEqual($expectedArray, $resultArray); $this->assertEquals($expectedArray, $resultArray);
} }
public function testDeleteTable(): void public function testDeleteTable(): void
@ -254,7 +254,7 @@ SQL;
public function testGetDBs(): void public function testGetDBs(): void
{ {
$driverSQL = self::$db->getSql()->dbList(); $driverSQL = self::$db->getSql()->dbList();
$this->assertEqual('', $driverSQL); $this->assertEquals('', $driverSQL);
$this->assertNull(self::$db->getDbs()); $this->assertNull(self::$db->getDbs());
} }

View File

@ -22,7 +22,7 @@ use Query\QueryParser;
/** /**
* Tests for the Query Parser * Tests for the Query Parser
*/ */
class QueryParserTest extends TestCase class QueryParserTest extends BaseTestCase
{ {
/** /**
* @var QueryParser * @var QueryParser
@ -38,7 +38,7 @@ class QueryParserTest extends TestCase
public function testGeneric(): void public function testGeneric(): void
{ {
$matches = $this->parser->parseJoin('table1.field1=table2.field2'); $matches = $this->parser->parseJoin('table1.field1=table2.field2');
$this->assertEqual($matches['combined'], [ $this->assertEquals($matches['combined'], [
'table1.field1', '=', 'table2.field2', 'table1.field1', '=', 'table2.field2',
]); ]);
} }
@ -46,7 +46,7 @@ class QueryParserTest extends TestCase
public function testGeneric2(): void public function testGeneric2(): void
{ {
$matches = $this->parser->parseJoin('db1.table1.field1!=db2.table2.field2'); $matches = $this->parser->parseJoin('db1.table1.field1!=db2.table2.field2');
$this->assertEqual($matches['combined'], [ $this->assertEquals($matches['combined'], [
'db1.table1.field1', '!=', 'db2.table2.field2', 'db1.table1.field1', '!=', 'db2.table2.field2',
]); ]);
} }
@ -54,7 +54,7 @@ class QueryParserTest extends TestCase
public function testWUnderscore(): void public function testWUnderscore(): void
{ {
$matches = $this->parser->parseJoin('table_1.field1 = tab_le2.field_2'); $matches = $this->parser->parseJoin('table_1.field1 = tab_le2.field_2');
$this->assertEqual($matches['combined'], [ $this->assertEquals($matches['combined'], [
'table_1.field1', '=', 'tab_le2.field_2', 'table_1.field1', '=', 'tab_le2.field_2',
]); ]);
} }
@ -62,7 +62,7 @@ class QueryParserTest extends TestCase
public function testFunction(): void public function testFunction(): void
{ {
$matches = $this->parser->parseJoin('table1.field1 > SUM(3+5)'); $matches = $this->parser->parseJoin('table1.field1 > SUM(3+5)');
$this->assertEqual($matches['combined'], [ $this->assertEquals($matches['combined'], [
'table1.field1', '>', 'SUM(3+5)', 'table1.field1', '>', 'SUM(3+5)',
]); ]);
} }

View File

@ -39,6 +39,6 @@ function get_json_config()
$path = QTEST_DIR . QDS . 'db_files' . QDS . 'test_sqlite.db'; $path = QTEST_DIR . QDS . 'db_files' . QDS . 'test_sqlite.db';
@unlink($path); @unlink($path);
require_once __DIR__ . '/TestCase.php'; require_once __DIR__ . '/BaseTestCase.php';
// End of bootstrap.php // End of bootstrap.php

View File

@ -1,164 +0,0 @@
<?php declare(strict_types=1);
/**
* Query
*
* SQL Query Builder / Database Abstraction Layer
*
* PHP version 8.1
*
* @package Query
* @author Timothy J. Warren <tim@timshome.page>
* @copyright 2012 - 2023 Timothy J. Warren
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @link https://git.timshomepage.net/aviat/Query
* @version 4.0.0
*/
namespace {
/**
* Unit test bootstrap - Using php simpletest
*/
define('QTEST_DIR', __DIR__);
define('QBASE_DIR', realpath(__DIR__ . '/../') . '/');
define('QDS', DIRECTORY_SEPARATOR);
require_once QBASE_DIR . 'vendor/simpletest/simpletest/autorun.php';
require_once QBASE_DIR . 'vendor/autoload.php';
}
namespace Query\Tests {
/**
* Base class for TestCases
*/
abstract class TestCase extends \UnitTestCase
{
public function __construct()
{
$class = static::class;
if (PHP_SAPI !== 'cli')
{
echo 'Running test suite: ' . $class . '<br />';
flush();
}
if (method_exists($class, 'setupBeforeClass'))
{
$class::setupBeforeClass();
}
parent::__construct();
}
public function __destruct()
{
$class = static::class;
if (method_exists($class, 'tearDownAfterClass'))
{
$class::tearDownAfterClass();
}
}
/**
* Define assertInstanceOf for simpletest
*
* @param string $message
*/
public function assertInstanceOf($expected, $actual, $message = '')
{
$this->assertIsA($actual, $expected, $message);
}
/**
* Alias to assertEqual
*
* @param mixed $expected
* @param mixed $actual
* @param string $message
*/
public function assertEquals($expected, $actual, $message = '')
{
$this->assertEqual($expected, $actual, $message);
}
/**
* Alias to skipIf in SimpleTest
*
* @param string $message
*/
public function markTestSkipped($message = '')
{
$this->skipUnless(FALSE, $message);
}
public function expectException($exception = FALSE, $message = '%s')
{
return parent::expectException(FALSE);
}
/**
* Alias to the method in PHPUnit
*
* @param string $message
*/
public function expectExceptionMessage($message)
{
// noop
}
}
}
/**
* Load the test suites
*/
namespace {
function get_json_config()
{
$files = [
__DIR__ . '/settings.json',
__DIR__ . '/settings.json.dist',
];
foreach ($files as $file)
{
if (is_file($file))
{
return json_decode(file_get_contents($file));
}
}
return FALSE;
}
// Include db tests
// Load db classes based on capability
$testPath = QTEST_DIR . '/Drivers/';
// Require base testing classes
require_once QTEST_DIR . '/CoreTest.php';
require_once QTEST_DIR . '/ConnectionManagerTest.php';
require_once QTEST_DIR . '/QueryParserTest.php';
$drivers = PDO::getAvailableDrivers();
$driverTestMap = [
'MySQL' => \in_array('mysql', $drivers, TRUE),
'SQLite' => \in_array('sqlite', $drivers, TRUE),
'PgSQL' => \in_array('pgsql', $drivers, TRUE),
];
// Determine which testcases to load
foreach ($driverTestMap as $name => $doLoad)
{
$path = $testPath . $name;
if ($doLoad)
{
require_once "{$path}/{$name}DriverTest.php";
require_once "{$path}/{$name}QueryBuilderTest.php";
}
}
}
// End of index.php