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)
|