Exemplo n.º 1
0
def test_glob_package_modules_includes_all_by_default(tmpdir,
                                                      make_elm_project):
    elm_version = '0.18.0'
    make_elm_project(elm_version,
                     tmpdir,
                     copy_elm_stuff=False,
                     modules=[
                         'Main.elm',
                         'MissingModuleComment.elm',
                     ])
    package = elm_package.from_path(Path(str(tmpdir)))
    include_patterns = []
    exclude_patterns = []
    modules = list(
        elm_package.glob_package_modules(package, include_patterns,
                                         exclude_patterns))
    assert modules == ['Main', 'MissingModuleComment']
Exemplo n.º 2
0
def test_glob_package_modules_can_include_path_in_non_dot_source_dir(
        tmpdir, make_elm_project):
    elm_version = '0.18.0'
    make_elm_project(elm_version,
                     tmpdir,
                     src_dir='src',
                     copy_elm_stuff=False,
                     modules=[
                         'Main.elm',
                         'MissingModuleComment.elm',
                     ])
    package = elm_package.from_path(Path(str(tmpdir)))
    include_patterns = _resolve_paths(tmpdir, 'src/Main.elm')
    exclude_patterns = []
    modules = list(
        elm_package.glob_package_modules(package, include_patterns,
                                         exclude_patterns))
    assert modules == ['Main']
Exemplo n.º 3
0
def test_glob_package_modules_includes_take_precedence_over_excludes(
        tmpdir, make_elm_project):
    elm_version = '0.18.0'
    make_elm_project(elm_version,
                     tmpdir,
                     copy_elm_stuff=True,
                     modules=[
                         'Main.elm',
                         'MissingModuleComment.elm',
                         'PublicFunctionNotInAtDocs.elm',
                     ])
    package = elm_package.from_path(Path(str(tmpdir)))
    include_patterns = _resolve_paths(tmpdir, 'Main.elm',
                                      'MissingModuleComment.elm')
    exclude_patterns = ['MissingModuleComment']
    modules = list(
        elm_package.glob_package_modules(package,
                                         include_patterns,
                                         exclude_patterns,
                                         force_exclusion=False))
    assert modules == ['Main', 'MissingModuleComment']
Exemplo n.º 4
0
def create_package_tasks(output_path: Optional[Path],
                         package: ElmPackage,
                         elm_make: Path = None,
                         include_paths: List[str] = [],
                         exclude_modules: List[str] = [],
                         force_exclusion: bool = False,
                         mount_point: str = '',
                         validate: bool = False):
    basename = package_task_basename_factory(package)

    if package.is_dep:
        package_modules = package.exposed_modules
    else:
        package_modules = list(
            elm_package.glob_package_modules(package, include_paths,
                                             exclude_modules, force_exclusion))

    if validate:
        yield {
            'basename':
            basename('validate_package_docs_json'),
            'actions': [(build_package_docs_json, (package, package_modules), {
                'elm_make': elm_make,
                'validate': True
            })],
            'targets': [],
            # 'file_dep': [all_elm_files_in_source_dirs] # todo
        }
        return

    package_docs_root = output_path / 'packages' / package.user / package.project / package.version

    # package documentation.json
    docs_json_path = package_docs_root / 'documentation.json'
    if package.is_dep:
        yield {
            'basename':
            basename('download_package_docs_json'),
            'actions':
            [(create_folder, (str(package_docs_root), )),
             (download_package_docs_json, (package, docs_json_path))],
            'targets': [docs_json_path],
            # 'file_dep': [all_elm_files_in_source_dirs] # todo
            'uptodate': [True],
        }
    else:
        yield {
            'basename':
            basename('build_package_docs_json'),
            'actions': [(create_folder, (str(package_docs_root), )),
                        (build_package_docs_json, (package, package_modules), {
                            'elm_make': elm_make,
                            'output_path': docs_json_path
                        })],
            'targets': [docs_json_path],
            # 'file_dep': [all_elm_files_in_source_dirs] # todo
        }

    # package index page
    package_index_output = package_docs_root / 'index.html'
    yield {
        'basename':
        basename('package_page'),
        'actions': [(build_package_page, (package, package_index_output), {
            'mount_point': mount_point
        })],
        'targets': [package_index_output],
        # 'file_dep': [module['source_file']] #todo
        'uptodate': [True],
    }

    # package readme
    readme_filename = 'README.md'
    package_readme = package.path / readme_filename
    output_readme_path = package_docs_root / readme_filename
    if package_readme.is_file():
        yield {
            'basename':
            basename('package_readme'),
            'actions':
            [(copy_package_readme, (package_readme, output_readme_path))],
            'targets': [output_readme_path],
            'file_dep': [package_readme],
        }

    # link from /latest
    latest_path = package_docs_root.parent / 'latest'
    yield {
        'basename': basename('package_latest_link'),
        'actions':
        [(link_latest_package_dir, (package_docs_root, latest_path))],
        'targets': [latest_path],
        # 'file_dep': [], # todo
        'uptodate': [True]
    }

    # module pages
    for module in package_modules:
        module_output = package_docs_root / module.replace('.', '-')
        yield {
            'basename':
            basename('module_page') + ':' + module,
            'actions':
            [(build_package_page, (package, module_output, module), {
                'mount_point': mount_point
            })],
            'targets': [module_output],
            # 'file_dep': [module['source_file']] #todo
            'uptodate': [True],
        }