Skip to content

Commit 1d6e402

Browse files
committed
Remove static variables from mysql.
1 parent e072dba commit 1d6e402

File tree

1 file changed

+29
-19
lines changed

1 file changed

+29
-19
lines changed

mysql/testcontainers/mysql/__init__.py

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,42 @@ class MySqlContainer(DbContainer):
3737
... result = connection.execute(sqlalchemy.text("select version()"))
3838
... version, = result.fetchone()
3939
"""
40-
41-
def __init__(self, image: str = "mysql:latest", MYSQL_USER: Optional[str] = None,
42-
MYSQL_ROOT_PASSWORD: Optional[str] = None, MYSQL_PASSWORD: Optional[str] = None,
43-
MYSQL_DATABASE: Optional[str] = None, **kwargs) -> None:
40+
def __init__(self, image: str = "mysql:latest", username: Optional[str] = None,
41+
root_password: Optional[str] = None, password: Optional[str] = None,
42+
dbname: Optional[str] = None, port: int = 3306, MYSQL_USER: None = None,
43+
MYSQL_ROOT_PASSWORD: None = None, MYSQL_PASSWORD: None = None,
44+
MYSQL_DATABASE: None = None, **kwargs) -> None:
4445
super(MySqlContainer, self).__init__(image, **kwargs)
45-
self.port_to_expose = 3306
46+
if MYSQL_USER:
47+
raise ValueError("use `username` instead of `MYSQL_USER`")
48+
if MYSQL_ROOT_PASSWORD:
49+
raise ValueError("use `root_password` instead of `MYSQL_ROOT_PASSWORD`")
50+
if MYSQL_PASSWORD:
51+
raise ValueError("use `password` instead of `MYSQL_PASSWORD`")
52+
if MYSQL_DATABASE:
53+
raise ValueError("use `dbname` instead of `MYSQL_DATABASE`")
54+
55+
self.port_to_expose = port
4656
self.with_exposed_ports(self.port_to_expose)
47-
self.MYSQL_USER = MYSQL_USER or environ.get('MYSQL_USER', 'test')
48-
self.MYSQL_ROOT_PASSWORD = MYSQL_ROOT_PASSWORD or environ.get('MYSQL_ROOT_PASSWORD', 'test')
49-
self.MYSQL_PASSWORD = MYSQL_PASSWORD or environ.get('MYSQL_PASSWORD', 'test')
50-
self.MYSQL_DATABASE = MYSQL_DATABASE or environ.get('MYSQL_DATABASE', 'test')
57+
self.username = username or environ.get('MYSQL_USER', 'test')
58+
self.root_password = root_password or environ.get('MYSQL_ROOT_PASSWORD', 'test')
59+
self.password = password or environ.get('MYSQL_PASSWORD', 'test')
60+
self.dbname = dbname or environ.get('MYSQL_DATABASE', 'test')
5161

52-
if self.MYSQL_USER == 'root':
53-
self.MYSQL_ROOT_PASSWORD = self.MYSQL_PASSWORD
62+
if self.username == 'root':
63+
self.root_password = self.password
5464

5565
def _configure(self) -> None:
56-
self.with_env("MYSQL_ROOT_PASSWORD", self.MYSQL_ROOT_PASSWORD)
57-
self.with_env("MYSQL_DATABASE", self.MYSQL_DATABASE)
66+
self.with_env("MYSQL_ROOT_PASSWORD", self.root_password)
67+
self.with_env("MYSQL_DATABASE", self.dbname)
5868

59-
if self.MYSQL_USER != "root":
60-
self.with_env("MYSQL_USER", self.MYSQL_USER)
61-
self.with_env("MYSQL_PASSWORD", self.MYSQL_PASSWORD)
69+
if self.username != "root":
70+
self.with_env("MYSQL_USER", self.username)
71+
self.with_env("MYSQL_PASSWORD", self.password)
6272

6373
def get_connection_url(self) -> str:
6474
return super()._create_connection_url(dialect="mysql+pymysql",
65-
username=self.MYSQL_USER,
66-
password=self.MYSQL_PASSWORD,
67-
db_name=self.MYSQL_DATABASE,
75+
username=self.username,
76+
password=self.password,
77+
db_name=self.dbname,
6878
port=self.port_to_expose)

0 commit comments

Comments
 (0)