repo-cloner/tests/lib/test_repo_dir_structure.py

105 lines
2.9 KiB
Python
Raw Normal View History

import xml.dom.expatbuilder
from repo_cloner.lib.repo_dir_structure import RepoDirStructure
from repo_cloner.lib.dir_not_found_error import DirNotFoundError
from repo_cloner.lib.config_file_not_found_error import ConfigFileNotFoundError
from pathlib import PosixPath
import pytest
def test_init():
X = RepoDirStructure("/tmp")
assert X._base_dir == "/tmp"
assert X._conf_dir == "/tmp/config"
assert X._repos_dir == "/tmp/repos"
assert X._cache_dir == "/tmp/cache"
def test_config_filename():
X = RepoDirStructure("/tmp")
assert X._RepoDirStructure__config_filename == "/tmp/config/cloner.cfg"
def test_no_base_dir(tmp_path: PosixPath):
x = tmp_path.joinpath("nonexistent")
X = RepoDirStructure(x)
with pytest.raises(DirNotFoundError) as excinfo:
X.base_dir_exists
assert "DirNotFoundError: Directory does not exist / is not a dir: " in excinfo.exconly()
assert excinfo.exconly().endswith("/nonexistent")
def test_no_config(tmp_path: PosixPath):
X = RepoDirStructure(tmp_path)
with pytest.raises(DirNotFoundError) as excinfo:
X.conf_dir_exists
assert "DirNotFoundError: Directory does not exist / is not a dir: " in excinfo.exconly()
assert excinfo.exconly().endswith("/config")
def test_no_cache(tmp_path: PosixPath):
tmp_path.joinpath("config").mkdir()
X = RepoDirStructure(tmp_path)
with pytest.raises(DirNotFoundError) as excinfo:
X.cache_dir_exists
assert "DirNotFoundError: Directory does not exist / is not a dir: " in excinfo.exconly()
assert excinfo.exconly().endswith("/cache")
def test_no_repos(tmp_path: PosixPath):
tmp_path.joinpath("config").mkdir()
tmp_path.joinpath("cache").mkdir()
X = RepoDirStructure(tmp_path)
with pytest.raises(DirNotFoundError) as excinfo:
X.repos_dir_exists
assert "DirNotFoundError: Directory does not exist / is not a dir: " in excinfo.exconly()
assert excinfo.exconly().endswith("/repos")
def test_dirs_exist_okay(tmp_path: PosixPath):
tmp_path.joinpath("config").mkdir()
tmp_path.joinpath("cache").mkdir()
tmp_path.joinpath("repos").mkdir()
X = RepoDirStructure(tmp_path)
assert X.base_dir_exists
assert X.conf_dir_exists
assert X.cache_dir_exists
assert X.repos_dir_exists
assert X.dirs_exist
def test_base_dir():
X = RepoDirStructure("/a/b")
assert X.base_dir == "/a/b"
def test_cache_dir():
X = RepoDirStructure("/a/b")
assert X.cache_dir == "/a/b/cache"
def test_config_dir():
X = RepoDirStructure("/a/b")
assert X.conf_dir == "/a/b/config"
def test_repos_dir():
X = RepoDirStructure("/a/c")
assert X.repos_dir == "/a/c/repos"
def test_has_config(tmp_path: PosixPath):
tmp_path.joinpath("config").mkdir()
tmp_path.joinpath("cache").mkdir()
tmp_path.joinpath("repos").mkdir()
X = RepoDirStructure(tmp_path)
with pytest.raises(ConfigFileNotFoundError) as excinfo:
X.has_config
assert "Config file does not exist: " in excinfo.exconly()
assert "config/cloner.cfg" in excinfo.exconly()
tmp_path.joinpath("config", "cloner.cfg").touch()
assert X.has_config