mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 00:04:42 +04:00
Merge 558793bbc2 into 8416413a0e
This commit is contained in:
commit
b534cafc2d
2 changed files with 36 additions and 8 deletions
|
|
@ -127,13 +127,25 @@ def install_environment(
|
|||
#
|
||||
# Because of this, we allow specifying "cli" dependencies by prefixing
|
||||
# with 'cli:'.
|
||||
cli_deps = {
|
||||
dep for dep in additional_dependencies if dep.startswith('cli:')
|
||||
}
|
||||
lib_deps = set(additional_dependencies) - cli_deps
|
||||
#
|
||||
# We can pass arbitrary arguments to the `cargo install` invocation by
|
||||
# adding '--' before the arguments.
|
||||
cli_deps = []
|
||||
lib_deps = []
|
||||
cargo_params = []
|
||||
for index, dep in enumerate(additional_dependencies):
|
||||
if dep == '--':
|
||||
cargo_params = list(additional_dependencies[index + 1:])
|
||||
break
|
||||
if dep.startswith('cli:'):
|
||||
cli_deps.append(dep)
|
||||
continue
|
||||
lib_deps.append(dep)
|
||||
cli_deps_set = set(cli_deps)
|
||||
lib_deps_set = set(lib_deps)
|
||||
|
||||
packages_to_install: set[tuple[str, ...]] = {('--path', '.')}
|
||||
for cli_dep in cli_deps:
|
||||
for cli_dep in cli_deps_set:
|
||||
cli_dep = cli_dep.removeprefix('cli:')
|
||||
package, _, crate_version = cli_dep.partition(':')
|
||||
if crate_version != '':
|
||||
|
|
@ -150,11 +162,12 @@ def install_environment(
|
|||
tmpdir = ctx.enter_context(tempfile.TemporaryDirectory())
|
||||
ctx.enter_context(envcontext((('RUSTUP_HOME', tmpdir),)))
|
||||
|
||||
if len(lib_deps) > 0:
|
||||
_add_dependencies(prefix, lib_deps)
|
||||
if len(lib_deps_set) > 0:
|
||||
_add_dependencies(prefix, lib_deps_set)
|
||||
|
||||
for args in packages_to_install:
|
||||
cmd_output_b(
|
||||
'cargo', 'install', '--bins', '--root', envdir, *args,
|
||||
*cargo_params,
|
||||
cwd=prefix.prefix_dir,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -44,13 +44,19 @@ def _make_hello_world(tmp_path):
|
|||
src_dir.joinpath('main.rs').write_text(
|
||||
'fn main() {\n'
|
||||
' println!("Hello, world!");\n'
|
||||
' if cfg!(feature = "foo") {\n'
|
||||
' println!("With feature foo");\n'
|
||||
' }\n'
|
||||
'}\n',
|
||||
)
|
||||
tmp_path.joinpath('Cargo.toml').write_text(
|
||||
'[package]\n'
|
||||
'name = "hello_world"\n'
|
||||
'version = "0.1.0"\n'
|
||||
'edition = "2021"\n',
|
||||
'edition = "2021"\n'
|
||||
'\n'
|
||||
'[features]\n'
|
||||
'foo = []\n',
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -113,3 +119,12 @@ def test_run_lib_additional_dependencies(tmp_path):
|
|||
assert bin_dir.is_dir()
|
||||
assert not bin_dir.joinpath('shellharden').exists()
|
||||
assert not bin_dir.joinpath('shellharden.exe').exists()
|
||||
|
||||
|
||||
def test_run_features_additional_dependencies(tmp_path):
|
||||
_make_hello_world(tmp_path)
|
||||
|
||||
deps = ('shellharden:4.2.0', 'git-version')
|
||||
cargo_params = ('--', '--features', 'foo')
|
||||
ret = run_language(tmp_path, rust, 'hello_world', deps=deps + cargo_params)
|
||||
assert ret == (0, b'Hello, world!\nWith feature foo\n')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue