Exemple #1
0
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()
Exemple #2
0
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'])
Exemple #3
0
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'])
Exemple #4
0
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'])
Exemple #5
0
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'
Exemple #6
0
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
Exemple #7
0
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'])
Exemple #8
0
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'])
Exemple #9
0
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'])
Exemple #10
0
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)