Skip to content

Commit ef14039

Browse files
t0ch1kSergeyPirogov
authored andcommitted
MySQL container configuration (#11)
* maria db test fix * now it's possible to create mysql container without additional users, only with root * MySqlContainer configuration by **kwargs * version changed
1 parent ab2b676 commit ef14039

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
setuptools.setup(
1717
name='testcontainers',
1818
packages=setuptools.find_packages(exclude=['tests']),
19-
version='2.1.0',
19+
version='2.1.1',
2020
description=('Library provides lightweight, throwaway '
2121
'instances of common databases, '
2222
'Selenium web browsers, or anything else that can '

testcontainers/mysql.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,34 @@
1616

1717

1818
class MySqlContainer(DbContainer):
19-
MYSQL_ROOT_PASSWORD = environ.get("MYSQL_ROOT_PASSWORD", "test")
20-
MYSQL_DATABASE = environ.get("MYSQL_DATABASE", "test")
2119
MYSQL_USER = environ.get("MYSQL_USER", "test")
20+
MYSQL_ROOT_PASSWORD = environ.get("MYSQL_ROOT_PASSWORD", "test")
2221
MYSQL_PASSWORD = environ.get("MYSQL_PASSWORD", "test")
22+
MYSQL_DATABASE = environ.get("MYSQL_DATABASE", "test")
2323

24-
def __init__(self, image="mysql:latest"):
24+
def __init__(self, image="mysql:latest", **kwargs):
2525
super(MySqlContainer, self).__init__(image)
2626
self.port_to_expose = 3306
2727
self.with_exposed_ports(self.port_to_expose)
28+
if 'MYSQL_USER' in kwargs:
29+
self.MYSQL_USER = kwargs['MYSQL_USER']
30+
if 'MYSQL_ROOT_PASSWORD' in kwargs:
31+
self.MYSQL_ROOT_PASSWORD = kwargs['MYSQL_ROOT_PASSWORD']
32+
if 'MYSQL_PASSWORD' in kwargs:
33+
self.MYSQL_PASSWORD = kwargs['MYSQL_PASSWORD']
34+
if 'MYSQL_DATABASE' in kwargs:
35+
self.MYSQL_DATABASE = kwargs['MYSQL_DATABASE']
36+
37+
if self.MYSQL_USER == 'root':
38+
self.MYSQL_ROOT_PASSWORD = self.MYSQL_PASSWORD
2839

2940
def _configure(self):
3041
self.with_env("MYSQL_ROOT_PASSWORD", self.MYSQL_ROOT_PASSWORD)
3142
self.with_env("MYSQL_DATABASE", self.MYSQL_DATABASE)
32-
self.with_env("MYSQL_USER", self.MYSQL_USER)
33-
self.with_env("MYSQL_PASSWORD", self.MYSQL_PASSWORD)
43+
44+
if self.MYSQL_USER != "root":
45+
self.with_env("MYSQL_USER", self.MYSQL_USER)
46+
self.with_env("MYSQL_PASSWORD", self.MYSQL_PASSWORD)
3447

3548
def get_connection_url(self):
3649
return super()._create_connection_url(dialect="mysql+pymysql",

tests/test_db_containers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_docker_run_postgress():
2626

2727

2828
def test_docker_run_mariadb():
29-
mariadb_container = MariaDbContainer("mariadb:latest")
29+
mariadb_container = MariaDbContainer("mariadb:10.2.9")
3030
with mariadb_container as mariadb:
3131
e = sqlalchemy.create_engine(mariadb.get_connection_url())
3232
result = e.execute("select version()")

0 commit comments

Comments
 (0)