File tree 2 files changed +72
-37
lines changed
2 files changed +72
-37
lines changed Original file line number Diff line number Diff line change @@ -94,8 +94,8 @@ final class Tokenizer
94
94
'ENCLOSED ' ,
95
95
'END ' ,
96
96
'ENGINE ' ,
97
- 'ENGINE_TYPE ' ,
98
97
'ENGINES ' ,
98
+ 'ENGINE_TYPE ' ,
99
99
'ESCAPE ' ,
100
100
'ESCAPED ' ,
101
101
'EVENTS ' ,
@@ -111,9 +111,9 @@ final class Tokenizer
111
111
'FIRST ' ,
112
112
'FIXED ' ,
113
113
'FLUSH ' ,
114
+ 'FOLLOWING ' ,
114
115
'FOR ' ,
115
116
'FORCE ' ,
116
- 'FOLLOWING ' ,
117
117
'FOREIGN ' ,
118
118
'FULL ' ,
119
119
'FULLTEXT ' ,
@@ -187,12 +187,12 @@ final class Tokenizer
187
187
'NULL ' ,
188
188
'OFFSET ' ,
189
189
'ON ' ,
190
+ 'ON DELETE ' ,
191
+ 'ON UPDATE ' ,
190
192
'OPEN ' ,
191
193
'OPTIMIZE ' ,
192
194
'OPTION ' ,
193
195
'OPTIONALLY ' ,
194
- 'ON UPDATE ' ,
195
- 'ON DELETE ' ,
196
196
'OUTFILE ' ,
197
197
'OVER ' ,
198
198
'PACK_KEYS ' ,
@@ -209,11 +209,11 @@ final class Tokenizer
209
209
'PROCESSLIST ' ,
210
210
'PURGE ' ,
211
211
'QUICK ' ,
212
- 'RANGE ' ,
213
212
'RAID0 ' ,
214
213
'RAID_CHUNKS ' ,
215
214
'RAID_CHUNKSIZE ' ,
216
215
'RAID_TYPE ' ,
216
+ 'RANGE ' ,
217
217
'READ ' ,
218
218
'READ_ONLY ' ,
219
219
'READ_WRITE ' ,
@@ -254,20 +254,20 @@ final class Tokenizer
254
254
'SQL_BIG_SELECTS ' ,
255
255
'SQL_BIG_TABLES ' ,
256
256
'SQL_BUFFER_RESULT ' ,
257
+ 'SQL_CACHE ' ,
257
258
'SQL_CALC_FOUND_ROWS ' ,
258
259
'SQL_LOG_BIN ' ,
259
260
'SQL_LOG_OFF ' ,
260
261
'SQL_LOG_UPDATE ' ,
261
262
'SQL_LOW_PRIORITY_UPDATES ' ,
262
263
'SQL_MAX_JOIN_SIZE ' ,
264
+ 'SQL_NO_CACHE ' ,
263
265
'SQL_QUOTE_SHOW_CREATE ' ,
264
266
'SQL_SAFE_UPDATES ' ,
265
267
'SQL_SELECT_LIMIT ' ,
266
268
'SQL_SLAVE_SKIP_COUNTER ' ,
267
269
'SQL_SMALL_RESULT ' ,
268
270
'SQL_WARNINGS ' ,
269
- 'SQL_CACHE ' ,
270
- 'SQL_NO_CACHE ' ,
271
271
'START ' ,
272
272
'STARTING ' ,
273
273
'STATUS ' ,
@@ -314,47 +314,47 @@ final class Tokenizer
314
314
* @var list<string>
315
315
*/
316
316
private array $ reservedToplevel = [
317
- 'WITH ' ,
318
- 'SELECT ' ,
319
- 'FROM ' ,
320
- 'WHERE ' ,
321
- 'SET ' ,
322
- 'ORDER BY ' ,
323
- 'GROUP BY ' ,
324
- 'LIMIT ' ,
325
- 'DROP ' ,
326
- 'VALUES ' ,
327
- 'UPDATE ' ,
328
- 'HAVING ' ,
329
317
'ADD ' ,
330
- 'CHANGE ' ,
331
- 'MODIFY ' ,
332
318
'ALTER TABLE ' ,
319
+ 'CHANGE ' ,
333
320
'DELETE FROM ' ,
334
- 'UNION ALL ' ,
335
- 'UNION ' ,
321
+ 'DROP ' ,
336
322
'EXCEPT ' ,
323
+ 'FROM ' ,
324
+ 'GROUP BY ' ,
325
+ 'GROUPS ' ,
326
+ 'HAVING ' ,
337
327
'INTERSECT ' ,
328
+ 'LIMIT ' ,
329
+ 'MODIFY ' ,
330
+ 'ORDER BY ' ,
338
331
'PARTITION BY ' ,
339
- 'ROWS ' ,
340
332
'RANGE ' ,
341
- 'GROUPS ' ,
333
+ 'ROWS ' ,
334
+ 'SELECT ' ,
335
+ 'SET ' ,
336
+ 'UNION ' ,
337
+ 'UNION ALL ' ,
338
+ 'UPDATE ' ,
339
+ 'VALUES ' ,
340
+ 'WHERE ' ,
342
341
'WINDOW ' ,
342
+ 'WITH ' ,
343
343
];
344
344
345
345
/** @var list<string> */
346
346
private array $ reservedNewline = [
347
- 'LEFT OUTER JOIN ' ,
348
- 'RIGHT OUTER JOIN ' ,
349
- 'LEFT JOIN ' ,
350
- 'RIGHT JOIN ' ,
351
- 'OUTER JOIN ' ,
347
+ 'AND ' ,
348
+ 'EXCLUDE ' ,
352
349
'INNER JOIN ' ,
353
350
'JOIN ' ,
354
- 'XOR ' ,
351
+ 'LEFT JOIN ' ,
352
+ 'LEFT OUTER JOIN ' ,
355
353
'OR ' ,
356
- 'AND ' ,
357
- 'EXCLUDE ' ,
354
+ 'OUTER JOIN ' ,
355
+ 'RIGHT JOIN ' ,
356
+ 'RIGHT OUTER JOIN ' ,
357
+ 'XOR ' ,
358
358
];
359
359
360
360
/** @var list<string> */
@@ -575,9 +575,9 @@ final class Tokenizer
575
575
'ORD ' ,
576
576
'OVERLAPS ' ,
577
577
'PASSWORD ' ,
578
- 'PERCENT_RANK ' ,
579
578
'PERCENTILE_CONT ' ,
580
579
'PERCENTILE_DISC ' ,
580
+ 'PERCENT_RANK ' ,
581
581
'PERIOD_ADD ' ,
582
582
'PERIOD_DIFF ' ,
583
583
'PI ' ,
@@ -625,13 +625,13 @@ final class Tokenizer
625
625
'SRID ' ,
626
626
'STARTPOINT ' ,
627
627
'STD ' ,
628
- 'STDEV ' ,
629
- 'STDEVP ' ,
630
628
'STDDEV ' ,
631
629
'STDDEV_POP ' ,
632
630
'STDDEV_SAMP ' ,
633
- 'STRING_AGG ' ,
631
+ 'STDEV ' ,
632
+ 'STDEVP ' ,
634
633
'STRCMP ' ,
634
+ 'STRING_AGG ' ,
635
635
'STR_TO_DATE ' ,
636
636
'SUBDATE ' ,
637
637
'SUBSTR ' ,
Original file line number Diff line number Diff line change 7
7
use Doctrine \SqlFormatter \Tokenizer ;
8
8
use PHPUnit \Framework \Attributes \DoesNotPerformAssertions ;
9
9
use PHPUnit \Framework \TestCase ;
10
+ use ReflectionClass ;
11
+
12
+ use function sort ;
10
13
11
14
final class TokenizerTest extends TestCase
12
15
{
16
+ /**
17
+ * @param 'reserved'|'reservedToplevel'|'reservedNewline'|'functions' $propertyName
18
+ *
19
+ * @return list<string>
20
+ */
21
+ private function getTokenizerList (string $ propertyName ): array
22
+ {
23
+ $ tokenizerReflClass = new ReflectionClass (Tokenizer::class);
24
+ /** @var list<string> $res */
25
+ $ res = $ tokenizerReflClass ->getProperty ($ propertyName )->getDefaultValue ();
26
+
27
+ return $ res ;
28
+ }
29
+
30
+ public function testInternalKeywordListsAreSortedForEasierMaintenance (): void
31
+ {
32
+ foreach (
33
+ [
34
+ 'reserved ' ,
35
+ 'reservedToplevel ' ,
36
+ 'reservedNewline ' ,
37
+ 'functions ' ,
38
+ ] as $ propertyName
39
+ ) {
40
+ $ tokenizerReserved = $ this ->getTokenizerList ($ propertyName );
41
+ $ tokenizerReservedOrdered = $ tokenizerReserved ;
42
+ sort ($ tokenizerReservedOrdered );
43
+
44
+ self ::assertSame ($ tokenizerReservedOrdered , $ tokenizerReserved );
45
+ }
46
+ }
47
+
13
48
#[DoesNotPerformAssertions]
14
49
public function testThereAreNoRegressions (): void
15
50
{
You can’t perform that action at this time.
0 commit comments