-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_docker.py
More file actions
80 lines (63 loc) · 2.31 KB
/
Copy pathtest_docker.py
File metadata and controls
80 lines (63 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from unittest.mock import patch
from src.managers.docker import DockerManager
def test_docker_manager_instance_basic():
"""Test basic DockerManager instance attributes"""
docker_manager = DockerManager(
"python",
"2.0.0",
"repo_dir",
)
assert docker_manager.image == "python"
assert docker_manager.poetry_version == "2.0.0"
assert docker_manager.repo_dir == "repo_dir"
assert docker_manager.docker_run_name == "poetry-export"
def test_docker_manager_run_command():
"""Test docker run command generation"""
docker_manager = DockerManager(
"python",
"2.0.0",
"repo_dir",
)
docker_manager.generate_run_command()
assert (
docker_manager.run_cmd
== "docker run --name poetry-export -it --rm --volume repo_dir:/app -w /app python bash -c"
)
def test_docker_manager_bash_command_poetry_1x():
"""Test bash command generation for Poetry 1.x"""
docker_manager = DockerManager(
"python",
"1.8.0",
"repo_dir",
)
docker_manager.generate_bash_command()
assert (
docker_manager.bash_cmd
== "pip install -U pip && pip install poetry==1.8.0 && poetry export -f requirements.txt -o requirements-frozen.txt --without-hashes --dev" # noqa: E501
)
def test_docker_manager_bash_command_poetry_2x():
"""Test bash command generation for Poetry 2.x"""
docker_manager = DockerManager(
"python",
"2.0.0",
"repo_dir",
)
docker_manager.generate_bash_command()
assert (
docker_manager.bash_cmd
== "pip install -U pip && pip install poetry==2.0.0 && pip install poetry-plugin-export && poetry export -f requirements.txt -o requirements-frozen.txt --without-hashes --with dev" # noqa: E501
)
@patch("subprocess.run")
def test_docker_manager_run(mock_subprocess_run):
"""Test docker manager run method"""
docker_manager = DockerManager(
"python",
"2.0.0",
"repo_dir",
)
docker_manager.run()
mock_subprocess_run.assert_called_with(
f"{docker_manager.run_cmd} '{docker_manager.bash_cmd}'", shell=True, check=True, cwd="repo_dir"
)
docker_manager.run("run_cmd", "bash_cmd")
mock_subprocess_run.assert_called_with("run_cmd 'bash_cmd'", shell=True, check=True, cwd="repo_dir")