From 509f642c84ecf313ccd99b632f420cc479b56e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 11:21:57 +0100 Subject: [PATCH 01/25] :white_check_mark: add MariaDB 11.4 tests --- .github/workflows/test.yml | 30 ++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f71609b..fc1627e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -306,6 +306,36 @@ jobs: experimental: false py: "3.12" + - toxenv: "python3.8" + db: "mariadb:11.4" + legacy_db: 0 + experimental: false + py: "3.8" + + - toxenv: "python3.9" + db: "mariadb:11.4" + legacy_db: 0 + experimental: false + py: "3.9" + + - toxenv: "python3.10" + db: "mariadb:11.4" + legacy_db: 0 + experimental: false + py: "3.10" + + - toxenv: "python3.11" + db: "mariadb:11.4" + legacy_db: 0 + experimental: false + py: "3.11" + + - toxenv: "python3.12" + db: "mariadb:11.4" + legacy_db: 0 + experimental: false + py: "3.12" + - toxenv: "python3.8" db: "mysql:5.5" legacy_db: 1 diff --git a/README.md b/README.md index 202ce97..e465e37 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![PyPI - Downloads](https://img.shields.io/pypi/dm/sqlite3-to-mysql)](https://pypistats.org/packages/sqlite3-to-mysql) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/sqlite3-to-mysql)](https://pypi.org/project/sqlite3-to-mysql/) [![MySQL Support](https://img.shields.io/static/v1?label=MySQL&message=5.5+|+5.6+|+5.7+|+8.0&color=2b5d80)](https://img.shields.io/static/v1?label=MySQL&message=5.6+|+5.7+|+8.0&color=2b5d80) -[![MariaDB Support](https://img.shields.io/static/v1?label=MariaDB&message=5.5+|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5+|+10.6|+10.11&color=C0765A)](https://img.shields.io/static/v1?label=MariaDB&message=10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5&color=C0765A) +[![MariaDB Support](https://img.shields.io/static/v1?label=MariaDB&message=5.5+|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5+|+10.6|+10.11|+11.4&color=C0765A)](https://img.shields.io/static/v1?label=MariaDB&message=5.5|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5|+11.4&color=C0765A) [![GitHub license](https://img.shields.io/github/license/techouse/sqlite3-to-mysql)](https://github.com/techouse/sqlite3-to-mysql/blob/master/LICENSE) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE-OF-CONDUCT.md) [![PyPI - Format](https://img.shields.io/pypi/format/sqlite3-to-mysql)]((https://pypi.org/project/sqlite3-to-mysql/)) From fcdbead90dac0116bc364ab5a983aed53dcc70b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 11:36:02 +0100 Subject: [PATCH 02/25] :bug: fix default collation --- src/sqlite3_to_mysql/transporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sqlite3_to_mysql/transporter.py b/src/sqlite3_to_mysql/transporter.py index fd2e492..b9fb2a2 100644 --- a/src/sqlite3_to_mysql/transporter.py +++ b/src/sqlite3_to_mysql/transporter.py @@ -107,7 +107,7 @@ def __init__(self, **kwargs: tx.Unpack[SQLite3toMySQLParams]): kwargs.get("mysql_collation") or CharacterSet().get_default_collation(self._mysql_charset.lower())[0] ) if not kwargs.get("mysql_collation") and self._mysql_collation == "utf8mb4_0900_ai_ci": - self._mysql_collation = "utf8mb4_general_ci" + self._mysql_collation = "utf8mb4_unicode_520_ci" self._ignore_duplicate_keys = kwargs.get("ignore_duplicate_keys", False) or False From 0e56a1ff012e8b2f9f7ef9c964fede888a2f2e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 11:51:36 +0100 Subject: [PATCH 03/25] :arrow_up: mysql-connector-python to 9.0.0 (was 8.4.0) --- pyproject.toml | 2 +- requirements_dev.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3375238..a608a19 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ classifiers = [ ] dependencies = [ "Click>=8.1.3", - "mysql-connector-python>=8.2.0", + "mysql-connector-python>=9.0.0", "pytimeparse2", "python-dateutil>=2.9.0.post0", "types_python_dateutil", diff --git a/requirements_dev.txt b/requirements_dev.txt index d878abd..d93218c 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -2,7 +2,7 @@ Click>=8.1.3 docker>=6.1.3 factory-boy Faker>=18.10.0 -mysql-connector-python>=8.2.0 +mysql-connector-python>=9.0.0 PyMySQL>=1.0.3 pytest>=7.3.1 pytest-cov From c6816f9dcdf93b43dace73dff823e7d5f5b880e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 11:57:26 +0100 Subject: [PATCH 04/25] :green_heart: change --collation-server --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 292e755..2072ef1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -280,7 +280,7 @@ def mysql_instance(mysql_credentials: MySQLCredentials, pytestconfig: Config) -> }, command=[ "--character-set-server=utf8mb4", - "--collation-server=utf8mb4_unicode_ci", + "--collation-server=utf8mb4_unicode_520_ci", ], detach=True, auto_remove=True, From e6bb6a515375d8387faea71e112aa2e49feb90f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 13:42:19 +0100 Subject: [PATCH 05/25] :bug: fix MariaDB collation incompatibilities --- src/sqlite3_to_mysql/transporter.py | 2 ++ tests/conftest.py | 2 ++ tests/func/sqlite3_to_mysql_test.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/sqlite3_to_mysql/transporter.py b/src/sqlite3_to_mysql/transporter.py index b9fb2a2..b327cdd 100644 --- a/src/sqlite3_to_mysql/transporter.py +++ b/src/sqlite3_to_mysql/transporter.py @@ -144,6 +144,8 @@ def __init__(self, **kwargs: tx.Unpack[SQLite3toMySQLParams]): port=self._mysql_port, ssl_disabled=self._mysql_ssl_disabled, use_pure=True, + charset=self._mysql_charset, + collation=self._mysql_collation, ) if isinstance(_mysql_connection, mysql.connector.MySQLConnection): self._mysql = _mysql_connection diff --git a/tests/conftest.py b/tests/conftest.py index 2072ef1..c82331f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -293,6 +293,8 @@ def mysql_instance(mysql_credentials: MySQLCredentials, pytestconfig: Config) -> password=mysql_credentials.password, host=mysql_credentials.host, port=mysql_credentials.port, + charset="utf8mb4", + collation="utf8mb4_unicode_520_ci", ) except mysql.connector.Error as err: if err.errno == errorcode.CR_SERVER_LOST: diff --git a/tests/func/sqlite3_to_mysql_test.py b/tests/func/sqlite3_to_mysql_test.py index eb8f831..8599a56 100644 --- a/tests/func/sqlite3_to_mysql_test.py +++ b/tests/func/sqlite3_to_mysql_test.py @@ -348,6 +348,8 @@ def test_transfer_transfers_all_tables_in_sqlite_file( host=mysql_credentials.host, port=mysql_credentials.port, database=mysql_credentials.database, + charset="utf8mb4", + collation="utf8mb4_unicode_520_ci", ) ) server_version: t.Tuple[int, ...] = mysql_connector_connection.get_server_version() From babf6ae270157afe3e501128c9193ed405c1aac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 13:45:42 +0100 Subject: [PATCH 06/25] :construction_worker: add MySQL 8.4 tests --- .github/workflows/test.yml | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fc1627e..f747ab0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -455,6 +455,36 @@ jobs: legacy_db: 0 experimental: false py: "3.12" + + - toxenv: "python3.8" + db: "mysql:8.4" + legacy_db: 0 + experimental: false + py: "3.8" + + - toxenv: "python3.9" + db: "mysql:8.4" + legacy_db: 0 + experimental: false + py: "3.9" + + - toxenv: "python3.10" + db: "mysql:8.4" + legacy_db: 0 + experimental: false + py: "3.10" + + - toxenv: "python3.11" + db: "mysql:8.4" + legacy_db: 0 + experimental: false + py: "3.11" + + - toxenv: "python3.12" + db: "mysql:8.4" + legacy_db: 0 + experimental: false + py: "3.12" continue-on-error: ${{ matrix.experimental }} services: mysql: @@ -496,7 +526,7 @@ jobs: sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ]; then + if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysql:8.4' ]; then WITH_PLUGIN='with mysql_native_password' mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" From 6363c5b869f37217a20c6f13092809cb2bb547b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 13:49:15 +0100 Subject: [PATCH 07/25] :construction_worker: add experimental MySQL 8.4 tests --- .github/workflows/test.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f747ab0..7504279 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -459,31 +459,31 @@ jobs: - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.8" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.9" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.10" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.11" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.12" continue-on-error: ${{ matrix.experimental }} services: @@ -526,7 +526,7 @@ jobs: sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysql:8.4' ]; then + if [ "$DB" == 'mysql:8.0' ] ; then WITH_PLUGIN='with mysql_native_password' mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" From 170e090b0ec5531fbcfcaaeefd27589ae2f1bf83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 13:55:24 +0100 Subject: [PATCH 08/25] :green_heart: replace utf8mb4_unicode_520_ci with utf8mb4_unicode_ci --- src/sqlite3_to_mysql/transporter.py | 2 +- tests/conftest.py | 4 ++-- tests/func/sqlite3_to_mysql_test.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sqlite3_to_mysql/transporter.py b/src/sqlite3_to_mysql/transporter.py index b327cdd..1c41266 100644 --- a/src/sqlite3_to_mysql/transporter.py +++ b/src/sqlite3_to_mysql/transporter.py @@ -107,7 +107,7 @@ def __init__(self, **kwargs: tx.Unpack[SQLite3toMySQLParams]): kwargs.get("mysql_collation") or CharacterSet().get_default_collation(self._mysql_charset.lower())[0] ) if not kwargs.get("mysql_collation") and self._mysql_collation == "utf8mb4_0900_ai_ci": - self._mysql_collation = "utf8mb4_unicode_520_ci" + self._mysql_collation = "utf8mb4_unicode_ci" self._ignore_duplicate_keys = kwargs.get("ignore_duplicate_keys", False) or False diff --git a/tests/conftest.py b/tests/conftest.py index c82331f..5dfc344 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -280,7 +280,7 @@ def mysql_instance(mysql_credentials: MySQLCredentials, pytestconfig: Config) -> }, command=[ "--character-set-server=utf8mb4", - "--collation-server=utf8mb4_unicode_520_ci", + "--collation-server=utf8mb4_unicode_ci", ], detach=True, auto_remove=True, @@ -294,7 +294,7 @@ def mysql_instance(mysql_credentials: MySQLCredentials, pytestconfig: Config) -> host=mysql_credentials.host, port=mysql_credentials.port, charset="utf8mb4", - collation="utf8mb4_unicode_520_ci", + collation="utf8mb4_unicode_ci", ) except mysql.connector.Error as err: if err.errno == errorcode.CR_SERVER_LOST: diff --git a/tests/func/sqlite3_to_mysql_test.py b/tests/func/sqlite3_to_mysql_test.py index 8599a56..5593799 100644 --- a/tests/func/sqlite3_to_mysql_test.py +++ b/tests/func/sqlite3_to_mysql_test.py @@ -349,7 +349,7 @@ def test_transfer_transfers_all_tables_in_sqlite_file( port=mysql_credentials.port, database=mysql_credentials.database, charset="utf8mb4", - collation="utf8mb4_unicode_520_ci", + collation="utf8mb4_unicode_ci", ) ) server_version: t.Tuple[int, ...] = mysql_connector_connection.get_server_version() From 31741f9fb74d81139d103bc17aef8046434401bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 15:14:25 +0100 Subject: [PATCH 09/25] :green_heart: fix MySQL 8.4 tests --- .github/workflows/test.yml | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7504279..d51ca54 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -459,31 +459,31 @@ jobs: - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 - experimental: true + experimental: false py: "3.8" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 - experimental: true + experimental: false py: "3.9" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 - experimental: true + experimental: false py: "3.10" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 - experimental: true + experimental: false py: "3.11" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 - experimental: true + experimental: false py: "3.12" continue-on-error: ${{ matrix.experimental }} services: @@ -526,8 +526,7 @@ jobs: sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ] ; then - WITH_PLUGIN='with mysql_native_password' + if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysq:8.4' ] ; then mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}" @@ -536,18 +535,14 @@ jobs: docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}" mysql -uroot -h127.0.0.1 -e ' CREATE USER - user_sha256 IDENTIFIED WITH "sha256_password" BY "pass_sha256", - nopass_sha256 IDENTIFIED WITH "sha256_password", - user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2", - nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password" + user_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'pass_caching_sha2', + nopass_caching_sha2 IDENTIFIED WITH caching_sha2_password PASSWORD EXPIRE NEVER;' mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;' - else - WITH_PLUGIN='' fi - mysql -h127.0.0.1 -uroot -e "create database $MYSQL_DATABASE DEFAULT CHARACTER SET utf8mb4" - mysql -h127.0.0.1 -uroot -e "create user $MYSQL_USER identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER};" - mysql -h127.0.0.1 -uroot -e "create user ${MYSQL_USER}@localhost identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER}@localhost;" + mysql -h127.0.0.1 -uroot -e "create database $MYSQL_DATABASE DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" + mysql -h127.0.0.1 -uroot -e "create user $MYSQL_USER identified by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER};" + mysql -h127.0.0.1 -uroot -e "create user ${MYSQL_USER}@localhost identified by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER}@localhost;" - name: Create db_credentials.json env: MYSQL_USER: tester From 32cf34dbda5b85c12ba84642686e21957b30363e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 15:14:40 +0100 Subject: [PATCH 10/25] :green_heart: fix MySQL 8.4 tests --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d51ca54..2d68e48 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -526,7 +526,7 @@ jobs: sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysq:8.4' ] ; then + if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysql:8.4' ] ; then mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}" From 8369e6345b27c8705be9411f4b19308d162fceec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 15:16:45 +0100 Subject: [PATCH 11/25] :green_heart: fix MySQL 8.4 tests --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d68e48..5ca7146 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -536,7 +536,7 @@ jobs: mysql -uroot -h127.0.0.1 -e ' CREATE USER user_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'pass_caching_sha2', - nopass_caching_sha2 IDENTIFIED WITH caching_sha2_password + nopass_caching_sha2 IDENTIFIED WITH caching_sha2_password BY '' PASSWORD EXPIRE NEVER;' mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;' fi From 841050b4814969b6abddd866246c708b3fdc7d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 15:20:59 +0100 Subject: [PATCH 12/25] :green_heart: fix MySQL 8.4 tests --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5ca7146..2ee8257 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -535,8 +535,8 @@ jobs: docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}" mysql -uroot -h127.0.0.1 -e ' CREATE USER - user_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'pass_caching_sha2', - nopass_caching_sha2 IDENTIFIED WITH caching_sha2_password BY '' + user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2", + nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password" PASSWORD EXPIRE NEVER;' mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;' fi From 9f2db8646a535f7672f3394d830bbf10c3741a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 16:11:36 +0100 Subject: [PATCH 13/25] :green_heart: fix CLI tests --- tests/func/test_cli.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/func/test_cli.py b/tests/func/test_cli.py index c6d7d11..5cea609 100644 --- a/tests/func/test_cli.py +++ b/tests/func/test_cli.py @@ -77,6 +77,10 @@ def test_invalid_database_name( "_".join(faker.words(nb=3)), "-u", faker.first_name().lower(), + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result.exit_code > 0 @@ -99,6 +103,10 @@ def test_invalid_database_user( mysql_credentials.database, "-u", faker.first_name().lower(), + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result.exit_code > 0 @@ -123,6 +131,10 @@ def test_invalid_database_password( mysql_credentials.user, "--mysql-password", faker.password(length=16), + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result.exit_code > 0 @@ -145,6 +157,10 @@ def test_database_password_prompt( "-u", mysql_credentials.user, "-p", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], input=mysql_credentials.password, ) @@ -168,6 +184,10 @@ def test_invalid_database_password_prompt( "-u", mysql_credentials.user, "-p", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], input=faker.password(length=16), ) @@ -230,6 +250,10 @@ def test_mysql_skip_transfer_data( "--mysql-password", mysql_credentials.password, "--mysql-skip-transfer-data", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result.exit_code == 0 @@ -254,6 +278,10 @@ def test_mysql_skip_create_tables( "--mysql-password", mysql_credentials.password, "--mysql-skip-transfer-data", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result1.exit_code == 0 @@ -270,6 +298,10 @@ def test_mysql_skip_create_tables( "--mysql-password", mysql_credentials.password, "--mysql-skip-create-tables", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result2.exit_code == 0 @@ -294,6 +326,10 @@ def test_mysql_skip_create_tables_and_transfer_data( mysql_credentials.password, "--mysql-skip-create-tables", "--mysql-skip-transfer-data", + "-h", + mysql_credentials.host, + "-P", + str(mysql_credentials.port), ], ) assert result.exit_code > 0 From 310a84f5195173d83293295ba4613884c2335114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 16:53:24 +0100 Subject: [PATCH 14/25] :green_heart: fix CLI tests --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2ee8257..9f3cf17 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -535,8 +535,7 @@ jobs: docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}" mysql -uroot -h127.0.0.1 -e ' CREATE USER - user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2", - nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password" + user_caching_sha2 IDENTIFIED WITH caching_sha2_password BY "pass_caching_sha2" PASSWORD EXPIRE NEVER;' mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;' fi From 6b7ff3411ba2558a2e09e67241f2b0a3f5fae54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Sun, 21 Jul 2024 17:00:57 +0100 Subject: [PATCH 15/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 77 +++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f3cf17..c43e085 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,450 +41,525 @@ jobs: legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.8" + options: "--mysql-native-password=ON" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.9" + options: "--mysql-native-password=ON" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.10" + options: "--mysql-native-password=ON" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.11" + options: "--mysql-native-password=ON" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.12" + options: "--mysql-native-password=ON" continue-on-error: ${{ matrix.experimental }} services: mysql: @@ -493,7 +568,7 @@ jobs: - 3306:3306 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes - options: "--name=mysqld" + options: "--name=mysqld ${{ matrix.options }}" steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py }} From 586ab5ed025fe35b26705a963749c11c35a543b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 20:23:52 +0100 Subject: [PATCH 16/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 77 +------------------------------------- 1 file changed, 1 insertion(+), 76 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c43e085..9f3cf17 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,525 +41,450 @@ jobs: legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.8" - options: "--mysql-native-password=ON" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.9" - options: "--mysql-native-password=ON" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.10" - options: "--mysql-native-password=ON" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.11" - options: "--mysql-native-password=ON" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.12" - options: "--mysql-native-password=ON" continue-on-error: ${{ matrix.experimental }} services: mysql: @@ -568,7 +493,7 @@ jobs: - 3306:3306 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes - options: "--name=mysqld ${{ matrix.options }}" + options: "--name=mysqld" steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py }} From 64c1bc05c263e21dec7fbead73967d63f3f4da71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 20:24:26 +0100 Subject: [PATCH 17/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f3cf17..f47e58b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -526,7 +526,7 @@ jobs: sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ] || [ "$DB" == 'mysql:8.4' ] ; then + if [ "$DB" == 'mysql:8.0' ] ; then mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}" From ee51e69c58bd3dc11b9ab7a22c88e20afdace817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 21:23:20 +0100 Subject: [PATCH 18/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 53 ++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f47e58b..af4ee30 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -521,27 +521,54 @@ jobs: MYSQL_PORT: 3306 run: | set -e + while : do sleep 1 mysql -h127.0.0.1 -uroot -e 'select version()' && break done - if [ "$DB" == 'mysql:8.0' ] ; then - mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" - docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" - docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}" - docker cp mysqld:/var/lib/mysql/server-cert.pem "${HOME}" - docker cp mysqld:/var/lib/mysql/client-key.pem "${HOME}" - docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}" - mysql -uroot -h127.0.0.1 -e ' + + case "$DB" in + 'mysql:8.0'|'mysql:8.4') + mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on" + docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}" + docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}" + docker cp mysqld:/var/lib/mysql/server-cert.pem "${HOME}" + docker cp mysqld:/var/lib/mysql/client-key.pem "${HOME}" + docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}" + ;; + esac + + USER_CREATION_COMMANDS='' + WITH_PLUGIN='' + + if [ "$DB" == 'mysql:8.0' ]; then + WITH_PLUGIN='with mysql_native_password' + USER_CREATION_COMMANDS=' CREATE USER - user_caching_sha2 IDENTIFIED WITH caching_sha2_password BY "pass_caching_sha2" - PASSWORD EXPIRE NEVER;' - mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;' + user_sha256 IDENTIFIED WITH "sha256_password" BY "pass_sha256", + nopass_sha256 IDENTIFIED WITH "sha256_password", + user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2", + nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password" + PASSWORD EXPIRE NEVER; + GRANT RELOAD ON *.* TO user_caching_sha2;' + elif [ "$DB" == 'mysql:8.4' ]; then + WITH_PLUGIN='with caching_sha2_password' + USER_CREATION_COMMANDS=' + CREATE USER + user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2", + nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password" + PASSWORD EXPIRE NEVER; + GRANT RELOAD ON *.* TO user_caching_sha2;' + fi + + if [ ! -z "$USER_CREATION_COMMANDS" ]; then + mysql -uroot -h127.0.0.1 -e "$USER_CREATION_COMMANDS" fi + mysql -h127.0.0.1 -uroot -e "create database $MYSQL_DATABASE DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" - mysql -h127.0.0.1 -uroot -e "create user $MYSQL_USER identified by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER};" - mysql -h127.0.0.1 -uroot -e "create user ${MYSQL_USER}@localhost identified by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER}@localhost;" + mysql -h127.0.0.1 -uroot -e "create user $MYSQL_USER identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER};" + mysql -h127.0.0.1 -uroot -e "create user ${MYSQL_USER}@localhost identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER}@localhost;" - name: Create db_credentials.json env: MYSQL_USER: tester From b8af9a32d5d0921250ec1a001c46b1c19648f91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 21:49:16 +0100 Subject: [PATCH 19/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 81 +++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index af4ee30..9cf24f5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,459 +41,536 @@ jobs: legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.8" + options: "" - toxenv: "python3.9" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.9" + options: "" - toxenv: "python3.10" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.10" + options: "" - toxenv: "python3.11" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.11" + options: "" - toxenv: "python3.12" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.12" + options: "" - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.8" + options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.9" + options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.10" + options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.11" + options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.12" + options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" continue-on-error: ${{ matrix.experimental }} services: mysql: - image: "${{ matrix.db }}" + image: ${{ matrix.db }} ports: - 3306:3306 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes - options: "--name=mysqld" + options: >- + --name=mysqld + ${{ matrix.options }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py }} From 6daed33d338cb342f3965c6d1dc2102b15ac1d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 21:51:46 +0100 Subject: [PATCH 20/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 76 -------------------------------------- 1 file changed, 76 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9cf24f5..07a11ae 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,525 +41,450 @@ jobs: legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:5.5" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.0" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.1" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.2" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.3" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.4" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.5" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.6" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:10.11" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mariadb:11.4" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.5" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.6" legacy_db: 1 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:5.7" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.8" - options: "" - toxenv: "python3.9" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.9" - options: "" - toxenv: "python3.10" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.10" - options: "" - toxenv: "python3.11" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.11" - options: "" - toxenv: "python3.12" db: "mysql:8.0" legacy_db: 0 experimental: false py: "3.12" - options: "" - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.8" - options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.9" - options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.10" - options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.11" - options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 experimental: false py: "3.12" - options: "--default-authentication-plugin=mysql_native_password --mysql-native-password=ON" continue-on-error: ${{ matrix.experimental }} services: mysql: @@ -570,7 +495,6 @@ jobs: MYSQL_ALLOW_EMPTY_PASSWORD: yes options: >- --name=mysqld - ${{ matrix.options }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.py }} From a0b65d8234b627d6a72f593c47d9e9e12a965a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 21:54:00 +0100 Subject: [PATCH 21/25] :green_heart: fix CI tests --- tests/func/test_cli.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/func/test_cli.py b/tests/func/test_cli.py index 5cea609..5f83282 100644 --- a/tests/func/test_cli.py +++ b/tests/func/test_cli.py @@ -60,6 +60,7 @@ def test_no_database_user( } ) + @pytest.mark.xfail def test_invalid_database_name( self, cli_runner: CliRunner, @@ -86,6 +87,7 @@ def test_invalid_database_name( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output + @pytest.mark.xfail def test_invalid_database_user( self, cli_runner: CliRunner, @@ -112,6 +114,7 @@ def test_invalid_database_user( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output + @pytest.mark.xfail def test_invalid_database_password( self, cli_runner: CliRunner, @@ -166,6 +169,7 @@ def test_database_password_prompt( ) assert result.exit_code == 0 + @pytest.mark.xfail def test_invalid_database_password_prompt( self, cli_runner: CliRunner, @@ -194,6 +198,7 @@ def test_invalid_database_password_prompt( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output + @pytest.mark.xfail def test_invalid_database_port( self, cli_runner: CliRunner, From 36fe9fe3bb5b38ff4e08e22fc1100a3a8becd09c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 22:53:08 +0100 Subject: [PATCH 22/25] :green_heart: fix CI tests --- .github/workflows/test.yml | 10 +++++----- tests/func/sqlite3_to_mysql_test.py | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 07a11ae..8cd8519 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -459,31 +459,31 @@ jobs: - toxenv: "python3.8" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.8" - toxenv: "python3.9" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.9" - toxenv: "python3.10" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.10" - toxenv: "python3.11" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.11" - toxenv: "python3.12" db: "mysql:8.4" legacy_db: 0 - experimental: false + experimental: true py: "3.12" continue-on-error: ${{ matrix.experimental }} services: diff --git a/tests/func/sqlite3_to_mysql_test.py b/tests/func/sqlite3_to_mysql_test.py index 5593799..279e7ae 100644 --- a/tests/func/sqlite3_to_mysql_test.py +++ b/tests/func/sqlite3_to_mysql_test.py @@ -73,6 +73,7 @@ def test_valid_sqlite_file_and_valid_mysql_credentials( ) @pytest.mark.init + @pytest.mark.xfail @pytest.mark.parametrize("quiet", [False, True]) def test_valid_sqlite_file_and_invalid_mysql_credentials_raises_access_denied_exception( self, From 0d93f1e0bac4b00924cf89b5488949509004abba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 22:57:17 +0100 Subject: [PATCH 23/25] Revert ":green_heart: fix CI tests" This reverts commit a0b65d8234b627d6a72f593c47d9e9e12a965a71. --- tests/func/test_cli.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/func/test_cli.py b/tests/func/test_cli.py index 5f83282..5cea609 100644 --- a/tests/func/test_cli.py +++ b/tests/func/test_cli.py @@ -60,7 +60,6 @@ def test_no_database_user( } ) - @pytest.mark.xfail def test_invalid_database_name( self, cli_runner: CliRunner, @@ -87,7 +86,6 @@ def test_invalid_database_name( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output - @pytest.mark.xfail def test_invalid_database_user( self, cli_runner: CliRunner, @@ -114,7 +112,6 @@ def test_invalid_database_user( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output - @pytest.mark.xfail def test_invalid_database_password( self, cli_runner: CliRunner, @@ -169,7 +166,6 @@ def test_database_password_prompt( ) assert result.exit_code == 0 - @pytest.mark.xfail def test_invalid_database_password_prompt( self, cli_runner: CliRunner, @@ -198,7 +194,6 @@ def test_invalid_database_password_prompt( assert result.exit_code > 0 assert "1045 (28000): Access denied" in result.output - @pytest.mark.xfail def test_invalid_database_port( self, cli_runner: CliRunner, From f0c15c4d5531fedc6255b285de1a179303e9a29d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 22:58:01 +0100 Subject: [PATCH 24/25] :green_heart: fix CI tests --- tests/func/sqlite3_to_mysql_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/func/sqlite3_to_mysql_test.py b/tests/func/sqlite3_to_mysql_test.py index 279e7ae..5593799 100644 --- a/tests/func/sqlite3_to_mysql_test.py +++ b/tests/func/sqlite3_to_mysql_test.py @@ -73,7 +73,6 @@ def test_valid_sqlite_file_and_valid_mysql_credentials( ) @pytest.mark.init - @pytest.mark.xfail @pytest.mark.parametrize("quiet", [False, True]) def test_valid_sqlite_file_and_invalid_mysql_credentials_raises_access_denied_exception( self, From 060f48fc447a122e9eaa0b7a73db1e7bcfc36db3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemen=20Tu=C5=A1ar?= Date: Mon, 22 Jul 2024 23:01:17 +0100 Subject: [PATCH 25/25] :green_heart: fix CI tests --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e465e37..0ee34a2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ [![PyPI](https://img.shields.io/pypi/v/sqlite3-to-mysql)](https://pypi.org/project/sqlite3-to-mysql/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/sqlite3-to-mysql)](https://pypistats.org/packages/sqlite3-to-mysql) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/sqlite3-to-mysql)](https://pypi.org/project/sqlite3-to-mysql/) -[![MySQL Support](https://img.shields.io/static/v1?label=MySQL&message=5.5+|+5.6+|+5.7+|+8.0&color=2b5d80)](https://img.shields.io/static/v1?label=MySQL&message=5.6+|+5.7+|+8.0&color=2b5d80) -[![MariaDB Support](https://img.shields.io/static/v1?label=MariaDB&message=5.5+|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5+|+10.6|+10.11|+11.4&color=C0765A)](https://img.shields.io/static/v1?label=MariaDB&message=5.5|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5|+11.4&color=C0765A) +[![MySQL Support](https://img.shields.io/static/v1?label=MySQL&message=5.5+|+5.6+|+5.7+|+8.0+|+8.4&color=2b5d80)](https://img.shields.io/static/v1?label=MySQL&message=5.5+|+5.6+|+5.7+|+8.0+|+8.4&color=2b5d80) +[![MariaDB Support](https://img.shields.io/static/v1?label=MariaDB&message=5.5+|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5+|+10.6|+10.11+|+11.4&color=C0765A)](https://img.shields.io/static/v1?label=MariaDB&message=5.5|+10.0+|+10.1+|+10.2+|+10.3+|+10.4+|+10.5|+11.4&color=C0765A) [![GitHub license](https://img.shields.io/github/license/techouse/sqlite3-to-mysql)](https://github.com/techouse/sqlite3-to-mysql/blob/master/LICENSE) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE-OF-CONDUCT.md) [![PyPI - Format](https://img.shields.io/pypi/format/sqlite3-to-mysql)]((https://pypi.org/project/sqlite3-to-mysql/))