Use pathlib instead of os.path where applicable (#112)

* Use pathlib in test_creation.py

* Use pathlib for PROJECT_DIR example in make_dataset.py

* Add pathlib2 for backwards compatibility if project is Python 2
This commit is contained in:
Isaac Slavitt
2018-04-16 14:58:45 -04:00
committed by Peter Bull
parent 72b3e66989
commit 74a2e29fef
3 changed files with 34 additions and 37 deletions

View File

@@ -1,93 +1,86 @@
import os
import pytest
import shutil
from pathlib import Path
from cookiecutter import main
import pytest
CCDS_ROOT = os.path.abspath(
os.path.join(
__file__,
os.pardir,
os.pardir
)
)
CCDS_ROOT = Path(__file__).parents[1].resolve()
@pytest.fixture(scope='function')
def default_baked_project(tmpdir):
out_dir = str(tmpdir.mkdir('data-project'))
temp = tmpdir.mkdir('data-project')
out_dir = Path(temp).resolve()
main.cookiecutter(
CCDS_ROOT,
str(CCDS_ROOT),
no_input=True,
extra_context={},
output_dir=out_dir
)
# default project name is project_name
yield os.path.join(out_dir, 'project_name')
yield out_dir / 'project_name'
# cleanup after
shutil.rmtree(out_dir)
def test_readme(default_baked_project):
readme_path = os.path.join(default_baked_project, 'README.md')
readme_path = default_baked_project / 'README.md'
assert os.path.exists(readme_path)
assert readme_path.exists()
assert no_curlies(readme_path)
def test_license(default_baked_project):
license_path = os.path.join(default_baked_project, 'LICENSE')
license_path = default_baked_project / 'LICENSE'
assert os.path.exists(license_path)
assert license_path.exists()
assert no_curlies(license_path)
def test_requirements(default_baked_project):
reqs_path = os.path.join(default_baked_project, 'requirements.txt')
reqs_path = default_baked_project / 'requirements.txt'
assert os.path.exists(reqs_path)
assert reqs_path.exists()
assert no_curlies(reqs_path)
def test_makefile(default_baked_project):
makefile_path = os.path.join(default_baked_project, 'Makefile')
makefile_path = default_baked_project / 'Makefile'
assert os.path.exists(makefile_path)
assert makefile_path.exists()
assert no_curlies(makefile_path)
def test_folders(default_baked_project):
expected_dirs = [
'data',
os.path.join('data', 'external'),
os.path.join('data', 'interim'),
os.path.join('data', 'processed'),
os.path.join('data', 'raw'),
'data/external',
'data/interim',
'data/processed',
'data/raw',
'docs',
'models',
'notebooks',
'references',
'reports',
os.path.join('reports', 'figures'),
'reports/figures',
'src',
os.path.join('src', 'data'),
os.path.join('src', 'features'),
os.path.join('src', 'models'),
os.path.join('src', 'visualization')
'src/data',
'src/features',
'src/models',
'src/visualization',
]
ignored_dirs = [
default_baked_project
]
abs_expected_dirs = [os.path.join(default_baked_project, d) for
d in expected_dirs]
str(default_baked_project)
]
abs_expected_dirs = [str(default_baked_project / d) for d in expected_dirs]
abs_dirs, _, _ = list(zip(*os.walk(default_baked_project)))
assert len(set(abs_expected_dirs + ignored_dirs) - set(abs_dirs)) == 0
@@ -106,5 +99,4 @@ def no_curlies(filepath):
]
template_strings_in_file = [s in data for s in template_strings]
return not any(template_strings_in_file)