Пример #1
0
def test_install_rbenv(tempdir_factory):
    prefix = Prefix(tempdir_factory.get())
    _install_rbenv(prefix)
    # Should have created rbenv directory
    assert os.path.exists(prefix.path('rbenv-default'))
    # We should have created our `activate` script
    activate_path = prefix.path('rbenv-default', 'bin', 'activate')
    assert os.path.exists(activate_path)

    # Should be able to activate using our script and access rbenv
    cmd_output(
        'bash', '-c',
        '. {} && rbenv --help'.format(
            pipes.quote(prefix.path('rbenv-default', 'bin', 'activate')),
        ),
    )
Пример #2
0
def test_install_rbenv_with_version(tempdir_factory):
    prefix = Prefix(tempdir_factory.get())
    _install_rbenv(prefix, version='1.9.3p547')

    # Should be able to activate and use rbenv install
    cmd_output(
        'bash', '-c',
        '. {} && rbenv install --help'.format(
            pipes.quote(prefix.path('rbenv-1.9.3p547', 'bin', 'activate')),
        ),
    )
Пример #3
0
def _envdir(prefix: Prefix, version: str) -> str:
    directory = helpers.environment_dir(ENVIRONMENT_DIR, version)
    return prefix.path(directory)
Пример #4
0
def in_env(prefix: Prefix) -> Generator[None, None, None]:
    envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT), )
    with envcontext(get_env_patch(envdir)):
        yield
Пример #5
0
def test_path_multiple_args():
    instance = Prefix('foo')
    ret = instance.path('bar', 'baz')
    assert ret == os.path.join('foo', 'bar', 'baz')
Пример #6
0
def test_path(prefix, path_end, expected_output):
    instance = Prefix(prefix)
    ret = instance.path(path_end)
    assert ret == expected_output
Пример #7
0
def _get_env_dir(prefix: Prefix, version: str) -> str:
    return prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version))
Пример #8
0
def _state_filename(prefix: Prefix, venv: str) -> str:
    return prefix.path(venv, f'.install_state_v{C.INSTALLED_STATE_VERSION}')
Пример #9
0
def in_env(
    prefix: Prefix, ) -> Generator[None, None, None]:  # pragma: win32 no cover
    target_dir = prefix.path(
        helpers.environment_dir(ENVIRONMENT_DIR, get_default_version()), )
    with envcontext(get_env_patch(target_dir)):
        yield
Пример #10
0
def in_env(prefix: Prefix, language_version: str,) -> Generator[None, None, None]:
    directory = helpers.environment_dir(ENVIRONMENT_DIR, language_version)
    envdir = prefix.path(directory)
    with envcontext(get_env_patch(envdir)):
        yield
Пример #11
0
def _envdir(prefix: Prefix) -> str:  # pragma: win32 no cover
    directory = helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT)
    return prefix.path(directory)
Пример #12
0
def test_path_multiple_args():
    instance = Prefix('foo')
    ret = instance.path('bar', 'baz')
    assert ret == os.path.join('foo', 'bar', 'baz')
Пример #13
0
def test_path(prefix, path_end, expected_output):
    instance = Prefix(prefix)
    ret = instance.path(path_end)
    assert ret == expected_output
Пример #14
0
def install_environment(
    prefix: Prefix,
    version: str,
    additional_dependencies: Sequence[str],
) -> None:
    helpers.assert_version_default('dart', version)

    envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version))
    bin_dir = os.path.join(envdir, 'bin')

    def _install_dir(prefix_p: Prefix, pub_cache: str) -> None:
        dart_env = {**os.environ, 'PUB_CACHE': pub_cache}

        with open(prefix_p.path('pubspec.yaml')) as f:
            pubspec_contents = yaml_load(f)

        helpers.run_setup_cmd(prefix_p, ('dart', 'pub', 'get'), env=dart_env)

        for executable in pubspec_contents['executables']:
            helpers.run_setup_cmd(
                prefix_p,
                (
                    'dart',
                    'compile',
                    'exe',
                    '--output',
                    os.path.join(bin_dir, win_exe(executable)),
                    prefix_p.path('bin', f'{executable}.dart'),
                ),
                env=dart_env,
            )

    with clean_path_on_failure(envdir):
        os.makedirs(bin_dir)

        with tempfile.TemporaryDirectory() as tmp:
            _install_dir(prefix, tmp)

        for dep_s in additional_dependencies:
            with tempfile.TemporaryDirectory() as dep_tmp:
                dep, _, version = dep_s.partition(':')
                if version:
                    dep_cmd: tuple[str, ...] = (dep, '--version', version)
                else:
                    dep_cmd = (dep, )

                helpers.run_setup_cmd(
                    prefix,
                    ('dart', 'pub', 'cache', 'add', *dep_cmd),
                    env={
                        **os.environ, 'PUB_CACHE': dep_tmp
                    },
                )

                # try and find the 'pubspec.yaml' that just got added
                for root, _, filenames in os.walk(dep_tmp):
                    if 'pubspec.yaml' in filenames:
                        with tempfile.TemporaryDirectory() as copied:
                            pkg = os.path.join(copied, 'pkg')
                            shutil.copytree(root, pkg)
                            _install_dir(Prefix(pkg), dep_tmp)
                        break
                else:
                    raise AssertionError(
                        f'could not find pubspec.yaml for {dep_s}', )