def test_sync_source_files_create_new_file(tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ 'src': [ 'Main.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) target_dir = Path(str(project_dir / 'tmp')) target_dir.mkdir() project_tasks.sync_action(project, target_dir).execute() assert (target_dir / 'Main.elm').exists()
def test_dependencies_task_creator_creates_matches_actual_basenames( mock_popular_packages, tmpdir, elm_version, make_elm_project): project_dir = make_elm_project(elm_version, tmpdir, copy_elm_stuff=True) output_dir = tmpdir.join('docs') with project_dir.as_cwd(): project = elm_project.from_path(Path('.')) config = ProjectConfig() output_path = Path(str(output_dir)) # expected result = _create_tasks(project.path, config, None, output_path) result_basenames = _basenames_in_first_seen_order(result) # actual deps_creator = tasks.build_dependencies_task_creator( project, ProjectConfig(), output_path) # note: relies on doit internals delayed_task_creates = set(deps_creator.doit_create_after.creates) assert delayed_task_creates == set( result_basenames['task_dependencies'])
def test_glob_project_modules_can_include_path_in_non_dot_source_dir( tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ 'src': [ 'Main.elm', 'MissingModuleComment.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) config = elm_project.ProjectConfig( include_paths=_resolve_paths(project_dir, 'src/Main.elm'), exclude_modules=[], force_exclusion=False, ) modules = list(_glob_project_modules(project, config)) assert set(modules) == set(['Main'])
def test_glob_project_modules_includes_all_by_default( tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ '.': [ 'Main.elm', 'MissingModuleComment.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) config = elm_project.ProjectConfig( include_paths=[], exclude_modules=[], force_exclusion=False, ) modules = list(_glob_project_modules(project, config)) assert set(modules) == set(['Main', 'MissingModuleComment'])
def test_sync_source_files_update_file(tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ 'src': [ 'Main.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) target_dir = Path(str(project_dir / 'tmp')) target_dir.mkdir() project_tasks.sync_action(project, target_dir).execute() main_elm = project_dir.join('src', 'Main.elm') main_elm.write('updated for testing') project_tasks.sync_action(project, target_dir).execute() assert (target_dir / 'Main.elm').read_text() == 'updated for testing'
def build_task_creators(project_path: Path, project_config: elm_project.ProjectConfig, elm_path: Optional[Path], output_path: Optional[Path] = None, build_path: Optional[Path] = None, mount_point: str = '', validate: bool = False): project = elm_project.from_path(project_path) if not validate: project.add_direct_dependencies( catalog_tasks.missing_popular_packages( list(project.direct_dependency_names()))) if build_path is None: build_path = project_path / '.elm-doc' task_creators = {} task_creators['task_main_project'] = build_main_project_task_creator( project, project_config, elm_path, output_path, build_path, mount_point, validate, ) if validate: return task_creators task_creators['task_dependencies'] = build_dependencies_task_creator( project, project_config, output_path, mount_point, ) task_creators['task_assets'] = build_assets_task_creator(output_path) return task_creators
def test_glob_project_modules_excludes_take_precedence_over_includes_if_forced( tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ '.': [ 'Main.elm', 'MissingModuleComment.elm', 'PublicFunctionNotInAtDocs.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) config = elm_project.ProjectConfig( include_paths=_resolve_paths(project_dir, 'Main.elm', 'MissingModuleComment.elm'), exclude_modules=['MissingModuleComment'], force_exclusion=True, ) modules = list(_glob_project_modules(project, config)) assert set(modules) == set(['Main'])
def test_glob_project_modules_exclude_source_directories( tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ 'src1': [ 'Main.elm', ], 'src2': [ 'PublicFunctionNotInAtDocs.elm', ], }, copy_elm_stuff=False, ) project = elm_project.from_path(Path(str(project_dir))) config = elm_project.ProjectConfig( include_paths=[], exclude_source_directories=['src2'], force_exclusion=True, ) modules = list(_glob_project_modules(project, config)) assert set(modules) == set(['Main'])
def test_glob_project_modules_ignores_dot_directories( tmpdir, elm_version, make_elm_project): project_dir = make_elm_project( elm_version, tmpdir, sources={ '.': [ 'Main.elm', ], }, copy_elm_stuff=False, ) dot_dir_file = Path(str(project_dir / '.elm-doc' / 'Extra.elm')) dot_dir_file.parent.mkdir() dot_dir_file.touch() project = elm_project.from_path(Path(str(project_dir))) config = elm_project.ProjectConfig( include_paths=[], exclude_modules=[], force_exclusion=False, ) modules = list(_glob_project_modules(project, config)) assert set(modules) == set(['Main'])
def test_fixture_includes_popular_packages(): # this is so that tests can be run without network access, I think.. workspace_path = Path(__file__).parent.parent / 'workspace' project = elm_project.from_path(workspace_path) assert set(project.direct_dependency_names()) >= set( catalog_tasks.popular_packages)