Add test for Cache.mkdir
This commit is contained in:
		
							parent
							
								
									a02cc0ad1b
								
							
						
					
					
						commit
						e06c337bd8
					
				| 
						 | 
					@ -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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue