Add test for Cache.mkdir

This commit is contained in:
Tamir Duberstein 2024-04-08 15:02:31 +01:00
parent a02cc0ad1b
commit e06c337bd8
No known key found for this signature in database
1 changed files with 27 additions and 3 deletions

View File

@ -1,3 +1,5 @@
from enum import auto
from enum import Enum
import os import os
from pathlib import Path from pathlib import Path
import shutil import shutil
@ -7,6 +9,7 @@ from typing import List
from typing import Sequence from typing import Sequence
from typing import Tuple from typing import Tuple
from _pytest.compat import assert_never
from _pytest.config import ExitCode from _pytest.config import ExitCode
from _pytest.monkeypatch import MonkeyPatch from _pytest.monkeypatch import MonkeyPatch
from _pytest.pytester import Pytester from _pytest.pytester import Pytester
@ -1260,20 +1263,41 @@ class TestReadme:
assert self.check_readme(pytester) is True assert self.check_readme(pytester) is True
def test_gitignore(pytester: Pytester) -> None: class Action(Enum):
"""Action to perform on the cache directory."""
MKDIR = auto()
SET = auto()
@pytest.mark.parametrize("action", list(Action))
def test_gitignore(
pytester: Pytester,
action: Action,
) -> None:
"""Ensure we automatically create .gitignore file in the pytest_cache directory (#3286).""" """Ensure we automatically create .gitignore file in the pytest_cache directory (#3286)."""
from _pytest.cacheprovider import Cache from _pytest.cacheprovider import Cache
config = pytester.parseconfig() config = pytester.parseconfig()
cache = Cache.for_config(config, _ispytest=True) cache = Cache.for_config(config, _ispytest=True)
cache.set("foo", "bar") if action == Action.MKDIR:
cache.mkdir("foo")
elif action == Action.SET:
cache.set("foo", "bar")
else:
assert_never(action)
msg = "# Created by pytest automatically.\n*\n" msg = "# Created by pytest automatically.\n*\n"
gitignore_path = cache._cachedir.joinpath(".gitignore") gitignore_path = cache._cachedir.joinpath(".gitignore")
assert gitignore_path.read_text(encoding="UTF-8") == msg assert gitignore_path.read_text(encoding="UTF-8") == msg
# Does not overwrite existing/custom one. # Does not overwrite existing/custom one.
gitignore_path.write_text("custom", encoding="utf-8") gitignore_path.write_text("custom", encoding="utf-8")
cache.set("something", "else") if action == Action.MKDIR:
cache.mkdir("something")
elif action == Action.SET:
cache.set("something", "else")
else:
assert_never(action)
assert gitignore_path.read_text(encoding="UTF-8") == "custom" assert gitignore_path.read_text(encoding="UTF-8") == "custom"