import os
import shutil
import pytest
@pytest.fixture(scope="function")
def testing_workdir(tmpdir, request):
"""Create a workdir in a safe temporary folder; cd into dir above before test, cd out after
:param tmpdir: py.test fixture, will be injected
:param request: py.test fixture-related, will be injected (see pytest docs)
"""
saved_path = os.getcwd()
tmpdir.chdir()
# temporary folder for profiling output, if any
tmpdir.mkdir("prof")
def return_to_saved_path():
if os.path.isdir(os.path.join(saved_path, "prof")):
profdir = tmpdir.join("prof")
files = profdir.listdir("*.prof") if profdir.isdir() else []
for f in files:
shutil.copy(str(f), os.path.join(saved_path, "prof", f.basename))
os.chdir(saved_path)
request.addfinalizer(return_to_saved_path)
return str(tmpdir)