Export types of builtin fixture for type annotations
In order to allow users to type annotate fixtures they request, the types need to be imported from the `pytest` namespace. They are/were always available to import from the `_pytest` namespace, but that is not guaranteed to be stable. These types are only exported for the purpose of typing. Specifically, the following are *not* public: - Construction (`__init__`) - Subclassing - staticmethods and classmethods We try to combat them being used anyway by: - Marking the classes as `@final` when possible (already done). - Not documenting private stuff in the API Reference. - Using `_`-prefixed names or marking as `:meta private:` for private stuff. - Adding a keyword-only `_ispytest=False` to private constructors, warning if False, and changing pytest itself to pass True. In the future it will (hopefully) become a hard error. Hopefully that will be enough.
This commit is contained in:
@@ -1156,7 +1156,7 @@ def test_gitignore(testdir):
|
||||
from _pytest.cacheprovider import Cache
|
||||
|
||||
config = testdir.parseconfig()
|
||||
cache = Cache.for_config(config)
|
||||
cache = Cache.for_config(config, _ispytest=True)
|
||||
cache.set("foo", "bar")
|
||||
msg = "# Created by pytest automatically.\n*\n"
|
||||
gitignore_path = cache._cachedir.joinpath(".gitignore")
|
||||
@@ -1178,7 +1178,7 @@ def test_does_not_create_boilerplate_in_existing_dirs(testdir):
|
||||
"""
|
||||
)
|
||||
config = testdir.parseconfig()
|
||||
cache = Cache.for_config(config)
|
||||
cache = Cache.for_config(config, _ispytest=True)
|
||||
cache.set("foo", "bar")
|
||||
|
||||
assert os.path.isdir("v") # cache contents
|
||||
@@ -1192,7 +1192,7 @@ def test_cachedir_tag(testdir):
|
||||
from _pytest.cacheprovider import CACHEDIR_TAG_CONTENT
|
||||
|
||||
config = testdir.parseconfig()
|
||||
cache = Cache.for_config(config)
|
||||
cache = Cache.for_config(config, _ispytest=True)
|
||||
cache.set("foo", "bar")
|
||||
cachedir_tag_path = cache._cachedir.joinpath("CACHEDIR.TAG")
|
||||
assert cachedir_tag_path.read_bytes() == CACHEDIR_TAG_CONTENT
|
||||
|
||||
Reference in New Issue
Block a user