Example #1
0
def test_process_selected(outdir_gen, sources,
                          resources_in, resources_out, target_fun):
    if target_fun:
       targets_in = target_fun(resources_in)
       targets_out = target_fun(resources_out)
    else:
       targets_in = resources_in.copy()
       targets_out = normal_targets(resources_out)
    expected = expected_error_free(sources)
    outdir = outdir_gen.next()
    with temp_workdir(outdir):
        error_free = expak.extract_resources(sources, targets_in)
        assert error_free == expected
        validate(outdir, FILES_PATH, targets_out)
        remaining_resources = resources_in.difference(resources_out)
        if isinstance(targets_in, dict):
            assert remaining_resources == set(targets_in.keys())
        else:
            assert remaining_resources == targets_in
    if target_fun:
       targets_in = target_fun(resources_in)
    else:
       targets_in = resources_in.copy()
    outdir = outdir_gen.next()
    with temp_workdir(outdir):
        error_free = expak.process_resources(sources, mangler, targets_in)
        assert error_free == expected
        validate(outdir, MANGLED_FILES_PATH, targets_out)
        remaining_resources = resources_in.difference(resources_out)
        if isinstance(targets_in, dict):
            assert remaining_resources == set(targets_in.keys())
        else:
            assert remaining_resources == targets_in
Example #2
0
def go(settings, targets_table):
    """Process according to the given settings and sound selections.

    Get the pak file paths from the settings. Get and apply the working
    directory from the settings. Get the converter definition from the
    settings and define a converter function. Process each pak file using
    :func:`expak.process_resources`.

    :param settings:      settings
    :type settings:       :class:`config.Settings`
    :param targets_table: table mapping sound selections to output names
    :type targets_table:  dict(str,str)

    :returns: False if the converter definition is invalid, True otherwise
    :rtype:   bool

    :raises config.BadSetting: if a token name discovered setting evaluation
                               references an undefined setting

    :raises config.TooManySubstitutions: if token substitution goes on for
                                         too many iterations

    """
    # Get the paths of pak files to process.
    pak_paths_prep = settings.eval_prep('pak_paths').split(",")
    pak_paths = [settings.eval_finalize('pak_paths', p.strip())
                 for p in pak_paths_prep]
    if settings.is_defined('pak_home'):
        pak_home = os.path.abspath(settings.eval('pak_home'))
        abs_pak_paths = [os.path.join(pak_home, p) for p in pak_paths if p]
    else:
        abs_pak_paths = [os.path.abspath(p) for p in pak_paths if p]
    # Change to the defined working directory.
    set_working_dir(settings)
    # Make the converter function.
    converter = make_converter(settings)
    if not converter:
        return False
    # Process each pak file.
    for path in abs_pak_paths:
        verbose_print("")
        verbose_print("reading pak file {0}...".format(path))
        expak.process_resources(path, converter, targets_table)
    verbose_print("")
    return True
Example #3
0
def test_process_all(outdir_gen, sources, resources_out):
    expected = expected_error_free(sources)
    outdir = outdir_gen.next()
    with temp_workdir(outdir):
        error_free = expak.extract_resources(sources)
        assert error_free == expected
        validate(outdir, FILES_PATH, normal_targets(resources_out))
    outdir = outdir_gen.next()
    with temp_workdir(outdir):
        error_free = expak.process_resources(sources, mangler)
        assert error_free == expected
        validate(outdir, MANGLED_FILES_PATH, normal_targets(resources_out))
Example #4
0
def test_bad_process_selected(tmpdir, sources, resources_in, target_fun):
    if target_fun:
       targets_in = target_fun(resources_in)
    else:
       targets_in = resources_in.copy()
    outdir = str(tmpdir)
    with temp_workdir(outdir):
        assert not expak.process_resources(sources, bad_converter, targets_in)
        validate(outdir, FILES_PATH, {})
        if isinstance(targets_in, dict):
            assert resources_in == set(targets_in.keys())
        else:
            assert resources_in == targets_in
Example #5
0
def test_bad_process_all(tmpdir, sources):
    outdir = str(tmpdir)
    with temp_workdir(outdir):
        assert not expak.process_resources(sources, bad_converter)
        validate(outdir, FILES_PATH, {})