Merge pull request #12199 from tamird/mkdir-test-init
Add test for Cache.mkdir
This commit is contained in:
commit
1f001cd105
|
@ -1,10 +1,15 @@
|
||||||
# mypy: allow-untyped-defs
|
from enum import auto
|
||||||
|
from enum import Enum
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import shutil
|
import shutil
|
||||||
|
from typing import Any
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import List
|
from typing import List
|
||||||
|
from typing import Sequence
|
||||||
|
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
|
||||||
|
@ -175,7 +180,9 @@ class TestNewAPI:
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("env", ((), ("TOX_ENV_DIR", "/tox_env_dir")))
|
@pytest.mark.parametrize("env", ((), ("TOX_ENV_DIR", "/tox_env_dir")))
|
||||||
def test_cache_reportheader(env, pytester: Pytester, monkeypatch: MonkeyPatch) -> None:
|
def test_cache_reportheader(
|
||||||
|
env: Sequence[str], pytester: Pytester, monkeypatch: MonkeyPatch
|
||||||
|
) -> None:
|
||||||
pytester.makepyfile("""def test_foo(): pass""")
|
pytester.makepyfile("""def test_foo(): pass""")
|
||||||
if env:
|
if env:
|
||||||
monkeypatch.setenv(*env)
|
monkeypatch.setenv(*env)
|
||||||
|
@ -507,7 +514,7 @@ class TestLastFailed:
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
def rlf(fail_import, fail_run):
|
def rlf(fail_import: int, fail_run: int) -> Any:
|
||||||
monkeypatch.setenv("FAILIMPORT", str(fail_import))
|
monkeypatch.setenv("FAILIMPORT", str(fail_import))
|
||||||
monkeypatch.setenv("FAILTEST", str(fail_run))
|
monkeypatch.setenv("FAILTEST", str(fail_run))
|
||||||
|
|
||||||
|
@ -555,7 +562,9 @@ class TestLastFailed:
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
def rlf(fail_import, fail_run, args=()):
|
def rlf(
|
||||||
|
fail_import: int, fail_run: int, args: Sequence[str] = ()
|
||||||
|
) -> Tuple[Any, Any]:
|
||||||
monkeypatch.setenv("FAILIMPORT", str(fail_import))
|
monkeypatch.setenv("FAILIMPORT", str(fail_import))
|
||||||
monkeypatch.setenv("FAILTEST", str(fail_run))
|
monkeypatch.setenv("FAILTEST", str(fail_run))
|
||||||
|
|
||||||
|
@ -1254,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)
|
||||||
|
if action == Action.MKDIR:
|
||||||
|
cache.mkdir("foo")
|
||||||
|
elif action == Action.SET:
|
||||||
cache.set("foo", "bar")
|
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")
|
||||||
|
if action == Action.MKDIR:
|
||||||
|
cache.mkdir("something")
|
||||||
|
elif action == Action.SET:
|
||||||
cache.set("something", "else")
|
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"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue