diff --git a/tests/test_project.py b/tests/test_project.py index eccff01..cd0233d 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -1,5 +1,7 @@ from pathlib import Path +import pytest + from kiwi_scp.instance import Project @@ -7,26 +9,20 @@ def test_example(): p = Project.from_directory(Path("example/hello-world.project")) assert p.directory == Path("example/hello-world.project") - assert len(p.services) == 5 + assert p.services != [] - s = p.services[0] - assert s.name == "greeter" - assert len(s.configs) == 0 - s = p.services[1] - assert s.name == "web" - assert len(s.configs) == 0 +def test_caching(): + p = Project.from_directory(Path("example/hello-world.project")) - s = p.services[2] - assert s.name == "db" - assert len(s.configs) == 0 + assert p is Project.from_directory(Path("example/hello-world.project")) - s = p.services[3] - assert s.name == "adminer" - assert len(s.configs) == 0 - s = p.services[4] - assert s.name == "another-web" - assert len(s.configs) == 1 - assert s.configs[0] == Path("html/index.html") +def test_no_such_dir(): + nonexistent_path = Path("nonexistent") + with pytest.raises(FileNotFoundError) as exc_info: + Project.from_directory(nonexistent_path) + + from kiwi_scp._constants import COMPOSE_FILE_NAME + assert exc_info.value.filename == str(nonexistent_path.joinpath(COMPOSE_FILE_NAME)) diff --git a/tests/test_service.py b/tests/test_service.py new file mode 100644 index 0000000..b44bba8 --- /dev/null +++ b/tests/test_service.py @@ -0,0 +1,62 @@ +from pathlib import Path + +from kiwi_scp.instance import Service + + +def test_no_description(): + s = Service.from_description( + name="s", + description={}, + ) + + assert s.name == "s" + assert s.configs == [] + + +def test_no_configs(): + s = Service.from_description( + name="s", + description={ + "image": "repo/image:tag", + }, + ) + + assert s.name == "s" + assert s.configs == [] + + +def test_no_configs_in_volumes(): + s = Service.from_description( + name="s", + description={ + "image": "repo/image:tag", + "volumes": [ + "docker_volume/third/dir:/path/to/third/mountpoint", + "${TARGETDIR}/some/dir:/path/to/some/mountpoint", + "$TARGETDIR/other/dir:/path/to/other/mountpoint", + ] + }, + ) + + assert s.name == "s" + assert s.configs == [] + + +def test_with_configs(): + s = Service.from_description( + name="s", + description={ + "image": "repo/image:tag", + "volumes": [ + "${CONFDIR}/some/config:/path/to/some/config", + "$CONFDIR/other/config:/path/to/other/config", + ] + }, + ) + + assert s.name == "s" + assert len(s.configs) == 2 + assert s.configs == [ + Path("some/config"), + Path("other/config"), + ]