summaryrefslogtreecommitdiffstats
path: root/tests/Utils
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Utils')
-rw-r--r--tests/Utils/BufferedQueryTest.php95
-rw-r--r--tests/Utils/CLITest.php363
-rw-r--r--tests/Utils/ErrorTest.php26
-rw-r--r--tests/Utils/FormatterTest.php534
-rw-r--r--tests/Utils/MiscTest.php135
-rw-r--r--tests/Utils/QueryTest.php395
-rw-r--r--tests/Utils/RoutineTest.php277
-rw-r--r--tests/Utils/TableTest.php147
-rw-r--r--tests/Utils/TokensTest.php99
9 files changed, 1050 insertions, 1021 deletions
diff --git a/tests/Utils/BufferedQueryTest.php b/tests/Utils/BufferedQueryTest.php
index 164c31e..2718126 100644
--- a/tests/Utils/BufferedQueryTest.php
+++ b/tests/Utils/BufferedQueryTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -8,10 +9,10 @@ use PhpMyAdmin\SqlParser\Utils\BufferedQuery;
class BufferedQueryTest extends TestCase
{
/**
- * @dataProvider extractProvider
- *
* @param mixed $query
* @param mixed $chunkSize
+ *
+ * @dataProvider extractProvider
*/
public function testExtract(
$query,
@@ -27,7 +28,7 @@ class BufferedQueryTest extends TestCase
*
* @var array
*/
- $statements = array();
+ $statements = [];
/**
* The `BufferedQuery` instance used for extraction.
@@ -99,21 +100,21 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;' . "\n" .
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */';
- return array(
- array(
+ return [
+ [
"SELECT '\'';\nSELECT '\'';",
8,
- array(
+ [
'parse_delimiter' => true,
'add_delimiter' => true,
- ),
- array(
+ ],
+ [
"SELECT '\'';",
"SELECT '\'';",
- ),
- ),
+ ],
+ ],
- array(
+ [
"CREATE TABLE `test` (\n" .
" `txt` varchar(10)\n" .
");\n" .
@@ -121,58 +122,58 @@ class BufferedQueryTest extends TestCase
"INSERT INTO `test` (`txt`) VALUES('\\\\');\n" .
"INSERT INTO `test` (`txt`) VALUES('xyz');\n",
8,
- array(
+ [
'parse_delimiter' => true,
'add_delimiter' => true,
- ),
- array(
+ ],
+ [
"CREATE TABLE `test` (\n" .
" `txt` varchar(10)\n" .
');',
"INSERT INTO `test` (`txt`) VALUES('abc');",
"INSERT INTO `test` (`txt`) VALUES('\\\\');",
"INSERT INTO `test` (`txt`) VALUES('xyz');",
- ),
- ),
+ ],
+ ],
- array(
+ [
'SELECT """""""";' .
'SELECT """\\\\"""',
8,
- array(
+ [
'parse_delimiter' => true,
'add_delimiter' => true,
- ),
- array(
+ ],
+ [
'SELECT """""""";',
'SELECT """\\\\"""',
- ),
- ),
+ ],
+ ],
- array(
+ [
'DELIMITER A_VERY_LONG_DEL' . "\n" .
'SELECT 1 A_VERY_LONG_DEL' . "\n" .
'DELIMITER ;',
3,
- array(
+ [
'parse_delimiter' => true,
'add_delimiter' => true,
- ),
- array(
+ ],
+ [
'DELIMITER A_VERY_LONG_DEL',
'SELECT 1 A_VERY_LONG_DEL',
'DELIMITER ;',
- ),
- ),
+ ],
+ ],
- array(
+ [
$query,
32,
- array(
+ [
'parse_delimiter' => false,
'add_delimiter' => false,
- ),
- array(
+ ],
+ [
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */',
@@ -216,17 +217,17 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
- ),
- ),
+ ],
+ ],
- array(
+ [
$query,
32,
- array(
+ [
'parse_delimiter' => true,
'add_delimiter' => false,
- ),
- array(
+ ],
+ [
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */',
@@ -274,17 +275,17 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
- ),
- ),
+ ],
+ ],
- array(
+ [
$query,
64,
- array(
+ [
'parse_delimiter' => false,
'add_delimiter' => true,
- ),
- array(
+ ],
+ [
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;',
@@ -328,8 +329,8 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
- ),
- )
- );
+ ],
+ ],
+ ];
}
}
diff --git a/tests/Utils/CLITest.php b/tests/Utils/CLITest.php
index 4caa70d..2f7102f 100644
--- a/tests/Utils/CLITest.php
+++ b/tests/Utils/CLITest.php
@@ -1,14 +1,16 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
use PhpMyAdmin\SqlParser\Tests\TestCase;
+use PhpMyAdmin\SqlParser\Utils\CLI;
class CLITest extends TestCase
{
private function getCLI($getopt)
{
- $cli = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\CLI')->setMethods(array('getopt'))->getMock();
+ $cli = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\CLI')->setMethods(['getopt'])->getMock();
$cli->method('getopt')->willReturn($getopt);
return $cli;
@@ -16,7 +18,7 @@ class CLITest extends TestCase
private function getCLIStdIn($input, $getopt)
{
- $cli = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\CLI')->setMethods(array('getopt', 'readStdin'))->getMock();
+ $cli = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\CLI')->setMethods(['getopt', 'readStdin'])->getMock();
$cli->method('getopt')->willReturn($getopt);
$cli->method('readStdin')->willReturn($input);
return $cli;
@@ -29,19 +31,19 @@ class CLITest extends TestCase
*/
public function testGetopt()
{
- $cli = new \PhpMyAdmin\SqlParser\Utils\CLI();
+ $cli = new CLI();
$this->assertEquals(
- $cli->getopt('', array()),
- array()
+ $cli->getopt('', []),
+ []
);
}
/**
- * @dataProvider highlightParams
- *
* @param mixed $getopt
* @param mixed $output
* @param mixed $result
+ *
+ * @dataProvider highlightParams
*/
public function testRunHighlight($getopt, $output, $result)
{
@@ -52,61 +54,61 @@ class CLITest extends TestCase
public function highlightParams()
{
- return array(
- array(
- array('q' => 'SELECT 1'),
+ return [
+ [
+ ['q' => 'SELECT 1'],
"\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
- 0
- ),
- array(
- array('query' => 'SELECT 1'),
+ 0,
+ ],
+ [
+ ['query' => 'SELECT 1'],
"\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
- 0
- ),
- array(
- array(
+ 0,
+ ],
+ [
+ [
'q' => 'SELECT /* comment */ 1 /* other */',
'f' => 'text',
- ),
+ ],
"SELECT\n /* comment */ 1 /* other */\n",
- 0
- ),
- array(
- array(
+ 0,
+ ],
+ [
+ [
'q' => 'SELECT 1',
'f' => 'foo',
- ),
+ ],
"ERROR: Invalid value for format!\n",
- 1
- ),
- array(
- array(
+ 1,
+ ],
+ [
+ [
'q' => 'SELECT 1',
'f' => 'html',
- ),
- '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ ],
+ '<span class="sql-reserved">SELECT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>' . "\n",
- 0
- ),
- array(
- array('h' => true),
+ 0,
+ ],
+ [
+ ['h' => true],
'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" .
' cat file.sql | highlight-query' . "\n",
- 0
- ),
- array(
- array(),
+ 0,
+ ],
+ [
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" .
' cat file.sql | highlight-query' . "\n",
1,
- ),
- array(
+ ],
+ [
false,
'',
- 1
- )
- );
+ 1,
+ ],
+ ];
}
@@ -127,69 +129,69 @@ class CLITest extends TestCase
public function highlightParamsStdIn()
{
- return array(
- array(
+ return [
+ [
'SELECT 1',
- array(),
+ [],
"\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
- 0
- ),
- array(
+ 0,
+ ],
+ [
'SELECT /* comment */ 1 /* other */',
- array(
+ [
'f' => 'text',
- ),
+ ],
"SELECT\n /* comment */ 1 /* other */\n",
- 0
- ),
- array(
+ 0,
+ ],
+ [
'SELECT 1',
- array(
+ [
'f' => 'foo',
- ),
+ ],
"ERROR: Invalid value for format!\n",
- 1
- ),
- array(
+ 1,
+ ],
+ [
'SELECT 1',
- array(
+ [
'f' => 'html',
- ),
+ ],
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>' . "\n",
- 0
- ),
- array(
+ 0,
+ ],
+ [
'',
- array('h' => true),
+ ['h' => true],
'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" .
' cat file.sql | highlight-query' . "\n",
- 0
- ),
- array(
+ 0,
+ ],
+ [
'',
- array(),
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" .
' cat file.sql | highlight-query' . "\n",
1,
- ),
- array(
+ ],
+ [
'',
false,
'',
- 1
- )
- );
+ 1,
+ ],
+ ];
}
/**
- * @dataProvider lintParamsStdIn
- *
* @param mixed $input
* @param mixed $getopt
* @param mixed $output
* @param mixed $result
+ *
+ * @dataProvider lintParamsStdIn
*/
public function testRunLintFromStdIn($input, $getopt, $output, $result)
{
@@ -200,59 +202,59 @@ class CLITest extends TestCase
public function lintParamsStdIn()
{
- return array(
- array(
+ return [
+ [
'SELECT 1',
- array(),
+ [],
'',
0,
- ),
- array(
+ ],
+ [
'SELECT SELECT',
- array(),
+ [],
'#1: An expression was expected. (near "SELECT" at position 7)' . "\n" .
'#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" .
'#3: An expression was expected. (near "" at position 0)' . "\n",
10,
- ),
- array(
+ ],
+ [
'SELECT SELECT',
- array('c' => 'MySql80000'),
+ ['c' => 'MySql80000'],
'#1: An expression was expected. (near "SELECT" at position 7)' . "\n" .
'#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" .
'#3: An expression was expected. (near "" at position 0)' . "\n",
10,
- ),
- array(
+ ],
+ [
'',
- array(),
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: lint-query --query SQL' . "\n" .
' cat file.sql | lint-query' . "\n",
1,
- ),
- array(
+ ],
+ [
'',
- array('h' => true),
+ ['h' => true],
'Usage: lint-query --query SQL' . "\n" .
' cat file.sql | lint-query' . "\n",
0,
- ),
- array(
+ ],
+ [
'',
false,
'',
1,
- )
- );
+ ],
+ ];
}
/**
- * @dataProvider lintParams
- *
* @param mixed $getopt
* @param mixed $output
* @param mixed $result
+ *
+ * @dataProvider lintParams
*/
public function testRunLint($getopt, $output, $result)
{
@@ -263,58 +265,61 @@ class CLITest extends TestCase
public function lintParams()
{
- return array(
- array(
- array('q' => 'SELECT 1'),
+ return [
+ [
+ ['q' => 'SELECT 1'],
'',
0,
- ),
- array(
- array('query' => 'SELECT 1'),
+ ],
+ [
+ ['query' => 'SELECT 1'],
'',
0,
- ),
- array(
- array('q' => 'SELECT SELECT'),
+ ],
+ [
+ ['q' => 'SELECT SELECT'],
'#1: An expression was expected. (near "SELECT" at position 7)' . "\n" .
'#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" .
'#3: An expression was expected. (near "" at position 0)' . "\n",
10,
- ),
- array(
- array('q' => 'SELECT SELECT', 'c' => 'MySql80000'),
+ ],
+ [
+ [
+ 'q' => 'SELECT SELECT',
+ 'c' => 'MySql80000',
+ ],
'#1: An expression was expected. (near "SELECT" at position 7)' . "\n" .
'#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" .
'#3: An expression was expected. (near "" at position 0)' . "\n",
10,
- ),
- array(
- array('h' => true),
+ ],
+ [
+ ['h' => true],
'Usage: lint-query --query SQL' . "\n" .
' cat file.sql | lint-query' . "\n",
0,
- ),
- array(
- array(),
+ ],
+ [
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: lint-query --query SQL' . "\n" .
' cat file.sql | lint-query' . "\n",
1,
- ),
- array(
+ ],
+ [
false,
'',
1,
- )
- );
+ ],
+ ];
}
/**
- * @dataProvider tokenizeParams
- *
* @param mixed $getopt
* @param mixed $output
* @param mixed $result
+ *
+ * @dataProvider tokenizeParams
*/
public function testRunTokenize($getopt, $output, $result)
{
@@ -325,52 +330,50 @@ class CLITest extends TestCase
public function tokenizeParams()
{
- $result = (
- "[TOKEN 0]\nType = 1\nFlags = 3\nValue = 'SELECT'\nToken = 'SELECT'\n\n"
+ $result = "[TOKEN 0]\nType = 1\nFlags = 3\nValue = 'SELECT'\nToken = 'SELECT'\n\n"
. "[TOKEN 1]\nType = 3\nFlags = 0\nValue = ' '\nToken = ' '\n\n"
. "[TOKEN 2]\nType = 6\nFlags = 0\nValue = 1\nToken = '1'\n\n"
- . "[TOKEN 3]\nType = 9\nFlags = 0\nValue = NULL\nToken = NULL\n\n"
- );
+ . "[TOKEN 3]\nType = 9\nFlags = 0\nValue = NULL\nToken = NULL\n\n";
- return array(
- array(
- array('q' => 'SELECT 1'),
+ return [
+ [
+ ['q' => 'SELECT 1'],
$result,
0,
- ),
- array(
- array('query' => 'SELECT 1'),
+ ],
+ [
+ ['query' => 'SELECT 1'],
$result,
0,
- ),
- array(
- array('h' => true),
+ ],
+ [
+ ['h' => true],
'Usage: tokenize-query --query SQL' . "\n" .
' cat file.sql | tokenize-query' . "\n",
0,
- ),
- array(
- array(),
+ ],
+ [
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: tokenize-query --query SQL' . "\n" .
' cat file.sql | tokenize-query' . "\n",
1,
- ),
- array(
+ ],
+ [
false,
'',
1,
- )
- );
+ ],
+ ];
}
/**
- * @dataProvider tokenizeParamsStdIn
- *
* @param mixed $input
* @param mixed $getopt
* @param mixed $output
* @param mixed $result
+ *
+ * @dataProvider tokenizeParamsStdIn
*/
public function testRunTokenizeStdIn($input, $getopt, $output, $result)
{
@@ -388,64 +391,78 @@ class CLITest extends TestCase
. "[TOKEN 3]\nType = 9\nFlags = 0\nValue = NULL\nToken = NULL\n\n"
);
- return array(
- array(
+ return [
+ [
'SELECT 1',
- array(),
+ [],
$result,
0,
- ),
- array(
+ ],
+ [
'',
- array('h' => true),
+ ['h' => true],
'Usage: tokenize-query --query SQL' . "\n" .
' cat file.sql | tokenize-query' . "\n",
0,
- ),
- array(
+ ],
+ [
'',
- array(),
+ [],
'ERROR: Missing parameters!' . "\n" .
'Usage: tokenize-query --query SQL' . "\n" .
' cat file.sql | tokenize-query' . "\n",
1,
- ),
- array(
+ ],
+ [
'',
false,
'',
1,
- )
- );
+ ],
+ ];
}
/**
- * @dataProvider stdinParams
- *
* @param string $cmd
- * @param int $result
+ * @param int $result
+ *
+ * @dataProvider stdinParams
*/
public function testStdinPipe($cmd, $result)
{
- exec ($cmd, $out, $ret);
+ exec($cmd, $out, $ret);
$this->assertSame($result, $ret);
}
public function stdinParams()
{
- if (defined('PHP_BINARY')) {
- $binPath = PHP_BINARY . ' ' . realpath(dirname(__DIR__) . '/../') . '/bin/';
- } else {
- $binPath = 'php' . ' ' . realpath(dirname(__DIR__) . '/../') . '/bin/';
- }
+ $binPath = PHP_BINARY . ' ' . dirname(__DIR__, 2) . '/bin/';
- return array(
- array('echo "SELECT 1" | '. $binPath .'highlight-query', 0),
- array('echo "invalid query" | '. $binPath .'highlight-query', 0),
- array('echo "SELECT 1" | '. $binPath .'lint-query', 0),
- array('echo "invalid query" | '. $binPath .'lint-query', 10),
- array('echo "SELECT 1" | '. $binPath .'tokenize-query', 0),
- array('echo "invalid query" | '. $binPath .'tokenize-query', 0)
- );
+ return [
+ [
+ 'echo "SELECT 1" | ' . $binPath . 'highlight-query',
+ 0,
+ ],
+ [
+ 'echo "invalid query" | ' . $binPath . 'highlight-query',
+ 0,
+ ],
+ [
+ 'echo "SELECT 1" | ' . $binPath . 'lint-query',
+ 0,
+ ],
+ [
+ 'echo "invalid query" | ' . $binPath . 'lint-query',
+ 10,
+ ],
+ [
+ 'echo "SELECT 1" | ' . $binPath . 'tokenize-query',
+ 0,
+ ],
+ [
+ 'echo "invalid query" | ' . $binPath . 'tokenize-query',
+ 0,
+ ],
+ ];
}
}
diff --git a/tests/Utils/ErrorTest.php b/tests/Utils/ErrorTest.php
index be8e17d..eec1130 100644
--- a/tests/Utils/ErrorTest.php
+++ b/tests/Utils/ErrorTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -14,33 +15,36 @@ class ErrorTest extends TestCase
$lexer = new Lexer('SELECT * FROM db..tbl $');
$parser = new Parser($lexer->list);
$this->assertEquals(
- array(
- array(
+ [
+ [
'Unexpected character.',
0,
'$',
22,
- ),
- array(
+ ],
+ [
'Unexpected dot.',
0,
'.',
17,
- ),
- ),
- Error::get(array($lexer, $parser))
+ ],
+ ],
+ Error::get([$lexer, $parser])
);
}
public function testFormat()
{
$this->assertEquals(
- array('#1: error msg (near "token" at position 100)'),
- Error::format(array(array('error msg', 42, 'token', 100)))
+ ['#1: error msg (near "token" at position 100)'],
+ Error::format([['error msg', 42, 'token', 100]])
);
$this->assertEquals(
- array('#1: error msg (near "token" at position 100)', '#2: error msg (near "token" at position 200)'),
- Error::format(array(array('error msg', 42, 'token', 100), array('error msg', 42, 'token', 200)))
+ [
+ '#1: error msg (near "token" at position 100)',
+ '#2: error msg (near "token" at position 200)',
+ ],
+ Error::format([['error msg', 42, 'token', 100], ['error msg', 42, 'token', 200]])
);
}
}
diff --git a/tests/Utils/FormatterTest.php b/tests/Utils/FormatterTest.php
index 3551dc6..f3c6422 100644
--- a/tests/Utils/FormatterTest.php
+++ b/tests/Utils/FormatterTest.php
@@ -1,56 +1,58 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
use PhpMyAdmin\SqlParser\Tests\TestCase;
use PhpMyAdmin\SqlParser\Utils\Formatter;
+use ReflectionMethod;
class FormatterTest extends TestCase
{
/**
- * @dataProvider mergeFormats
- *
* @param mixed $default
* @param mixed $overriding
* @param mixed $expected
+ *
+ * @dataProvider mergeFormats
*/
public function testMergeFormats($default, $overriding, $expected)
{
$formatter = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\Formatter')
->disableOriginalConstructor()
- ->setMethods(array('getDefaultOptions', 'getDefaultFormats'))
+ ->setMethods(['getDefaultOptions', 'getDefaultFormats'])
->getMock();
$formatter->expects($this->once())
->method('getDefaultOptions')
- ->willReturn(array(
+ ->willReturn([
'type' => 'text',
'line_ending' => null,
'indentation' => null,
'clause_newline' => null,
- 'parts_newline' => null
- ));
+ 'parts_newline' => null,
+ ]);
$formatter->expects($this->once())
->method('getDefaultFormats')
->willReturn($default);
- $expectedOptions = array(
+ $expectedOptions = [
'type' => 'test-type',
'line_ending' => '<br>',
'indentation' => ' ',
'clause_newline' => null,
'parts_newline' => 0,
- 'formats' => $expected
- );
+ 'formats' => $expected,
+ ];
- $overridingOptions = array(
+ $overridingOptions = [
'type' => 'test-type',
'line_ending' => '<br>',
- 'formats' => $overriding
- );
+ 'formats' => $overriding,
+ ];
- $reflectionMethod = new \ReflectionMethod($formatter, 'getMergedOptions');
+ $reflectionMethod = new ReflectionMethod($formatter, 'getMergedOptions');
$reflectionMethod->setAccessible(true);
$this->assertEquals($expectedOptions, $reflectionMethod->invoke($formatter, $overridingOptions));
}
@@ -58,219 +60,219 @@ class FormatterTest extends TestCase
public function mergeFormats()
{
// array($default[], $overriding[], $expected[])
- return array(
- 'empty formats' => array(
- 'default' => array(
- array(
+ return [
+ 'empty formats' => [
+ 'default' => [
+ [
'type' => 0,
'flags' => 0,
'html' => '',
'cli' => '',
'function' => '',
- ),
- ),
- 'overriding' => array(
- array(),
- ),
- 'expected' => array(
- array(
+ ],
+ ],
+ 'overriding' => [
+ [],
+ ],
+ 'expected' => [
+ [
'type' => 0,
'flags' => 0,
'html' => '',
'cli' => '',
'function' => '',
- ),
- ),
- ),
- 'no flags' => array(
- 'default' => array(
- array(
+ ],
+ ],
+ ],
+ 'no flags' => [
+ 'default' => [
+ [
'type' => 0,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 1,
'html' => 'html',
'cli' => 'cli',
- ),
- ),
- 'overriding' => array(
- array(
+ ],
+ ],
+ 'overriding' => [
+ [
'type' => 0,
'html' => 'new html',
'cli' => 'new cli',
- ),
- ),
- 'expected' => array(
- array(
+ ],
+ ],
+ 'expected' => [
+ [
'type' => 0,
'flags' => 0,
'html' => 'new html',
'cli' => 'new cli',
'function' => '',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 1,
'html' => 'html',
'cli' => 'cli',
- ),
- ),
- ),
- 'with flags' => array(
- 'default' => array(
- array(
+ ],
+ ],
+ ],
+ 'with flags' => [
+ 'default' => [
+ [
'type' => -1,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 1,
'html' => 'html',
'cli' => 'cli',
- ),
- ),
- 'overriding' => array(
- array(
+ ],
+ ],
+ 'overriding' => [
+ [
'type' => 0,
'flags' => 0,
'html' => 'new html',
'cli' => 'new cli',
- ),
- ),
- 'expected' => array(
- array(
+ ],
+ ],
+ 'expected' => [
+ [
'type' => -1,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 0,
'html' => 'new html',
'cli' => 'new cli',
'function' => '',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 1,
'html' => 'html',
'cli' => 'cli',
- ),
- ),
- ),
- 'with extra formats' => array(
- 'default' => array(
- array(
+ ],
+ ],
+ ],
+ 'with extra formats' => [
+ 'default' => [
+ [
'type' => 0,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- ),
- 'overriding' => array(
- array(
+ ],
+ ],
+ 'overriding' => [
+ [
'type' => 0,
'flags' => 1,
'html' => 'new html',
'cli' => 'new cli',
- ),
- array(
+ ],
+ [
'type' => 1,
'html' => 'new html',
'cli' => 'new cli',
- ),
- array(
+ ],
+ [
'type' => 1,
'flags' => 1,
'html' => 'new html',
'cli' => 'new cli',
- ),
- ),
- 'expected' => array(
- array(
+ ],
+ ],
+ 'expected' => [
+ [
'type' => 0,
'flags' => 0,
'html' => 'html',
'cli' => 'cli',
- ),
- array(
+ ],
+ [
'type' => 0,
'flags' => 1,
'html' => 'new html',
'cli' => 'new cli',
'function' => '',
- ),
- array(
+ ],
+ [
'type' => 1,
'flags' => 0,
'html' => 'new html',
'cli' => 'new cli',
'function' => '',
- ),
- array(
+ ],
+ [
'type' => 1,
'flags' => 1,
'html' => 'new html',
'cli' => 'new cli',
'function' => '',
- ),
- ),
- )
- );
+ ],
+ ],
+ ],
+ ];
}
/**
- * @dataProvider formatQueries
- *
* @param mixed $query
* @param mixed $text
* @param mixed $cli
* @param mixed $html
+ *
+ * @dataProvider formatQueries
*/
- public function testFormat($query, $text, $cli, $html, array $options = array())
+ public function testFormat($query, $text, $cli, $html, array $options = [])
{
// Test TEXT format
- $this->assertEquals($text, Formatter::format($query, array('type' => 'text') + $options), 'Text formatting failed.');
+ $this->assertEquals($text, Formatter::format($query, ['type' => 'text'] + $options), 'Text formatting failed.');
// Test CLI format
- $this->assertEquals($cli, Formatter::format($query, array('type' => 'cli') + $options), 'CLI formatting failed.');
+ $this->assertEquals($cli, Formatter::format($query, ['type' => 'cli'] + $options), 'CLI formatting failed.');
// Test HTML format
- $this->assertEquals($html, Formatter::format($query, array('type' => 'html') + $options), 'HTML formatting failed.');
+ $this->assertEquals($html, Formatter::format($query, ['type' => 'html'] + $options), 'HTML formatting failed.');
}
public function formatQueries()
{
- return array(
- 'empty' => array(
+ return [
+ 'empty' => [
'query' => '',
'text' => '',
'cli' => "\x1b[0m",
'html' => '',
- ),
- 'minimal' => array(
+ ],
+ 'minimal' => [
'query' => 'select 1',
'text' => 'SELECT' . "\n" .
' 1',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[92m1" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[92m1\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>',
- ),
- 'simply' => array(
+ ],
+ 'simply' => [
'query' => 'select * from tbl where 1',
'text' => 'SELECT' . "\n" .
' *' . "\n" .
@@ -278,20 +280,20 @@ class FormatterTest extends TestCase
' tbl' . "\n" .
'WHERE' . "\n" .
' 1',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[39m*" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[39mtbl" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[92m1" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;*' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;tbl' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[39m*\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[39mtbl\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[92m1\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;tbl<br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>',
- ),
- 'typical' => array(
+ ],
+ 'typical' => [
'query' => 'SELECT id, if(id=1,"Si","No") from `tbl` where id = 0 or id = 1 group by id order by id desc limit 1 offset 0',
'text' => 'SELECT' . "\n" .
' id,' . "\n" .
@@ -306,34 +308,34 @@ class FormatterTest extends TestCase
' id' . "\n" .
'DESC' . "\n" .
'LIMIT 1 OFFSET 0',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[39mid," . "\n" .
- " \x1b[35mIF\x1b[39m(id = \x1b[92m1\x1b[39m, \x1b[91m\"Si\"\x1b[39m, \x1b[91m\"No\"\x1b[39m)" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[36m`tbl`" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[39mid = \x1b[92m0 \x1b[35mOR \x1b[39mid = \x1b[92m1" . "\n" .
- "\x1b[35mGROUP BY" . "\n" .
- " \x1b[39mid" . "\n" .
- "\x1b[35mORDER BY" . "\n" .
- " \x1b[39mid" . "\n" .
- "\x1b[35mDESC" . "\n" .
- "LIMIT \x1b[92m1 \x1b[95mOFFSET \x1b[92m0" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;id,' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">IF</span>(id = <span class="sql-number">1</span>, <span class="sql-string">"Si"</span>, <span class="sql-string">"No"</span>)' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`tbl`</span>' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;id = <span class="sql-number">0</span> <span class="sql-reserved">OR</span> id = <span class="sql-number">1</span>' . '<br/>' .
- '<span class="sql-reserved">GROUP BY</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;id' . '<br/>' .
- '<span class="sql-reserved">ORDER BY</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;id' . '<br/>' .
- '<span class="sql-reserved">DESC</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[39mid,\n" .
+ " \x1b[35mIF\x1b[39m(id = \x1b[92m1\x1b[39m, \x1b[91m\"Si\"\x1b[39m, \x1b[91m\"No\"\x1b[39m)\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[36m`tbl`\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[39mid = \x1b[92m0 \x1b[35mOR \x1b[39mid = \x1b[92m1\n" .
+ "\x1b[35mGROUP BY\n" .
+ " \x1b[39mid\n" .
+ "\x1b[35mORDER BY\n" .
+ " \x1b[39mid\n" .
+ "\x1b[35mDESC\n" .
+ "LIMIT \x1b[92m1 \x1b[95mOFFSET \x1b[92m0\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;id,<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">IF</span>(id = <span class="sql-number">1</span>, <span class="sql-string">"Si"</span>, <span class="sql-string">"No"</span>)<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`tbl`</span><br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;id = <span class="sql-number">0</span> <span class="sql-reserved">OR</span> id = <span class="sql-number">1</span><br/>' .
+ '<span class="sql-reserved">GROUP BY</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;id<br/>' .
+ '<span class="sql-reserved">ORDER BY</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;id<br/>' .
+ '<span class="sql-reserved">DESC</span><br/>' .
'<span class="sql-reserved">LIMIT</span> <span class="sql-number">1</span> <span class="sql-keyword">OFFSET</span> <span class="sql-number">0</span>',
- ),
- 'comments' => array(
+ ],
+ 'comments' => [
'query' => 'select /* Comment */ *' . "\n" .
'from tbl # Comment' . "\n" .
'where 1 -- Comment',
@@ -343,20 +345,20 @@ class FormatterTest extends TestCase
' tbl # Comment' . "\n" .
'WHERE' . "\n" .
' 1 -- Comment',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[37m/* Comment */ \x1b[39m*" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[39mtbl \x1b[37m# Comment" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[92m1 \x1b[37m-- Comment" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-comment">/* Comment */</span> *' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;tbl <span class="sql-comment"># Comment</span>' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[37m/* Comment */ \x1b[39m*\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[39mtbl \x1b[37m# Comment\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[92m1 \x1b[37m-- Comment\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-comment">/* Comment */</span> *<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;tbl <span class="sql-comment"># Comment</span><br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span> <span class="sql-comment">-- Comment</span>',
- ),
- 'strip comments' => array(
+ ],
+ 'strip comments' => [
'query' => 'select /* Comment */ *' . "\n" .
'from tbl # Comment' . "\n" .
'where 1 -- Comment',
@@ -366,41 +368,41 @@ class FormatterTest extends TestCase
' tbl' . "\n" .
'WHERE' . "\n" .
' 1',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[39m*" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[39mtbl" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[92m1" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;*' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;tbl' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[39m*\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[39mtbl\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[92m1\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;tbl<br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>',
- 'options' => array(
+ 'options' => [
'remove_comments' => true,
- ),
- ),
- 'keywords' => array(
+ ],
+ ],
+ 'keywords' => [
'query' => 'select hex("1")',
'text' => 'SELECT' . "\n" .
' HEX("1")',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[95mHEX\x1b[39m(\x1b[91m\"1\"\x1b[39m)" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[95mHEX\x1b[39m(\x1b[91m\"1\"\x1b[39m)\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-keyword">HEX</span>(<span class="sql-string">"1"</span>)',
- ),
- 'distinct count' => array(
+ ],
+ 'distinct count' => [
'query' => 'select distinct count(*)',
'text' => 'SELECT DISTINCT' . "\n" .
' COUNT(*)',
- 'cli' => "\x1b[35mSELECT DISTINCT" . "\n" .
- " \x1b[95mCOUNT\x1b[39m(*)" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span> <span class="sql-reserved">DISTINCT</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT DISTINCT\n" .
+ " \x1b[95mCOUNT\x1b[39m(*)\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span> <span class="sql-reserved">DISTINCT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-keyword">COUNT</span>(*)',
- ),
- 'create procedure' => array(
+ ],
+ 'create procedure' => [
'query' => 'create procedure test_procedure() begin from tbl select *; end',
'text' => 'CREATE PROCEDURE test_procedure()' . "\n" .
'BEGIN' . "\n" .
@@ -410,65 +412,65 @@ class FormatterTest extends TestCase
' *;' . "\n" .
'END',
'cli' => "\x1b[35mCREATE PROCEDURE \x1b[39mtest_procedure()\n" .
- "\x1b[95mBEGIN" . "\n" .
- " \x1b[35mFROM" . "\n" .
- " \x1b[39mtbl" . "\n" .
- " \x1b[35mSELECT" . "\n" .
+ "\x1b[95mBEGIN\n" .
+ " \x1b[35mFROM\n" .
+ " \x1b[39mtbl\n" .
+ " \x1b[35mSELECT\n" .
" \x1b[39m*;\n" .
- "\x1b[95mEND" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">CREATE</span> <span class="sql-reserved">PROCEDURE</span> test_procedure()' . '<br/>' .
- '<span class="sql-keyword">BEGIN</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*;' . '<br/>' .
+ "\x1b[95mEND\x1b[0m",
+ 'html' => '<span class="sql-reserved">CREATE</span> <span class="sql-reserved">PROCEDURE</span> test_procedure()<br/>' .
+ '<span class="sql-keyword">BEGIN</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*;<br/>' .
'<span class="sql-keyword">END</span>',
- ),
- 'insert' => array(
+ ],
+ 'insert' => [
'query' => 'insert into foo values (0, 0, 0), (1, 1, 1)',
'text' => 'INSERT INTO foo' . "\n" .
'VALUES(0, 0, 0),(1, 1, 1)',
- 'cli' => "\x1b[35mINSERT INTO \x1b[39mfoo" . "\n" .
- "\x1b[35mVALUES\x1b[39m(\x1b[92m0\x1b[39m, \x1b[92m0\x1b[39m, \x1b[92m0\x1b[39m),(\x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m)" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">INSERT</span> <span class="sql-reserved">INTO</span> foo' . '<br/>' .
+ 'cli' => "\x1b[35mINSERT INTO \x1b[39mfoo\n" .
+ "\x1b[35mVALUES\x1b[39m(\x1b[92m0\x1b[39m, \x1b[92m0\x1b[39m, \x1b[92m0\x1b[39m),(\x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m)\x1b[0m",
+ 'html' => '<span class="sql-reserved">INSERT</span> <span class="sql-reserved">INTO</span> foo<br/>' .
'<span class="sql-reserved">VALUES</span>(<span class="sql-number">0</span>, <span class="sql-number">0</span>, <span class="sql-number">0</span>),(<span class="sql-number">1</span>, <span class="sql-number">1</span>, <span class="sql-number">1</span>)',
- ),
- 'string as alias' => array(
+ ],
+ 'string as alias' => [
'query' => 'select "Text" as bar',
'text' => 'SELECT' . "\n" .
' "Text" AS bar',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[91m\"Text\" \x1b[35mAS \x1b[39mbar" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[91m\"Text\" \x1b[35mAS \x1b[39mbar\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-string">"Text"</span> <span class="sql-reserved">AS</span> bar',
- ),
- 'escape cli' => array(
+ ],
+ 'escape cli' => [
'query' => "select 'text\x1b[33mcolor-inj'",
'text' => 'SELECT' . "\n" .
" 'text\x1B[33mcolor-inj'",
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[91m'text\\x1B[33mcolor-inj'" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[91m'text\\x1B[33mcolor-inj'\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-string">\'text' . "\x1b[33m" . 'color-inj\'</span>',
- ),
- 'escape html' => array(
+ ],
+ 'escape html' => [
'query' => "select '<s>xss' from `<s>xss` , <s>nxss /*s<s>xss*/",
'text' => 'SELECT' . "\n" .
' \'<s>xss\'' . "\n" .
'FROM' . "\n" .
' `<s>xss`,' . "\n" .
' < s > nxss /*s<s>xss*/',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[91m'<s>xss'" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[36m`<s>xss`\x1b[39m," . "\n" .
- " < s > nxss \x1b[37m/*s<s>xss*/" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-string">\'&lt;s&gt;xss\'</span>' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[91m'<s>xss'\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[36m`<s>xss`\x1b[39m,\n" .
+ " < s > nxss \x1b[37m/*s<s>xss*/\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-string">\'&lt;s&gt;xss\'</span><br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`&lt;s&gt;xss`</span>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt; s &gt; nxss <span class="sql-comment">/*s&lt;s&gt;xss*/</span>',
- ),
- 'create table' => array(
+ ],
+ 'create table' => [
'query' => 'create table if not exists `pma__bookmark` (' . "\n" .
'`id` int(11) not null auto_increment,' . "\n" .
'`dbase` varchar(255) not null default "",' . "\n" .
@@ -483,29 +485,29 @@ class FormatterTest extends TestCase
' `label` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT "",' . "\n" .
' `query` TEXT NOT NULL,' . "\n" .
' PRIMARY KEY(`id`)',
- 'cli' => "\x1b[35mCREATE TABLE IF NOT EXISTS \x1b[36m`pma__bookmark`\x1b[39m(" . "\n" .
- " \x1b[36m`id` \x1b[35mINT\x1b[39m(\x1b[92m11\x1b[39m) \x1b[35mNOT NULL \x1b[95mAUTO_INCREMENT\x1b[39m," . "\n" .
- " \x1b[36m`dbase` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m," . "\n" .
- " \x1b[36m`user` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m," . "\n" .
- " \x1b[36m`label` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mCOLLATE \x1b[39mutf8_general_ci \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m," . "\n" .
- " \x1b[36m`query` \x1b[95mTEXT \x1b[35mNOT NULL\x1b[39m," . "\n" .
- " \x1b[35mPRIMARY KEY\x1b[39m(\x1b[36m`id`\x1b[39m)" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">CREATE</span> <span class="sql-reserved">TABLE</span> <span class="sql-reserved">IF NOT EXISTS</span> <span class="sql-variable">`pma__bookmark`</span>(' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`id`</span> <span class="sql-reserved">INT</span>(<span class="sql-number">11</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-keyword">AUTO_INCREMENT</span>,' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`dbase`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`user`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`label`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">COLLATE</span> utf8_general_ci <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`query`</span> <span class="sql-keyword">TEXT</span> <span class="sql-reserved">NOT NULL</span>,' . '<br/>' .
+ 'cli' => "\x1b[35mCREATE TABLE IF NOT EXISTS \x1b[36m`pma__bookmark`\x1b[39m(\n" .
+ " \x1b[36m`id` \x1b[35mINT\x1b[39m(\x1b[92m11\x1b[39m) \x1b[35mNOT NULL \x1b[95mAUTO_INCREMENT\x1b[39m,\n" .
+ " \x1b[36m`dbase` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" .
+ " \x1b[36m`user` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" .
+ " \x1b[36m`label` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) \x1b[35mCOLLATE \x1b[39mutf8_general_ci \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" .
+ " \x1b[36m`query` \x1b[95mTEXT \x1b[35mNOT NULL\x1b[39m,\n" .
+ " \x1b[35mPRIMARY KEY\x1b[39m(\x1b[36m`id`\x1b[39m)\x1b[0m",
+ 'html' => '<span class="sql-reserved">CREATE</span> <span class="sql-reserved">TABLE</span> <span class="sql-reserved">IF NOT EXISTS</span> <span class="sql-variable">`pma__bookmark`</span>(<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`id`</span> <span class="sql-reserved">INT</span>(<span class="sql-number">11</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-keyword">AUTO_INCREMENT</span>,<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`dbase`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`user`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`label`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">COLLATE</span> utf8_general_ci <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`query`</span> <span class="sql-keyword">TEXT</span> <span class="sql-reserved">NOT NULL</span>,<br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">PRIMARY KEY</span>(<span class="sql-variable">`id`</span>)',
- ),
- 'join' => array(
+ ],
+ 'join' => [
'query' => 'join tbl2 on c1=c2',
'text' => 'JOIN tbl2 ON c1 = c2',
'cli' => "\x1b[35mJOIN \x1b[39mtbl2 \x1b[35mON \x1b[39mc1 = c2" .
"\x1b[0m",
'html' => '<span class="sql-reserved">JOIN</span> tbl2 <span class="sql-reserved">ON</span> c1 = c2',
- ),
- 'named param' => array(
+ ],
+ 'named param' => [
'query' => 'select * from tbl where col = :param',
'text' => 'SELECT' . "\n" .
' *' . "\n" .
@@ -513,20 +515,20 @@ class FormatterTest extends TestCase
' tbl' . "\n" .
'WHERE' . "\n" .
' col = :param',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[39m*" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[39mtbl" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[39mcol = \x1b[31m:param" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;*' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;tbl' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[39m*\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[39mtbl\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[39mcol = \x1b[31m:param\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;tbl<br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;col = <span class="sql-parameter">:param</span>',
- ),
- 'anon param' => array(
+ ],
+ 'anon param' => [
'query' => 'select * from tbl where col = ?',
'text' => 'SELECT' . "\n" .
' *' . "\n" .
@@ -534,19 +536,19 @@ class FormatterTest extends TestCase
' tbl' . "\n" .
'WHERE' . "\n" .
' col = ?',
- 'cli' => "\x1b[35mSELECT" . "\n" .
- " \x1b[39m*" . "\n" .
- "\x1b[35mFROM" . "\n" .
- " \x1b[39mtbl" . "\n" .
- "\x1b[35mWHERE" . "\n" .
- " \x1b[39mcol = \x1b[31m?" . "\x1b[0m",
- 'html' => '<span class="sql-reserved">SELECT</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;*' . '<br/>' .
- '<span class="sql-reserved">FROM</span>' . '<br/>' .
- '&nbsp;&nbsp;&nbsp;&nbsp;tbl' . '<br/>' .
- '<span class="sql-reserved">WHERE</span>' . '<br/>' .
+ 'cli' => "\x1b[35mSELECT\n" .
+ " \x1b[39m*\n" .
+ "\x1b[35mFROM\n" .
+ " \x1b[39mtbl\n" .
+ "\x1b[35mWHERE\n" .
+ " \x1b[39mcol = \x1b[31m?\x1b[0m",
+ 'html' => '<span class="sql-reserved">SELECT</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*<br/>' .
+ '<span class="sql-reserved">FROM</span><br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;tbl<br/>' .
+ '<span class="sql-reserved">WHERE</span><br/>' .
'&nbsp;&nbsp;&nbsp;&nbsp;col = <span class="sql-parameter">?</span>',
- )
- );
+ ],
+ ];
}
}
diff --git a/tests/Utils/MiscTest.php b/tests/Utils/MiscTest.php
index 3abc1cb..480d687 100644
--- a/tests/Utils/MiscTest.php
+++ b/tests/Utils/MiscTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -9,10 +10,10 @@ use PhpMyAdmin\SqlParser\Utils\Misc;
class MiscTest extends TestCase
{
/**
- * @dataProvider getAliasesProvider
- *
* @param mixed $query
* @param mixed $db
+ *
+ * @dataProvider getAliasesProvider
*/
public function testGetAliases($query, $db, array $expected)
{
@@ -24,104 +25,104 @@ class MiscTest extends TestCase
public function getAliasesProvider()
{
- return array(
- array(
+ return [
+ [
'select * from (select 1) tbl',
'mydb',
- array(),
- ),
- array(
+ [],
+ ],
+ [
'select i.name as `n`,abcdef gh from qwerty i',
'mydb',
- array(
- 'mydb' => array(
+ [
+ 'mydb' => [
'alias' => null,
- 'tables' => array(
- 'qwerty' => array(
+ 'tables' => [
+ 'qwerty' => [
'alias' => 'i',
- 'columns' => array(
+ 'columns' => [
'name' => 'n',
'abcdef' => 'gh',
- ),
- ),
- ),
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ [
'select film_id id,title from film',
'sakila',
- array(
- 'sakila' => array(
+ [
+ 'sakila' => [
'alias' => null,
- 'tables' => array(
- 'film' => array(
+ 'tables' => [
+ 'film' => [
'alias' => null,
- 'columns' => array(
+ 'columns' => [
'film_id' => 'id',
- ),
- ),
- ),
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ [
'select `sakila`.`A`.`actor_id` as aid,`F`.`film_id` `fid`,'
. 'last_update updated from `sakila`.actor A join `film_actor` as '
. '`F` on F.actor_id = A.`actor_id`',
'sakila',
- array(
- 'sakila' => array(
+ [
+ 'sakila' => [
'alias' => null,
- 'tables' => array(
- 'film_actor' => array(
+ 'tables' => [
+ 'film_actor' => [
'alias' => 'F',
- 'columns' => array(
+ 'columns' => [
'film_id' => 'fid',
'last_update' => 'updated',
- ),
- ),
- 'actor' => array(
+ ],
+ ],
+ 'actor' => [
'alias' => 'A',
- 'columns' => array(
+ 'columns' => [
'actor_id' => 'aid',
'last_update' => 'updated',
- ),
- ),
- ),
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ [
'SELECT film_id FROM (SELECT * FROM film) as f;',
'sakila',
- array(),
- ),
- array(
+ [],
+ ],
+ [
'',
null,
- array(),
- ),
- array(
+ [],
+ ],
+ [
'SELECT 1',
null,
- array(),
- ),
- array(
+ [],
+ ],
+ [
'SELECT * FROM orders AS ord WHERE 1',
'db',
- array(
- 'db' => array(
+ [
+ 'db' => [
'alias' => null,
- 'tables' => array(
- 'orders' => array(
+ 'tables' => [
+ 'orders' => [
'alias' => 'ord',
- 'columns' => array(),
- ),
- ),
- ),
- ),
- )
- );
+ 'columns' => [],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ];
}
}
diff --git a/tests/Utils/QueryTest.php b/tests/Utils/QueryTest.php
index f4676ec..5639610 100644
--- a/tests/Utils/QueryTest.php
+++ b/tests/Utils/QueryTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -9,10 +10,10 @@ use PhpMyAdmin\SqlParser\Utils\Query;
class QueryTest extends TestCase
{
/**
- * @dataProvider getFlagsProvider
- *
* @param mixed $query
* @param mixed $expected
+ *
+ * @dataProvider getFlagsProvider
*/
public function testGetFlags($query, $expected)
{
@@ -25,257 +26,257 @@ class QueryTest extends TestCase
public function getFlagsProvider()
{
- return array(
- array(
+ return [
+ [
'ALTER TABLE DROP col',
- array(
+ [
'reload' => true,
'querytype' => 'ALTER',
- ),
- ),
- array(
+ ],
+ ],
+ [
'CALL test()',
- array(
+ [
'is_procedure' => true,
'querytype' => 'CALL',
- ),
- ),
- array(
+ ],
+ ],
+ [
'CREATE TABLE tbl (id INT)',
- array(
+ [
'reload' => true,
'querytype' => 'CREATE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'CHECK TABLE tbl',
- array(
+ [
'is_maint' => true,
'querytype' => 'CHECK',
- ),
- ),
- array(
+ ],
+ ],
+ [
'DELETE FROM tbl',
- array(
+ [
'is_affected' => true,
'is_delete' => true,
'querytype' => 'DELETE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'DROP VIEW v',
- array(
+ [
'reload' => true,
'querytype' => 'DROP',
- ),
- ),
- array(
+ ],
+ ],
+ [
'DROP DATABASE db',
- array(
+ [
'drop_database' => true,
'reload' => true,
'querytype' => 'DROP',
- ),
- ),
- array(
+ ],
+ ],
+ [
'EXPLAIN tbl',
- array(
+ [
'is_explain' => true,
'querytype' => 'EXPLAIN',
- ),
- ),
- array(
+ ],
+ ],
+ [
'LOAD DATA INFILE \'/tmp/test.txt\' INTO TABLE test',
- array(
+ [
'is_affected' => true,
'is_insert' => true,
'querytype' => 'LOAD',
- ),
- ),
- array(
+ ],
+ ],
+ [
'INSERT INTO tbl VALUES (1)',
- array(
+ [
'is_affected' => true,
'is_insert' => true,
'querytype' => 'INSERT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'REPLACE INTO tbl VALUES (2)',
- array(
+ [
'is_affected' => true,
'is_replace' => true,
'is_insert' => true,
'querytype' => 'REPLACE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT 1',
- array(
+ [
'is_select' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM tbl',
- array(
+ [
'is_select' => true,
'select_from' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT DISTINCT * FROM tbl LIMIT 0, 10 ORDER BY id',
- array(
+ [
'distinct' => true,
'is_select' => true,
'select_from' => true,
'limit' => true,
'order' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM actor GROUP BY actor_id',
- array(
+ [
'is_group' => true,
'is_select' => true,
'select_from' => true,
'group' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);',
- array(
+ [
'is_analyse' => true,
'is_select' => true,
'select_from' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM tbl INTO OUTFILE "/tmp/export.txt"',
- array(
+ [
'is_export' => true,
'is_select' => true,
'select_from' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT COUNT(id), SUM(id) FROM tbl',
- array(
+ [
'is_count' => true,
'is_func' => true,
'is_select' => true,
'select_from' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT (SELECT "foo")',
- array(
+ [
'is_select' => true,
'is_subquery' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM customer HAVING store_id = 2;',
- array(
+ [
'is_select' => true,
'select_from' => true,
'is_group' => true,
'having' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id;',
- array(
+ [
'is_select' => true,
'select_from' => true,
'join' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SHOW CREATE TABLE tbl',
- array(
+ [
'is_show' => true,
'querytype' => 'SHOW',
- ),
- ),
- array(
+ ],
+ ],
+ [
'UPDATE tbl SET id = 1',
- array(
+ [
'is_affected' => true,
'querytype' => 'UPDATE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'ANALYZE TABLE tbl',
- array(
+ [
'is_maint' => true,
'querytype' => 'ANALYZE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'CHECKSUM TABLE tbl',
- array(
+ [
'is_maint' => true,
'querytype' => 'CHECKSUM',
- ),
- ),
- array(
+ ],
+ ],
+ [
'OPTIMIZE TABLE tbl',
- array(
+ [
'is_maint' => true,
'querytype' => 'OPTIMIZE',
- ),
- ),
- array(
+ ],
+ ],
+ [
'REPAIR TABLE tbl',
- array(
+ [
'is_maint' => true,
'querytype' => 'REPAIR',
- ),
- ),
- array(
+ ],
+ ],
+ [
'(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10) ' .
'UNION ' .
'(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);',
- array(
+ [
'is_select' => true,
'select_from' => true,
'limit' => true,
'order' => true,
'union' => true,
'querytype' => 'SELECT',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SELECT * FROM orders AS ord WHERE 1',
- array(
+ [
'querytype' => 'SELECT',
'is_select' => true,
'select_from' => true,
- ),
- ),
- array(
+ ],
+ ],
+ [
'SET NAMES \'latin\'',
- array(
+ [
'querytype' => 'SET',
- ),
- )
- );
+ ],
+ ],
+ ];
}
public function testGetAll()
{
$this->assertEquals(
- array(
+ [
'distinct' => false,
'drop_database' => false,
'group' => false,
@@ -303,7 +304,7 @@ class QueryTest extends TestCase
'reload' => false,
'select_from' => false,
'union' => false,
- ),
+ ],
Query::getAll('')
);
@@ -313,21 +314,21 @@ class QueryTest extends TestCase
$this->assertEquals(
array_merge(
Query::getFlags($parser->statements[0], true),
- array(
+ [
'parser' => $parser,
'statement' => $parser->statements[0],
- 'select_expr' => array('*'),
- 'select_tables' => array(
- array(
+ 'select_expr' => ['*'],
+ 'select_tables' => [
+ [
'actor',
null,
- ),
- array(
+ ],
+ [
'film',
'sakila2',
- ),
- )
- )
+ ],
+ ],
+ ]
),
Query::getAll($query)
);
@@ -337,21 +338,21 @@ class QueryTest extends TestCase
$this->assertEquals(
array_merge(
Query::getFlags($parser->statements[0], true),
- array(
+ [
'parser' => $parser,
'statement' => $parser->statements[0],
- 'select_expr' => array('*'),
- 'select_tables' => array(
- array(
+ 'select_expr' => ['*'],
+ 'select_tables' => [
+ [
'actor',
'sakila',
- ),
- array(
+ ],
+ [
'film',
null,
- ),
- )
- )
+ ],
+ ],
+ ]
),
Query::getAll($query)
);
@@ -361,17 +362,17 @@ class QueryTest extends TestCase
$this->assertEquals(
array_merge(
Query::getFlags($parser->statements[0], true),
- array(
+ [
'parser' => $parser,
'statement' => $parser->statements[0],
- 'select_expr' => array(),
- 'select_tables' => array(
- array(
+ 'select_expr' => [],
+ 'select_tables' => [
+ [
'actor',
'sakila',
- ),
- ),
- )
+ ],
+ ],
+ ]
),
Query::getAll($query)
);
@@ -381,24 +382,24 @@ class QueryTest extends TestCase
$this->assertEquals(
array_merge(
Query::getFlags($parser->statements[0], true),
- array(
+ [
'parser' => $parser,
'statement' => $parser->statements[0],
- 'select_expr' => array(
+ 'select_expr' => [
'CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END',
- ),
- 'select_tables' => array(),
- )
+ ],
+ 'select_tables' => [],
+ ]
),
Query::getAll($query)
);
}
/**
- * @dataProvider getTablesProvider
- *
* @param mixed $query
* @param mixed $expected
+ *
+ * @dataProvider getTablesProvider
*/
public function testGetTables($query, $expected)
{
@@ -411,42 +412,42 @@ class QueryTest extends TestCase
public function getTablesProvider()
{
- return array(
- array(
+ return [
+ [
'INSERT INTO tbl(`id`, `name`) VALUES (1, "Name")',
- array('`tbl`')
- ),
- array(
+ ['`tbl`'],
+ ],
+ [
'UPDATE tbl SET id = 0',
- array('`tbl`')
- ),
- array(
+ ['`tbl`'],
+ ],
+ [
'DELETE FROM tbl WHERE id < 10',
- array('`tbl`')
- ),
- array(
+ ['`tbl`'],
+ ],
+ [
'TRUNCATE tbl',
- array('`tbl`')
- ),
- array(
+ ['`tbl`'],
+ ],
+ [
'DROP VIEW v',
- array()
- ),
- array(
+ [],
+ ],
+ [
'DROP TABLE tbl1, tbl2',
- array(
+ [
'`tbl1`',
'`tbl2`',
- ),
- ),
- array(
+ ],
+ ],
+ [
'RENAME TABLE a TO b, c TO d',
- array(
+ [
'`a`',
- '`c`'
- )
- )
- );
+ '`c`',
+ ],
+ ],
+ ];
}
public function testGetClause()
@@ -614,7 +615,7 @@ class QueryTest extends TestCase
public function testReplaceClauses()
{
- $this->assertEquals('', Query::replaceClauses(null, null, array()));
+ $this->assertEquals('', Query::replaceClauses(null, null, []));
$parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10;');
$this->assertEquals(
@@ -622,12 +623,12 @@ class QueryTest extends TestCase
Query::replaceClauses(
$parser->statements[0],
$parser->list,
- array(
- array(
+ [
+ [
'WHERE',
'WHERE film_id > 0',
- )
- )
+ ],
+ ]
)
);
@@ -648,20 +649,20 @@ class QueryTest extends TestCase
Query::replaceClauses(
$parser->statements[0],
$parser->list,
- array(
- array(
+ [
+ [
'FROM',
'FROM city AS c',
- ),
- array(
+ ],
+ [
'WHERE',
'',
- ),
- array(
+ ],
+ [
'LIMIT',
'LIMIT 0, 10',
- )
- )
+ ],
+ ]
)
);
}
diff --git a/tests/Utils/RoutineTest.php b/tests/Utils/RoutineTest.php
index c988b91..90ba0b7 100644
--- a/tests/Utils/RoutineTest.php
+++ b/tests/Utils/RoutineTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -9,9 +10,9 @@ use PhpMyAdmin\SqlParser\Utils\Routine;
class RoutineTest extends TestCase
{
/**
- * @dataProvider getReturnTypeProvider
- *
* @param mixed $def
+ *
+ * @dataProvider getReturnTypeProvider
*/
public function testGetReturnType($def, array $expected)
{
@@ -20,94 +21,94 @@ class RoutineTest extends TestCase
public function getReturnTypeProvider()
{
- return array(
- array(
+ return [
+ [
'',
- array(
+ [
'',
'',
'',
'',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'TEXT',
- array(
+ [
'',
'',
'TEXT',
'',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'INT(20)',
- array(
+ [
'',
'',
'INT',
'20',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'INT UNSIGNED',
- array(
+ [
'',
'',
'INT',
'',
'UNSIGNED',
- ),
- ),
- array(
+ ],
+ ],
+ [
'VARCHAR(1) CHARSET utf8',
- array(
+ [
'',
'',
'VARCHAR',
'1',
'utf8',
- ),
- ),
- array(
+ ],
+ ],
+ [
'ENUM(\'a\', \'b\') CHARSET latin1',
- array(
+ [
'',
'',
'ENUM',
'\'a\',\'b\'',
'latin1',
- ),
- ),
- array(
+ ],
+ ],
+ [
'DECIMAL(5,2) UNSIGNED ZEROFILL',
- array(
+ [
'',
'',
'DECIMAL',
'5,2',
'UNSIGNED ZEROFILL',
- ),
- ),
- array(
+ ],
+ ],
+ [
'SET(\'test\'\'esc"\', \'more\\\'esc\')',
- array(
+ [
'',
'',
'SET',
'\'test\'\'esc"\',\'more\\\'esc\'',
'',
- ),
- )
- );
+ ],
+ ],
+ ];
}
/**
- * @dataProvider getParameterProvider
- *
* @param mixed $def
+ *
+ * @dataProvider getParameterProvider
*/
public function testGetParameter($def, array $expected)
{
@@ -116,94 +117,94 @@ class RoutineTest extends TestCase
public function getParameterProvider()
{
- return array(
- array(
+ return [
+ [
'',
- array(
+ [
'',
'',
'',
'',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'`foo` TEXT',
- array(
+ [
'',
'foo',
'TEXT',
'',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'`foo` INT(20)',
- array(
+ [
'',
'foo',
'INT',
'20',
'',
- ),
- ),
- array(
+ ],
+ ],
+ [
'IN `fo``fo` INT UNSIGNED',
- array(
+ [
'IN',
'fo`fo',
'INT',
'',
'UNSIGNED',
- ),
- ),
- array(
+ ],
+ ],
+ [
'OUT bar VARCHAR(1) CHARSET utf8',
- array(
+ [
'OUT',
'bar',
'VARCHAR',
'1',
'utf8',
- ),
- ),
- array(
+ ],
+ ],
+ [
'`"baz\'\'` ENUM(\'a\', \'b\') CHARSET latin1',
- array(
+ [
'',
'"baz\'\'',
'ENUM',
'\'a\',\'b\'',
'latin1',
- ),
- ),
- array(
+ ],
+ ],
+ [
'INOUT `foo` DECIMAL(5,2) UNSIGNED ZEROFILL',
- array(
+ [
'INOUT',
'foo',
'DECIMAL',
'5,2',
'UNSIGNED ZEROFILL',
- ),
- ),
- array(
+ ],
+ ],
+ [
'`foo``s func` SET(\'test\'\'esc"\', \'more\\\'esc\')',
- array(
+ [
'',
'foo`s func',
'SET',
'\'test\'\'esc"\',\'more\\\'esc\'',
'',
- ),
- )
- );
+ ],
+ ],
+ ];
}
/**
- * @dataProvider getParametersProvider
- *
* @param mixed $query
+ *
+ * @dataProvider getParametersProvider
*/
public function testGetParameters($query, array $expected)
{
@@ -213,98 +214,98 @@ class RoutineTest extends TestCase
public function getParametersProvider()
{
- return array(
- array(
+ return [
+ [
'CREATE PROCEDURE `foo`() SET @A=0',
- array(
+ [
'num' => 0,
- 'dir' => array(),
- 'name' => array(),
- 'type' => array(),
- 'length' => array(),
- 'length_arr' => array(),
- 'opts' => array(),
- ),
- ),
- array(
+ 'dir' => [],
+ 'name' => [],
+ 'type' => [],
+ 'length' => [],
+ 'length_arr' => [],
+ 'opts' => [],
+ ],
+ ],
+ [
'CREATE DEFINER=`user\\`@`somehost``(` FUNCTION `foo```(`baz` INT) BEGIN SELECT NULL; END',
- array(
+ [
'num' => 1,
- 'dir' => array(
+ 'dir' => [
0 => '',
- ),
- 'name' => array(
+ ],
+ 'name' => [
0 => 'baz',
- ),
- 'type' => array(
+ ],
+ 'type' => [
0 => 'INT',
- ),
- 'length' => array(
+ ],
+ 'length' => [
0 => '',
- ),
- 'length_arr' => array(
- 0 => array(),
- ),
- 'opts' => array(
+ ],
+ 'length_arr' => [
+ 0 => [],
+ ],
+ 'opts' => [
0 => '',
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ [
'CREATE PROCEDURE `foo`(IN `baz\\)` INT(25) zerofill unsigned) BEGIN SELECT NULL; END',
- array(
+ [
'num' => 1,
- 'dir' => array(
+ 'dir' => [
0 => 'IN',
- ),
- 'name' => array(
+ ],
+ 'name' => [
0 => 'baz\\)',
- ),
- 'type' => array(
+ ],
+ 'type' => [
0 => 'INT',
- ),
- 'length' => array(
+ ],
+ 'length' => [
0 => '25',
- ),
- 'length_arr' => array(
- 0 => array('25'),
- ),
- 'opts' => array(
+ ],
+ 'length_arr' => [
+ 0 => ['25'],
+ ],
+ 'opts' => [
0 => 'UNSIGNED ZEROFILL',
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ [
'CREATE PROCEDURE `foo`(IN `baz\\` INT(001) zerofill, out bazz varchar(15) charset utf8) ' .
'BEGIN SELECT NULL; END',
- array(
+ [
'num' => 2,
- 'dir' => array(
+ 'dir' => [
0 => 'IN',
1 => 'OUT',
- ),
- 'name' => array(
+ ],
+ 'name' => [
0 => 'baz\\',
1 => 'bazz',
- ),
- 'type' => array(
+ ],
+ 'type' => [
0 => 'INT',
1 => 'VARCHAR',
- ),
- 'length' => array(
+ ],
+ 'length' => [
0 => '1',
1 => '15',
- ),
- 'length_arr' => array(
- 0 => array('1'),
- 1 => array('15'),
- ),
- 'opts' => array(
+ ],
+ 'length_arr' => [
+ 0 => ['1'],
+ 1 => ['15'],
+ ],
+ 'opts' => [
0 => 'ZEROFILL',
1 => 'utf8',
- ),
- ),
- )
- );
+ ],
+ ],
+ ],
+ ];
}
}
diff --git a/tests/Utils/TableTest.php b/tests/Utils/TableTest.php
index ade4929..b71d951 100644
--- a/tests/Utils/TableTest.php
+++ b/tests/Utils/TableTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -9,9 +10,9 @@ use PhpMyAdmin\SqlParser\Utils\Table;
class TableTest extends TestCase
{
/**
- * @dataProvider getForeignKeysProvider
- *
* @param mixed $query
+ *
+ * @dataProvider getForeignKeysProvider
*/
public function testGetForeignKeys($query, array $expected)
{
@@ -21,12 +22,12 @@ class TableTest extends TestCase
public function getForeignKeysProvider()
{
- return array(
- array(
+ return [
+ [
'CREATE USER test',
- array(),
- ),
- array(
+ [],
+ ],
+ [
'CREATE TABLE `payment` (
`payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`customer_id` smallint(5) unsigned NOT NULL,
@@ -43,35 +44,35 @@ class TableTest extends TestCase
CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8',
- array(
- array(
+ [
+ [
'constraint' => 'fk_payment_customer',
- 'index_list' => array('customer_id'),
+ 'index_list' => ['customer_id'],
'ref_db_name' => null,
'ref_table_name' => 'customer',
- 'ref_index_list' => array('customer_id'),
+ 'ref_index_list' => ['customer_id'],
'on_update' => 'CASCADE',
- ),
- array(
+ ],
+ [
'constraint' => 'fk_payment_rental',
- 'index_list' => array('rental_id'),
+ 'index_list' => ['rental_id'],
'ref_db_name' => null,
'ref_table_name' => 'rental',
- 'ref_index_list' => array('rental_id'),
+ 'ref_index_list' => ['rental_id'],
'on_delete' => 'SET_NULL',
'on_update' => 'CASCADE',
- ),
- array(
+ ],
+ [
'constraint' => 'fk_payment_staff',
- 'index_list' => array('staff_id'),
+ 'index_list' => ['staff_id'],
'ref_db_name' => null,
'ref_table_name' => 'staff',
- 'ref_index_list' => array('staff_id'),
+ 'ref_index_list' => ['staff_id'],
'on_update' => 'CASCADE',
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ [
'CREATE TABLE `actor` (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
@@ -80,9 +81,9 @@ class TableTest extends TestCase
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8',
- array(),
- ),
- array(
+ [],
+ ],
+ [
'CREATE TABLE `address` (
`address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(50) NOT NULL,
@@ -96,24 +97,24 @@ class TableTest extends TestCase
KEY `idx_fk_city_id` (`city_id`),
CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8',
- array(
- array(
+ [
+ [
'constraint' => 'fk_address_city',
- 'index_list' => array('city_id'),
+ 'index_list' => ['city_id'],
'ref_db_name' => null,
'ref_table_name' => 'city',
- 'ref_index_list' => array('city_id'),
+ 'ref_index_list' => ['city_id'],
'on_update' => 'CASCADE',
- ),
- ),
- )
- );
+ ],
+ ],
+ ],
+ ];
}
/**
- * @dataProvider getFieldsProvider
- *
* @param mixed $query
+ *
+ * @dataProvider getFieldsProvider
*/
public function testGetFields($query, array $expected)
{
@@ -123,12 +124,12 @@ class TableTest extends TestCase
public function getFieldsProvider()
{
- return array(
- array(
+ return [
+ [
'CREATE USER test',
- array(),
- ),
- array(
+ [],
+ ],
+ [
'CREATE TABLE `address` (
`address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(50) NOT NULL,
@@ -142,76 +143,76 @@ class TableTest extends TestCase
KEY `idx_fk_city_id` (`city_id`),
CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8',
- array(
- 'address_id' => array(
+ [
+ 'address_id' => [
'type' => 'SMALLINT',
'timestamp_not_null' => false,
- ),
- 'address' => array(
+ ],
+ 'address' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
- ),
- 'address2' => array(
+ ],
+ 'address2' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
'default_value' => 'NULL',
- ),
- 'district' => array(
+ ],
+ 'district' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
- ),
- 'city_id' => array(
+ ],
+ 'city_id' => [
'type' => 'SMALLINT',
'timestamp_not_null' => false,
- ),
- 'postal_code' => array(
+ ],
+ 'postal_code' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
'default_value' => 'NULL',
- ),
- 'phone' => array(
+ ],
+ 'phone' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
- ),
- 'last_update' => array(
+ ],
+ 'last_update' => [
'type' => 'TIMESTAMP',
'timestamp_not_null' => true,
'default_value' => 'CURRENT_TIMESTAMP',
'default_current_timestamp' => true,
'on_update_current_timestamp' => true,
- ),
- ),
- ),
- array(
+ ],
+ ],
+ ],
+ [
'CREATE TABLE table1 (
a INT NOT NULL,
b VARCHAR(32),
c INT AS (a mod 10) VIRTUAL,
d VARCHAR(5) AS (left(b,5)) PERSISTENT
)',
- array(
- 'a' => array(
+ [
+ 'a' => [
'type' => 'INT',
'timestamp_not_null' => false,
- ),
- 'b' => array(
+ ],
+ 'b' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
- ),
- 'c' => array(
+ ],
+ 'c' => [
'type' => 'INT',
'timestamp_not_null' => false,
'generated' => true,
'expr' => '(a mod 10)',
- ),
- 'd' => array(
+ ],
+ 'd' => [
'type' => 'VARCHAR',
'timestamp_not_null' => false,
'generated' => true,
'expr' => '(left(b,5))',
- ),
- ),
- )
- );
+ ],
+ ],
+ ],
+ ];
}
}
diff --git a/tests/Utils/TokensTest.php b/tests/Utils/TokensTest.php
index 685c670..b71a873 100644
--- a/tests/Utils/TokensTest.php
+++ b/tests/Utils/TokensTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
@@ -9,12 +10,12 @@ use PhpMyAdmin\SqlParser\Utils\Tokens;
class TokensTest extends TestCase
{
/**
- * @dataProvider replaceTokensProvider
- *
* @param mixed $list
* @param mixed $find
* @param mixed $replace
* @param mixed $expected
+ *
+ * @dataProvider replaceTokensProvider
*/
public function testReplaceTokens($list, $find, $replace, $expected)
{
@@ -23,28 +24,28 @@ class TokensTest extends TestCase
public function replaceTokensProvider()
{
- return array(
- array(
+ return [
+ [
'SELECT * FROM /*x*/a/*c*/.b',
- array(
- array('value_str' => 'a'),
- array('token' => '.'),
- ),
- array(
+ [
+ ['value_str' => 'a'],
+ ['token' => '.'],
+ ],
+ [
new Token('c'),
new Token('.'),
- ),
+ ],
'SELECT * FROM /*x*/c.b',
- )
- );
+ ],
+ ];
}
/**
- * @dataProvider matchProvider
- *
* @param mixed $token
* @param mixed $pattern
* @param mixed $expected
+ *
+ * @dataProvider matchProvider
*/
public function testMatch($token, $pattern, $expected)
{
@@ -53,64 +54,64 @@ class TokensTest extends TestCase
public function matchProvider()
{
- return array(
- array(
+ return [
+ [
new Token(''),
- array(),
+ [],
true,
- ),
+ ],
- array(
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('token' => '"abc"'),
+ ['token' => '"abc"'],
true,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('value' => 'abc'),
+ ['value' => 'abc'],
true,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('value_str' => 'ABC'),
+ ['value_str' => 'ABC'],
true,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('type' => Token::TYPE_STRING),
+ ['type' => Token::TYPE_STRING],
true,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('flags' => Token::FLAG_STRING_DOUBLE_QUOTES),
+ ['flags' => Token::FLAG_STRING_DOUBLE_QUOTES],
true,
- ),
+ ],
- array(
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('token' => '"abcd"'),
+ ['token' => '"abcd"'],
false,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('value' => 'abcd'),
+ ['value' => 'abcd'],
false,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('value_str' => 'ABCd'),
+ ['value_str' => 'ABCd'],
false,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('type' => Token::TYPE_NUMBER),
+ ['type' => Token::TYPE_NUMBER],
false,
- ),
- array(
+ ],
+ [
new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES),
- array('flags' => Token::FLAG_STRING_SINGLE_QUOTES),
+ ['flags' => Token::FLAG_STRING_SINGLE_QUOTES],
false,
- )
- );
+ ],
+ ];
}
}