Skip to content

Commit 14fc4ed

Browse files
authored
Use SQLite driver in WpdbExposedMethodsForTesting (#201)
The WordPress PHPUnit test suite uses a second instance of WPDB to expose and access some private methods. This instance was still using MySQL; we need to patch it to use SQLite. This results in fixing some test errors as well as reporting more test failures.
1 parent 14fe48e commit 14fc4ed

File tree

2 files changed

+63
-6
lines changed

2 files changed

+63
-6
lines changed

.github/workflows/wp-tests-phpunit-run.js

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,69 @@ const fs = require( 'fs' );
1111
const path = require( 'path' );
1212

1313
const expectedErrors = [
14-
'Tests_DB_Charset::test_strip_invalid_text',
15-
'Tests_DB::test_db_reconnect',
14+
'Tests_DB_Charset::test_invalid_characters_in_query',
15+
'Tests_DB_Charset::test_set_charset_changes_the_connection_collation',
1616
'Tests_DB::test_get_col_info',
17-
'Tests_DB::test_process_fields_value_too_long_for_field with data set "invalid chars"',
18-
'Tests_DB::test_process_fields_value_too_long_for_field with data set "too long"',
19-
'Tests_DB::test_process_fields',
2017
];
2118

2219
const expectedFailures = [
2320
'Tests_Admin_wpSiteHealth::test_object_cache_thresholds with data set #2',
2421
'Tests_Admin_wpSiteHealth::test_object_cache_thresholds with data set #3',
2522
'Tests_Comment::test_wp_new_comment_respects_comment_field_lengths',
2623
'Tests_Comment::test_wp_update_comment',
24+
'Tests_DB_Charset::test_get_column_charset with data set #0',
25+
'Tests_DB_Charset::test_get_column_charset with data set #1',
26+
'Tests_DB_Charset::test_get_column_charset with data set #2',
27+
'Tests_DB_Charset::test_get_column_charset with data set #3',
28+
'Tests_DB_Charset::test_get_column_charset with data set #4',
29+
'Tests_DB_Charset::test_get_column_charset with data set #5',
30+
'Tests_DB_Charset::test_get_column_charset with data set #6',
31+
'Tests_DB_Charset::test_get_column_charset with data set #7',
32+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #0',
33+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #1',
34+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #2',
35+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #3',
36+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #4',
37+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #5',
38+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #6',
39+
'Tests_DB_Charset::test_get_column_charset_is_mysql_undefined with data set #7',
40+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #0',
41+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #1',
42+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #2',
43+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #3',
44+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #4',
45+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #5',
46+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #6',
47+
'Tests_DB_Charset::test_get_column_charset_non_mysql with data set #7',
48+
'Tests_DB_Charset::test_get_table_charset with data set #1',
49+
'Tests_DB_Charset::test_get_table_charset with data set #4',
50+
'Tests_DB_Charset::test_get_table_charset with data set #5',
51+
'Tests_DB_Charset::test_get_table_charset with data set #6',
52+
'Tests_DB_Charset::test_get_table_charset with data set #7',
53+
'Tests_DB_Charset::test_process_field_charsets_on_nonexistent_table',
54+
'Tests_DB_Charset::test_strip_invalid_text with data set #21',
55+
'Tests_DB_Charset::test_strip_invalid_text with data set #22',
56+
'Tests_DB_Charset::test_strip_invalid_text with data set #23',
57+
'Tests_DB_Charset::test_strip_invalid_text with data set #24',
58+
'Tests_DB_Charset::test_strip_invalid_text with data set #25',
59+
'Tests_DB_Charset::test_strip_invalid_text with data set #26',
60+
'Tests_DB_Charset::test_strip_invalid_text with data set #27',
61+
'Tests_DB_Charset::test_strip_invalid_text with data set #28',
62+
'Tests_DB_Charset::test_strip_invalid_text with data set #30',
63+
'Tests_DB_Charset::test_strip_invalid_text with data set #31',
64+
'Tests_DB_Charset::test_strip_invalid_text with data set #32',
65+
'Tests_DB_Charset::test_strip_invalid_text with data set #33',
66+
'Tests_DB_Charset::test_strip_invalid_text with data set #34',
67+
'Tests_DB_Charset::test_strip_invalid_text with data set #35',
68+
'Tests_DB_Charset::test_strip_invalid_text with data set #36',
69+
'Tests_DB_Charset::test_strip_invalid_text with data set #37',
70+
'Tests_DB_Charset::test_strip_invalid_text with data set #39',
71+
'Tests_DB_Charset::test_strip_invalid_text with data set #40',
72+
'Tests_DB_Charset::test_strip_invalid_text with data set #41',
73+
'Tests_DB_Charset::test_strip_invalid_text_for_column_bails_if_ascii_input_too_long',
74+
'Tests_DB_Charset::test_strip_invalid_text_from_query with data set "utf8 + utf8mb4"',
75+
'Tests_DB_Charset::test_table_collation_check with data set "utf8_bin + big5_chinese_ci"',
76+
'Tests_DB_Charset::test_table_collation_check with data set "utf8_unicode_ci"',
2777
'Tests_DB_dbDelta::test_spatial_indices',
2878
'Tests_DB::test_charset_switched_to_utf8mb4',
2979
'Tests_DB::test_close',
@@ -32,6 +82,9 @@ const expectedFailures = [
3282
'Tests_DB::test_insert_value_too_long_for_field with data set "too long"',
3383
'Tests_DB::test_mysqli_flush_sync',
3484
'Tests_DB::test_non_unicode_collations',
85+
'Tests_DB::test_pre_get_col_charset_filter',
86+
'Tests_DB::test_process_fields_on_nonexistent_table',
87+
'Tests_DB::test_process_fields_value_too_long_for_field with data set "too long"',
3588
'Tests_DB::test_query_value_contains_invalid_chars',
3689
'Tests_DB::test_replace_value_too_long_for_field with data set "too long"',
3790
'Tests_DB::test_replace',

wp-setup.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ cp "$DIR"/db.copy "$WP_DIR"/src/wp-content/db.php
5858
sed -i.bak "s#'{SQLITE_IMPLEMENTATION_FOLDER_PATH}'#__DIR__.'/plugins/sqlite-database-integration'#g" "$WP_DIR"/src/wp-content/db.php
5959
sed -i.bak "s#{SQLITE_PLUGIN}#$WP_DIR/src/wp-content/plugins/sqlite-database-integration/load.php#g" "$WP_DIR"/src/wp-content/db.php
6060

61-
# 5. Install dependencies.
61+
# 5. Rewrite helper class WpdbExposedMethodsForTesting to extend WP_SQLite_DB.
62+
echo "Rewriting helper class 'WpdbExposedMethodsForTesting' to extend WP_SQLite_DB..."
63+
sed -i.bak "s#class WpdbExposedMethodsForTesting extends wpdb {#class WpdbExposedMethodsForTesting extends WP_SQLite_DB {#g" "$WP_DIR"/tests/phpunit/includes/utils.php
64+
65+
# 6. Install dependencies.
6266
echo "Installing dependencies..."
6367
npm --prefix "$WP_DIR" install

0 commit comments

Comments
 (0)