45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
|
from slic.utils.dotdir import *
|
|
|
|
@pytest.fixture
|
|
def patch_home(monkeypatch, tmp_path):
|
|
# Temporarily replace Path.home() with a temporary directory to avoid modifying the real user home during tests
|
|
monkeypatch.setattr("pathlib.Path.home", lambda: tmp_path)
|
|
return tmp_path # provide tmp_path for use inside tests
|
|
|
|
# test (__init__)
|
|
def test_dotdir_creation_and_base_exists(patch_home):
|
|
# Instantiate DotDir with a folder name
|
|
dotdir = DotDir(".testfolder")
|
|
|
|
# Assert that the base path is tmp_path/.testfolder
|
|
assert dotdir.base == patch_home / ".testfolder"
|
|
|
|
# Assert that the directory was physically created on disk
|
|
assert dotdir.base.exists()
|
|
|
|
# Assert that the path is indeed a directory, not a file
|
|
assert dotdir.base.is_dir()
|
|
|
|
# test (__repr__)
|
|
def test_dotdir_repr_returns_path_str(patch_home):
|
|
dotdir = DotDir(".testfolder")
|
|
|
|
# Assert that __repr__ returns the string version of the good base path
|
|
assert repr(dotdir) == str(dotdir.base)
|
|
|
|
# test (__call__)
|
|
def test_dotdir_call(patch_home):
|
|
dotdir = DotDir(".testfolder")
|
|
child_name = "config.yaml"
|
|
|
|
# Call the DotDir instance with a filename to get full child path
|
|
child_path = dotdir(child_name)
|
|
|
|
# Assert the returned path matches base path joined with child name
|
|
assert child_path == dotdir.base / child_name
|