Repository navigation
Expand file tree
/
Copy pathtest_assure_directory.py
More file actions
44 lines (32 loc) · 1.71 KB
/
Copy pathtest_assure_directory.py
File metadata and controls
44 lines (32 loc) · 1.71 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
from pathlib import Path
import pytest
from git.util import assure_directory_exists
from test.lib.fixtures import writable_fixture
@pytest.fixture
def directory_fixture(monkeypatch):
with writable_fixture("empty.sh") as temporary:
directory = temporary.path().resolve()
with monkeypatch.context() as context:
context.chdir(directory)
yield directory
@pytest.mark.parametrize("path_type", [str, Path])
def test_file_in_current_directory_already_has_parent(directory_fixture, path_type):
assert assure_directory_exists(path_type("notes.txt"), is_file=True) is False
assert not (directory_fixture / "notes.txt").exists()
@pytest.mark.parametrize("path_type", [str, Path])
def test_nested_file_creates_only_missing_parent_directories(directory_fixture, path_type):
filename = path_type("new/nested/notes.txt")
assert assure_directory_exists(filename, is_file=True) is True
assert (directory_fixture / "new/nested").is_dir()
assert not (directory_fixture / "new/nested/notes.txt").exists()
assert assure_directory_exists(filename, is_file=True) is False
@pytest.mark.parametrize("path_type", [str, Path])
def test_existing_directory_is_unchanged(directory_fixture, path_type):
(directory_fixture / "existing").mkdir()
assert assure_directory_exists(path_type("existing")) is False
@pytest.mark.parametrize("path_type", [str, Path])
def test_file_cannot_be_used_as_parent_directory(directory_fixture, path_type):
(directory_fixture / "blocked").write_text("occupied\n")
with pytest.raises(FileExistsError):
assure_directory_exists(path_type("blocked/notes.txt"), is_file=True)
assert (directory_fixture / "blocked").read_text() == "occupied\n"