47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import sys
|
|
import pytest
|
|
import shutil
|
|
from pathlib import Path
|
|
from cookiecutter import main
|
|
|
|
CCDS_ROOT = Path(__file__).parents[1].resolve()
|
|
|
|
args = {
|
|
'project_name': 'DrivenData',
|
|
'author_name': 'DrivenData',
|
|
'open_source_license': 'BSD-3-Clause',
|
|
'python_interpreter': 'python'
|
|
}
|
|
|
|
|
|
def system_check(basename):
|
|
platform = sys.platform
|
|
if 'linux' in platform:
|
|
basename = basename.lower()
|
|
return basename
|
|
|
|
|
|
@pytest.fixture(scope='class', params=[{}, args])
|
|
def default_baked_project(tmpdir_factory, request):
|
|
temp = tmpdir_factory.mktemp('data-project')
|
|
out_dir = Path(temp).resolve()
|
|
|
|
pytest.param = request.param
|
|
main.cookiecutter(
|
|
str(CCDS_ROOT),
|
|
no_input=True,
|
|
extra_context=pytest.param,
|
|
output_dir=out_dir
|
|
)
|
|
|
|
pn = pytest.param.get('project_name') or 'project_name'
|
|
|
|
# project name gets converted to lower case on Linux but not Mac
|
|
pn = system_check(pn)
|
|
|
|
proj = out_dir / pn
|
|
request.cls.path = proj
|
|
yield
|
|
|
|
# cleanup after
|
|
shutil.rmtree(out_dir) |