晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/proc/thread-self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/pyfakefs/ |
| Current File : //proc/thread-self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/pyfakefs/pytest_plugin.py |
"""A pytest plugin for using pyfakefs as a fixture
When pyfakefs is installed, the "fs" fixture becomes available.
:Usage:
def my_fakefs_test(fs):
fs.create_file('/var/data/xx1.txt')
assert os.path.exists('/var/data/xx1.txt')
"""
import contextlib
import py
import pytest
from _pytest import capture
from pyfakefs.fake_filesystem_unittest import Patcher, Pause
try:
from _pytest import pathlib
except ImportError:
pathlib = None # type:ignore[assignment]
Patcher.SKIPMODULES.add(py)
Patcher.SKIPMODULES.add(pytest)
Patcher.SKIPMODULES.add(capture)
if pathlib is not None:
Patcher.SKIPMODULES.add(pathlib)
@pytest.fixture
def fs(request):
"""Fake filesystem."""
if hasattr(request, "param"):
# pass optional parameters via @pytest.mark.parametrize
patcher = Patcher(*request.param)
else:
patcher = Patcher()
patcher.setUp()
yield patcher.fs
patcher.tearDown()
@pytest.fixture(scope="class")
def fs_class(request):
"""Class-scoped fake filesystem fixture."""
if hasattr(request, "param"):
patcher = Patcher(*request.param)
else:
patcher = Patcher()
patcher.setUp()
yield patcher.fs
patcher.tearDown()
@pytest.fixture(scope="module")
def fs_module(request):
"""Module-scoped fake filesystem fixture."""
if hasattr(request, "param"):
patcher = Patcher(*request.param)
else:
patcher = Patcher()
patcher.setUp()
yield patcher.fs
patcher.tearDown()
@pytest.fixture(scope="session")
def fs_session(request):
"""Session-scoped fake filesystem fixture."""
if hasattr(request, "param"):
patcher = Patcher(*request.param)
else:
patcher = Patcher()
patcher.setUp()
yield patcher.fs
patcher.tearDown()
@pytest.hookimpl(tryfirst=True)
def pytest_sessionfinish(session, exitstatus):
"""Make sure that the cache is cleared before the final test shutdown."""
Patcher.clear_fs_cache()
@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_logreport(report):
"""Make sure that patching is not active during reporting."""
pause = Patcher.PATCHER is not None and Patcher.PATCHER.is_patching
context_mgr = Pause(Patcher.PATCHER) if pause else contextlib.nullcontext()
with context_mgr:
yield
if pause and report.when == "teardown":
# if we get here, we are not in a function scope fixture
# in this case, we still want to pause patching between the tests
Patcher.PATCHER.pause()
@pytest.hookimpl(tryfirst=True)
def pytest_runtest_setup(item):
# resume patcher if not in a function scope
if Patcher.PATCHER is not None:
Patcher.PATCHER.resume()
|