mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Auto merge of #12662 - Angelin01:limit-cargo-add-feature-print, r=weihanglo
Limit cargo add feature print
This commit is contained in:
commit
5c84ce06f0
@ -964,16 +964,45 @@ fn print_dep_table_msg(shell: &mut Shell, dep: &DependencyUI) -> CargoResult<()>
|
||||
} else {
|
||||
"".to_owned()
|
||||
};
|
||||
|
||||
shell.write_stderr(format_args!("{}Features{}:\n", prefix, suffix), &style::NOP)?;
|
||||
|
||||
const MAX_FEATURE_PRINTS: usize = 50;
|
||||
|
||||
let mut activated_printed = 0;
|
||||
let total_activated = activated.len();
|
||||
for feat in activated {
|
||||
if activated_printed >= MAX_FEATURE_PRINTS {
|
||||
let remaining = total_activated - activated_printed;
|
||||
shell.write_stderr(
|
||||
format_args!("{prefix}... {remaining} more activated features\n"),
|
||||
&style::NOP,
|
||||
)?;
|
||||
break;
|
||||
}
|
||||
|
||||
shell.write_stderr(&prefix, &style::NOP)?;
|
||||
shell.write_stderr('+', &style::GOOD)?;
|
||||
shell.write_stderr(format_args!(" {}\n", feat), &style::NOP)?;
|
||||
activated_printed += 1;
|
||||
}
|
||||
|
||||
let mut deactivated_printed = 0;
|
||||
let total_deactivated = deactivated.len();
|
||||
for feat in deactivated {
|
||||
if activated_printed + deactivated_printed >= MAX_FEATURE_PRINTS {
|
||||
let remaining = total_deactivated - deactivated_printed;
|
||||
shell.write_stderr(
|
||||
format_args!("{prefix}... {remaining} more deactivated features\n"),
|
||||
&style::NOP,
|
||||
)?;
|
||||
break;
|
||||
}
|
||||
|
||||
shell.write_stderr(&prefix, &style::NOP)?;
|
||||
shell.write_stderr('-', &style::ERROR)?;
|
||||
shell.write_stderr(format_args!(" {}\n", feat), &style::NOP)?;
|
||||
deactivated_printed += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,5 @@
|
||||
[workspace]
|
||||
|
||||
[package]
|
||||
name = "cargo-list-test-fixture"
|
||||
version = "0.0.0"
|
38
tests/testsuite/cargo_add/features_too_many_activated/mod.rs
Normal file
38
tests/testsuite/cargo_add/features_too_many_activated/mod.rs
Normal file
@ -0,0 +1,38 @@
|
||||
use cargo_test_support::compare::assert_ui;
|
||||
use cargo_test_support::prelude::*;
|
||||
use cargo_test_support::Project;
|
||||
use itertools::Itertools;
|
||||
|
||||
use cargo_test_support::curr_dir;
|
||||
|
||||
#[cargo_test]
|
||||
fn case() {
|
||||
const MANY_FEATURES_COUNT: usize = 200;
|
||||
const ACTIVATED_FEATURES_COUNT: usize = 100;
|
||||
|
||||
cargo_test_support::registry::init();
|
||||
let mut test_package =
|
||||
cargo_test_support::registry::Package::new("your-face", "99999.0.0+my-package");
|
||||
for i in 0..MANY_FEATURES_COUNT {
|
||||
test_package.feature(format!("eyes{i:03}").as_str(), &[]);
|
||||
}
|
||||
test_package.publish();
|
||||
|
||||
let project = Project::from_template(curr_dir!().join("in"));
|
||||
let project_root = project.root();
|
||||
let cwd = &project_root;
|
||||
|
||||
let features = (0..ACTIVATED_FEATURES_COUNT)
|
||||
.map(|i| format!("eyes{i:03}"))
|
||||
.join(",");
|
||||
snapbox::cmd::Command::cargo_ui()
|
||||
.arg("add")
|
||||
.arg_line(format!("your-face --features {features}").as_str())
|
||||
.current_dir(cwd)
|
||||
.assert()
|
||||
.success()
|
||||
.stdout_matches_path(curr_dir!().join("stdout.log"))
|
||||
.stderr_matches_path(curr_dir!().join("stderr.log"));
|
||||
|
||||
assert_ui().subset_matches(curr_dir!().join("out"), &project_root);
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
[workspace]
|
||||
|
||||
[package]
|
||||
name = "cargo-list-test-fixture"
|
||||
version = "0.0.0"
|
||||
|
||||
[dependencies]
|
||||
your-face = { version = "99999.0.0", features = ["eyes000", "eyes001", "eyes002", "eyes003", "eyes004", "eyes005", "eyes006", "eyes007", "eyes008", "eyes009", "eyes010", "eyes011", "eyes012", "eyes013", "eyes014", "eyes015", "eyes016", "eyes017", "eyes018", "eyes019", "eyes020", "eyes021", "eyes022", "eyes023", "eyes024", "eyes025", "eyes026", "eyes027", "eyes028", "eyes029", "eyes030", "eyes031", "eyes032", "eyes033", "eyes034", "eyes035", "eyes036", "eyes037", "eyes038", "eyes039", "eyes040", "eyes041", "eyes042", "eyes043", "eyes044", "eyes045", "eyes046", "eyes047", "eyes048", "eyes049", "eyes050", "eyes051", "eyes052", "eyes053", "eyes054", "eyes055", "eyes056", "eyes057", "eyes058", "eyes059", "eyes060", "eyes061", "eyes062", "eyes063", "eyes064", "eyes065", "eyes066", "eyes067", "eyes068", "eyes069", "eyes070", "eyes071", "eyes072", "eyes073", "eyes074", "eyes075", "eyes076", "eyes077", "eyes078", "eyes079", "eyes080", "eyes081", "eyes082", "eyes083", "eyes084", "eyes085", "eyes086", "eyes087", "eyes088", "eyes089", "eyes090", "eyes091", "eyes092", "eyes093", "eyes094", "eyes095", "eyes096", "eyes097", "eyes098", "eyes099"] }
|
@ -0,0 +1,55 @@
|
||||
Updating `dummy-registry` index
|
||||
Adding your-face v99999.0.0 to dependencies.
|
||||
Features:
|
||||
+ eyes000
|
||||
+ eyes001
|
||||
+ eyes002
|
||||
+ eyes003
|
||||
+ eyes004
|
||||
+ eyes005
|
||||
+ eyes006
|
||||
+ eyes007
|
||||
+ eyes008
|
||||
+ eyes009
|
||||
+ eyes010
|
||||
+ eyes011
|
||||
+ eyes012
|
||||
+ eyes013
|
||||
+ eyes014
|
||||
+ eyes015
|
||||
+ eyes016
|
||||
+ eyes017
|
||||
+ eyes018
|
||||
+ eyes019
|
||||
+ eyes020
|
||||
+ eyes021
|
||||
+ eyes022
|
||||
+ eyes023
|
||||
+ eyes024
|
||||
+ eyes025
|
||||
+ eyes026
|
||||
+ eyes027
|
||||
+ eyes028
|
||||
+ eyes029
|
||||
+ eyes030
|
||||
+ eyes031
|
||||
+ eyes032
|
||||
+ eyes033
|
||||
+ eyes034
|
||||
+ eyes035
|
||||
+ eyes036
|
||||
+ eyes037
|
||||
+ eyes038
|
||||
+ eyes039
|
||||
+ eyes040
|
||||
+ eyes041
|
||||
+ eyes042
|
||||
+ eyes043
|
||||
+ eyes044
|
||||
+ eyes045
|
||||
+ eyes046
|
||||
+ eyes047
|
||||
+ eyes048
|
||||
+ eyes049
|
||||
... 50 more activated features
|
||||
... 100 more deactivated features
|
@ -0,0 +1,5 @@
|
||||
[workspace]
|
||||
|
||||
[package]
|
||||
name = "cargo-list-test-fixture"
|
||||
version = "0.0.0"
|
@ -0,0 +1,38 @@
|
||||
use cargo_test_support::compare::assert_ui;
|
||||
use cargo_test_support::prelude::*;
|
||||
use cargo_test_support::Project;
|
||||
use itertools::Itertools;
|
||||
|
||||
use cargo_test_support::curr_dir;
|
||||
|
||||
#[cargo_test]
|
||||
fn case() {
|
||||
const MANY_FEATURES_COUNT: usize = 200;
|
||||
const ACTIVATED_FEATURES_COUNT: usize = 10;
|
||||
|
||||
cargo_test_support::registry::init();
|
||||
let mut test_package =
|
||||
cargo_test_support::registry::Package::new("your-face", "99999.0.0+my-package");
|
||||
for i in 0..MANY_FEATURES_COUNT {
|
||||
test_package.feature(format!("eyes{i:03}").as_str(), &[]);
|
||||
}
|
||||
test_package.publish();
|
||||
|
||||
let project = Project::from_template(curr_dir!().join("in"));
|
||||
let project_root = project.root();
|
||||
let cwd = &project_root;
|
||||
|
||||
let features = (0..ACTIVATED_FEATURES_COUNT)
|
||||
.map(|i| format!("eyes{i:03}"))
|
||||
.join(",");
|
||||
snapbox::cmd::Command::cargo_ui()
|
||||
.arg("add")
|
||||
.arg_line(format!("your-face --features {features}").as_str())
|
||||
.current_dir(cwd)
|
||||
.assert()
|
||||
.success()
|
||||
.stdout_matches_path(curr_dir!().join("stdout.log"))
|
||||
.stderr_matches_path(curr_dir!().join("stderr.log"));
|
||||
|
||||
assert_ui().subset_matches(curr_dir!().join("out"), &project_root);
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
[workspace]
|
||||
|
||||
[package]
|
||||
name = "cargo-list-test-fixture"
|
||||
version = "0.0.0"
|
||||
|
||||
[dependencies]
|
||||
your-face = { version = "99999.0.0", features = ["eyes000", "eyes001", "eyes002", "eyes003", "eyes004", "eyes005", "eyes006", "eyes007", "eyes008", "eyes009"] }
|
@ -0,0 +1,54 @@
|
||||
Updating `dummy-registry` index
|
||||
Adding your-face v99999.0.0 to dependencies.
|
||||
Features:
|
||||
+ eyes000
|
||||
+ eyes001
|
||||
+ eyes002
|
||||
+ eyes003
|
||||
+ eyes004
|
||||
+ eyes005
|
||||
+ eyes006
|
||||
+ eyes007
|
||||
+ eyes008
|
||||
+ eyes009
|
||||
- eyes010
|
||||
- eyes011
|
||||
- eyes012
|
||||
- eyes013
|
||||
- eyes014
|
||||
- eyes015
|
||||
- eyes016
|
||||
- eyes017
|
||||
- eyes018
|
||||
- eyes019
|
||||
- eyes020
|
||||
- eyes021
|
||||
- eyes022
|
||||
- eyes023
|
||||
- eyes024
|
||||
- eyes025
|
||||
- eyes026
|
||||
- eyes027
|
||||
- eyes028
|
||||
- eyes029
|
||||
- eyes030
|
||||
- eyes031
|
||||
- eyes032
|
||||
- eyes033
|
||||
- eyes034
|
||||
- eyes035
|
||||
- eyes036
|
||||
- eyes037
|
||||
- eyes038
|
||||
- eyes039
|
||||
- eyes040
|
||||
- eyes041
|
||||
- eyes042
|
||||
- eyes043
|
||||
- eyes044
|
||||
- eyes045
|
||||
- eyes046
|
||||
- eyes047
|
||||
- eyes048
|
||||
- eyes049
|
||||
... 150 more deactivated features
|
@ -22,6 +22,8 @@ mod features_empty;
|
||||
mod features_multiple_occurrences;
|
||||
mod features_preserve;
|
||||
mod features_spaced_values;
|
||||
mod features_too_many_activated;
|
||||
mod features_too_many_few_activated;
|
||||
mod features_unknown;
|
||||
mod features_unknown_no_features;
|
||||
mod git;
|
||||
|
Loading…
x
Reference in New Issue
Block a user