From 2b4e7dd827999c87c189c2e67a36283444d67003 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 29 Jul 2022 10:10:18 -0500 Subject: [PATCH 1/5] fix(upgrade): Hide note column if unused --- src/bin/upgrade/upgrade.rs | 31 +++++++++------- tests/cargo-upgrade/alt_registry/stderr.log | 8 ++--- tests/cargo-upgrade/dry_run/stderr.log | 6 ++-- tests/cargo-upgrade/exclude_dep/stderr.log | 34 +++++++++--------- .../implicit_prerelease/stderr.log | 8 ++--- tests/cargo-upgrade/locked/stderr.log | 6 ++-- tests/cargo-upgrade/optional_dep/stderr.log | 6 ++-- .../preserve_precision_major/stderr.log | 6 ++-- .../preserve_precision_minor/stderr.log | 6 ++-- .../preserve_precision_patch/stderr.log | 6 ++-- .../preserves_inline_table/stderr.log | 6 ++-- .../preserves_std_table/stderr.log | 6 ++-- tests/cargo-upgrade/single_dep/stderr.log | 6 ++-- tests/cargo-upgrade/specified/stderr.log | 6 ++-- tests/cargo-upgrade/to_lockfile/stderr.log | 26 +++++++------- tests/cargo-upgrade/to_version/stderr.log | 6 ++-- tests/cargo-upgrade/upgrade_all/stderr.log | 26 +++++++------- .../upgrade_everything/stderr.log | 36 +++++++++---------- .../cargo-upgrade/upgrade_renamed/stderr.log | 8 ++--- .../upgrade_workspace/stderr.log | 26 +++++++------- .../cargo-upgrade/virtual_manifest/stderr.log | 26 +++++++------- .../workspace_member_cwd/stderr.log | 6 ++-- .../workspace_member_manifest_path/stderr.log | 6 ++-- 23 files changed, 156 insertions(+), 151 deletions(-) diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs index 77fbf21575..623e761e62 100644 --- a/src/bin/upgrade/upgrade.rs +++ b/src/bin/upgrade/upgrade.rs @@ -528,13 +528,15 @@ fn print_upgrade(mut deps: Vec) -> CargoResult<()> { ], ); let mut width = [0; 6]; - for dep in &deps { + for (i, dep) in deps.iter().enumerate() { width[0] = width[0].max(dep.name.len()); width[1] = width[1].max(dep.old_version_req.len()); width[2] = width[2].max(dep.locked_version().len()); width[3] = width[3].max(dep.latest_version().len()); width[4] = width[4].max(dep.new_version_req.len()); - width[5] = width[5].max(dep.reason().len()); + if 1 < i { + width[5] = width[5].max(dep.reason().len()); + } } for (i, dep) in deps.iter().enumerate() { let is_header = (0..=1).contains(&i); @@ -547,46 +549,49 @@ fn print_upgrade(mut deps: Vec) -> CargoResult<()> { ColorSpec::new() }; write_cell(&dep.name, width[0], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; + shell_write_stderr(" ", &ColorSpec::new())?; let spec = if is_header { header_spec.clone() } else { dep.old_version_req_spec() }; write_cell(&dep.old_version_req, width[1], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; + shell_write_stderr(" ", &ColorSpec::new())?; let spec = if is_header { header_spec.clone() } else { dep.locked_version_spec() }; write_cell(dep.locked_version(), width[2], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; + shell_write_stderr(" ", &ColorSpec::new())?; let spec = if is_header { header_spec.clone() } else { ColorSpec::new() }; write_cell(dep.latest_version(), width[3], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; + shell_write_stderr(" ", &ColorSpec::new())?; let spec = if is_header { header_spec.clone() } else { dep.new_version_req_spec() }; write_cell(&dep.new_version_req, width[4], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; - let spec = if is_header { - header_spec.clone() - } else { - dep.reason_spec() - }; - write_cell(dep.reason(), width[5], &spec)?; + if 0 < width[5] { + shell_write_stderr(" ", &ColorSpec::new())?; + let spec = if is_header { + header_spec.clone() + } else { + dep.reason_spec() + }; + write_cell(dep.reason(), width[5], &spec)?; + } + shell_write_stderr("\n", &ColorSpec::new())?; } diff --git a/tests/cargo-upgrade/alt_registry/stderr.log b/tests/cargo-upgrade/alt_registry/stderr.log index 1fc0e7b4e0..dbf305003d 100644 --- a/tests/cargo-upgrade/alt_registry/stderr.log +++ b/tests/cargo-upgrade/alt_registry/stderr.log @@ -1,7 +1,7 @@ Updating '[ROOTURL]/registry' index Checking none's dependencies Updating '[ROOTURL]/alternative-registry' index -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package1 0.1.1 0.1.1 99999.0.0 99999.0.0 -my-package2 0.2 0.2.3 99999.0.0 99999.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package1 0.1.1 0.1.1 99999.0.0 99999.0.0 +my-package2 0.2 0.2.3 99999.0.0 99999.0 diff --git a/tests/cargo-upgrade/dry_run/stderr.log b/tests/cargo-upgrade/dry_run/stderr.log index 3f2c2b6052..341752437b 100644 --- a/tests/cargo-upgrade/dry_run/stderr.log +++ b/tests/cargo-upgrade/dry_run/stderr.log @@ -1,6 +1,6 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 warning: aborting upgrade due to dry run diff --git a/tests/cargo-upgrade/exclude_dep/stderr.log b/tests/cargo-upgrade/exclude_dep/stderr.log index 6293d6a75c..174551fc61 100644 --- a/tests/cargo-upgrade/exclude_dep/stderr.log +++ b/tests/cargo-upgrade/exclude_dep/stderr.log @@ -1,20 +1,20 @@ Updating '[ROOTURL]/registry' index Checking None's dependencies warning: ignoring docopt, excluded by user -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -pad 0.1 0.1.1 99999.0.0 99999.0 -serde_json 20.0 20.0.0 99999.0.0 99999.0 -syn 0.1.1 0.1.1 99999.0.0 99999.0.0 -tar 0.4 0.4.1 99999.0.0 99999.0 -ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 -te 0.1.1 0.1.1 99999.0.0 99999.0.0 -semver 0.2 0.2.3 99999.0.0 99999.0 -rn 0.1 0.1.1 99999.0.0 99999.0 -assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 -tempdir 0.1 0.1.1 99999.0.0 99999.0 -serde 1.0 1.0.140 - 1.0 -openssl 0.4 0.4.1 99999.0.0 99999.0 -rget 0.4.0 0.4.1 99999.0.0 99999.0.0 -geo 0.2.0 0.2.3 99999.0.0 99999.0.0 -ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +pad 0.1 0.1.1 99999.0.0 99999.0 +serde_json 20.0 20.0.0 99999.0.0 99999.0 +syn 0.1.1 0.1.1 99999.0.0 99999.0.0 +tar 0.4 0.4.1 99999.0.0 99999.0 +ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 +te 0.1.1 0.1.1 99999.0.0 99999.0.0 +semver 0.2 0.2.3 99999.0.0 99999.0 +rn 0.1 0.1.1 99999.0.0 99999.0 +assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 +tempdir 0.1 0.1.1 99999.0.0 99999.0 +serde 1.0 1.0.140 - 1.0 +openssl 0.4 0.4.1 99999.0.0 99999.0 +rget 0.4.0 0.4.1 99999.0.0 99999.0.0 +geo 0.2.0 0.2.3 99999.0.0 99999.0.0 +ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/implicit_prerelease/stderr.log b/tests/cargo-upgrade/implicit_prerelease/stderr.log index 271832b177..d73fe88fbd 100644 --- a/tests/cargo-upgrade/implicit_prerelease/stderr.log +++ b/tests/cargo-upgrade/implicit_prerelease/stderr.log @@ -1,6 +1,6 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -unrelated-crate 1.0 - 99999.0.0 99999.0 -my-package 0.1.1-alpha.1 - 99999.1.0-alpha.1 99999.1.0-alpha.1 +name old req locked latest new req +==== ======= ====== ====== ======= +unrelated-crate 1.0 - 99999.0.0 99999.0 +my-package 0.1.1-alpha.1 - 99999.1.0-alpha.1 99999.1.0-alpha.1 diff --git a/tests/cargo-upgrade/locked/stderr.log b/tests/cargo-upgrade/locked/stderr.log index be89025ba0..2b770d2a55 100644 --- a/tests/cargo-upgrade/locked/stderr.log +++ b/tests/cargo-upgrade/locked/stderr.log @@ -1,6 +1,6 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 - 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 - 99999.0.0 99999.0.0 Error: cannot upgrade due to `--locked` diff --git a/tests/cargo-upgrade/optional_dep/stderr.log b/tests/cargo-upgrade/optional_dep/stderr.log index b08357dd38..0b880cfdba 100644 --- a/tests/cargo-upgrade/optional_dep/stderr.log +++ b/tests/cargo-upgrade/optional_dep/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/preserve_precision_major/stderr.log b/tests/cargo-upgrade/preserve_precision_major/stderr.log index 6ec020f620..5453f3ee06 100644 --- a/tests/cargo-upgrade/preserve_precision_major/stderr.log +++ b/tests/cargo-upgrade/preserve_precision_major/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0 0.4.1 99999.0.0 99999 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0 0.4.1 99999.0.0 99999 diff --git a/tests/cargo-upgrade/preserve_precision_minor/stderr.log b/tests/cargo-upgrade/preserve_precision_minor/stderr.log index 6e03b98482..90784340ab 100644 --- a/tests/cargo-upgrade/preserve_precision_minor/stderr.log +++ b/tests/cargo-upgrade/preserve_precision_minor/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1 0.1.1 99999.0.0 99999.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1 0.1.1 99999.0.0 99999.0 diff --git a/tests/cargo-upgrade/preserve_precision_patch/stderr.log b/tests/cargo-upgrade/preserve_precision_patch/stderr.log index b08357dd38..0b880cfdba 100644 --- a/tests/cargo-upgrade/preserve_precision_patch/stderr.log +++ b/tests/cargo-upgrade/preserve_precision_patch/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/preserves_inline_table/stderr.log b/tests/cargo-upgrade/preserves_inline_table/stderr.log index b08357dd38..0b880cfdba 100644 --- a/tests/cargo-upgrade/preserves_inline_table/stderr.log +++ b/tests/cargo-upgrade/preserves_inline_table/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/preserves_std_table/stderr.log b/tests/cargo-upgrade/preserves_std_table/stderr.log index b08357dd38..0b880cfdba 100644 --- a/tests/cargo-upgrade/preserves_std_table/stderr.log +++ b/tests/cargo-upgrade/preserves_std_table/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/single_dep/stderr.log b/tests/cargo-upgrade/single_dep/stderr.log index b08357dd38..0b880cfdba 100644 --- a/tests/cargo-upgrade/single_dep/stderr.log +++ b/tests/cargo-upgrade/single_dep/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/specified/stderr.log b/tests/cargo-upgrade/specified/stderr.log index 757000d8f6..a090a64bca 100644 --- a/tests/cargo-upgrade/specified/stderr.log +++ b/tests/cargo-upgrade/specified/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package1 0.1 0.1.1 99999.0.0 99999.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package1 0.1 0.1.1 99999.0.0 99999.0 diff --git a/tests/cargo-upgrade/to_lockfile/stderr.log b/tests/cargo-upgrade/to_lockfile/stderr.log index 0ac8a4942a..80c6491c02 100644 --- a/tests/cargo-upgrade/to_lockfile/stderr.log +++ b/tests/cargo-upgrade/to_lockfile/stderr.log @@ -1,17 +1,17 @@ Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 0.2.3 -three 0.1.0 0.1.5 - 0.1.5 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 0.2.3 +three 0.1.0 0.1.5 - 0.1.5 Checking three's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 0.2.3 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 0.2.3 Checking two's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 0.2.3 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 0.2.3 Checking four's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 0.2.3 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 0.2.3 diff --git a/tests/cargo-upgrade/to_version/stderr.log b/tests/cargo-upgrade/to_version/stderr.log index b3018067ec..5c5d4a8763 100644 --- a/tests/cargo-upgrade/to_version/stderr.log +++ b/tests/cargo-upgrade/to_version/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -docopt 0.4.0 0.4.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +docopt 0.4.0 0.4.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/upgrade_all/stderr.log b/tests/cargo-upgrade/upgrade_all/stderr.log index 7ac250d8b4..ec9ffa61af 100644 --- a/tests/cargo-upgrade/upgrade_all/stderr.log +++ b/tests/cargo-upgrade/upgrade_all/stderr.log @@ -1,19 +1,19 @@ The flag `--all` has been deprecated in favor of `--workspace` Updating '[ROOTURL]/registry' index Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 -three 0.1.0 0.1.5 - 0.1.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +three 0.1.0 0.1.5 - 0.1.0 Checking three's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking two's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking four's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/upgrade_everything/stderr.log b/tests/cargo-upgrade/upgrade_everything/stderr.log index 021db61397..5178cae962 100644 --- a/tests/cargo-upgrade/upgrade_everything/stderr.log +++ b/tests/cargo-upgrade/upgrade_everything/stderr.log @@ -1,20 +1,20 @@ Updating '[ROOTURL]/registry' index Checking None's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -docopt 0.4 0.4.1 99999.0.0 99999.0 -pad 0.1 0.1.1 99999.0.0 99999.0 -serde_json 20.0 20.0.0 99999.0.0 99999.0 -syn 0.1.1 0.1.1 99999.0.0 99999.0.0 -tar 0.4 0.4.1 99999.0.0 99999.0 -ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 -te 0.1.1 0.1.1 99999.0.0 99999.0.0 -semver 0.2 0.2.3 99999.0.0 99999.0 -rn 0.1 0.1.1 99999.0.0 99999.0 -assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 -tempdir 0.1 0.1.1 99999.0.0 99999.0 -serde 1.0 1.0.140 - 1.0 -openssl 0.4 0.4.1 99999.0.0 99999.0 -rget 0.4.0 0.4.1 99999.0.0 99999.0.0 -geo 0.2.0 0.2.3 99999.0.0 99999.0.0 -ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +docopt 0.4 0.4.1 99999.0.0 99999.0 +pad 0.1 0.1.1 99999.0.0 99999.0 +serde_json 20.0 20.0.0 99999.0.0 99999.0 +syn 0.1.1 0.1.1 99999.0.0 99999.0.0 +tar 0.4 0.4.1 99999.0.0 99999.0 +ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 +te 0.1.1 0.1.1 99999.0.0 99999.0.0 +semver 0.2 0.2.3 99999.0.0 99999.0 +rn 0.1 0.1.1 99999.0.0 99999.0 +assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 +tempdir 0.1 0.1.1 99999.0.0 99999.0 +serde 1.0 1.0.140 - 1.0 +openssl 0.4 0.4.1 99999.0.0 99999.0 +rget 0.4.0 0.4.1 99999.0.0 99999.0.0 +geo 0.2.0 0.2.3 99999.0.0 99999.0.0 +ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/upgrade_renamed/stderr.log b/tests/cargo-upgrade/upgrade_renamed/stderr.log index 4338490f85..8479109a84 100644 --- a/tests/cargo-upgrade/upgrade_renamed/stderr.log +++ b/tests/cargo-upgrade/upgrade_renamed/stderr.log @@ -1,6 +1,6 @@ Updating '[ROOTURL]/registry' index Checking cargo-list-test-fixture's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -m1 0.1.1 0.1.1 99999.0.0 99999.0.0 -m2 0.2 0.2.3 99999.0.0 99999.0 +name old req locked latest new req +==== ======= ====== ====== ======= +m1 0.1.1 0.1.1 99999.0.0 99999.0.0 +m2 0.2 0.2.3 99999.0.0 99999.0 diff --git a/tests/cargo-upgrade/upgrade_workspace/stderr.log b/tests/cargo-upgrade/upgrade_workspace/stderr.log index bbca691278..7d18df6b01 100644 --- a/tests/cargo-upgrade/upgrade_workspace/stderr.log +++ b/tests/cargo-upgrade/upgrade_workspace/stderr.log @@ -1,18 +1,18 @@ Updating '[ROOTURL]/registry' index Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 -three 0.1.0 0.1.5 - 0.1.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +three 0.1.0 0.1.5 - 0.1.0 Checking three's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking two's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking four's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/virtual_manifest/stderr.log b/tests/cargo-upgrade/virtual_manifest/stderr.log index bbca691278..7d18df6b01 100644 --- a/tests/cargo-upgrade/virtual_manifest/stderr.log +++ b/tests/cargo-upgrade/virtual_manifest/stderr.log @@ -1,18 +1,18 @@ Updating '[ROOTURL]/registry' index Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 -three 0.1.0 0.1.5 - 0.1.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +three 0.1.0 0.1.5 - 0.1.0 Checking three's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking two's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 Checking four's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/workspace_member_cwd/stderr.log b/tests/cargo-upgrade/workspace_member_cwd/stderr.log index a2da8b22e8..0961a63ccb 100644 --- a/tests/cargo-upgrade/workspace_member_cwd/stderr.log +++ b/tests/cargo-upgrade/workspace_member_cwd/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.1.1 0.1.1 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/workspace_member_manifest_path/stderr.log b/tests/cargo-upgrade/workspace_member_manifest_path/stderr.log index 59037dfbcf..1371b8acd2 100644 --- a/tests/cargo-upgrade/workspace_member_manifest_path/stderr.log +++ b/tests/cargo-upgrade/workspace_member_manifest_path/stderr.log @@ -1,5 +1,5 @@ Updating '[ROOTURL]/registry' index Checking one's dependencies -name old req locked latest new req note -==== ======= ====== ====== ======= ==== -my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +my-package 0.2.0 0.2.3 99999.0.0 99999.0.0 From 578f4cd351d3cb7660d8892555e838c4b97300f3 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 29 Jul 2022 10:14:43 -0500 Subject: [PATCH 2/5] refactor(upgrade): Make reason an enum --- src/bin/upgrade/upgrade.rs | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs index 623e761e62..48811060b7 100644 --- a/src/bin/upgrade/upgrade.rs +++ b/src/bin/upgrade/upgrade.rs @@ -199,7 +199,7 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> { let mut reason = None; if !args.pinned { if dependency.rename.is_some() { - reason.get_or_insert("pinned"); + reason.get_or_insert(Reason::Pinned); pinned_present = true; } @@ -207,7 +207,7 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> { if version_req.comparators.iter().any(|comparator| { matches!(comparator.op, Op::Exact | Op::Less | Op::LessEq) }) { - reason.get_or_insert("pinned"); + reason.get_or_insert(Reason::Pinned); pinned_present = true; } } @@ -286,7 +286,7 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> { if new_version_req == old_version_req { None } else if old_version_compatible(&old_version_req, latest_version) { - reason.get_or_insert("compatible"); + reason.get_or_insert(Reason::Compatible); compatible_present = true; None } else { @@ -433,7 +433,7 @@ struct Dep { locked_version: Option, latest_version: Option, new_version_req: String, - reason: Option<&'static str>, + reason: Option, } impl Dep { @@ -492,7 +492,7 @@ impl Dep { } fn reason(&self) -> &str { - self.reason.unwrap_or("") + self.reason.map(|r| r.as_str()).unwrap_or("") } fn reason_spec(&self) -> ColorSpec { @@ -504,6 +504,21 @@ impl Dep { } } +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +enum Reason { + Compatible, + Pinned, +} + +impl Reason { + fn as_str(&self) -> &'static str { + match self { + Self::Compatible => "compatible", + Self::Pinned => "pinned", + } + } +} + /// Print a message if the new dependency version is different from the old one. fn print_upgrade(mut deps: Vec) -> CargoResult<()> { deps.splice( @@ -515,7 +530,7 @@ fn print_upgrade(mut deps: Vec) -> CargoResult<()> { locked_version: Some("locked".to_owned()), latest_version: Some("latest".to_owned()), new_version_req: "new req".to_owned(), - reason: Some("note"), + reason: None, }, Dep { name: "====".to_owned(), @@ -523,7 +538,7 @@ fn print_upgrade(mut deps: Vec) -> CargoResult<()> { locked_version: Some("======".to_owned()), latest_version: Some("======".to_owned()), new_version_req: "=======".to_owned(), - reason: Some("===="), + reason: None, }, ], ); @@ -589,7 +604,12 @@ fn print_upgrade(mut deps: Vec) -> CargoResult<()> { } else { dep.reason_spec() }; - write_cell(dep.reason(), width[5], &spec)?; + let reason = match i { + 0 => "note", + 1 => "====", + _ => dep.reason(), + }; + write_cell(reason, width[5], &spec)?; } shell_write_stderr("\n", &ColorSpec::new())?; From d6593a23a8c925b3b672b77f3f1667cff5987b5b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 29 Jul 2022 10:17:39 -0500 Subject: [PATCH 3/5] refactor(upgrade): Track unchanged reason --- src/bin/upgrade/upgrade.rs | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs index 48811060b7..9fa3c7adf2 100644 --- a/src/bin/upgrade/upgrade.rs +++ b/src/bin/upgrade/upgrade.rs @@ -297,6 +297,9 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> { }; new_version_req.unwrap_or_else(|| old_version_req.clone()) }; + if new_version_req == old_version_req { + reason.get_or_insert(Reason::Unchanged); + } if new_version_req != old_version_req { set_dep_version(dep_item, &new_version_req)?; crate_modified = true; @@ -472,18 +475,20 @@ impl Dep { fn new_version_req_spec(&self) -> ColorSpec { let mut spec = ColorSpec::new(); - if self.reason.is_some() { - spec.set_fg(Some(Color::Yellow)); - } else if self.new_version_req != self.old_version_req { - spec.set_fg(Some(Color::Green)); - if let Some(latest_version) = self - .latest_version - .as_ref() - .and_then(|v| semver::Version::parse(v).ok()) - { - if let Ok(new_version_req) = semver::VersionReq::parse(&self.new_version_req) { - if !new_version_req.matches(&latest_version) { - spec.set_fg(Some(Color::Yellow)); + if self.new_version_req != self.old_version_req { + if self.reason.is_some() { + spec.set_fg(Some(Color::Yellow)); + } else { + spec.set_fg(Some(Color::Green)); + if let Some(latest_version) = self + .latest_version + .as_ref() + .and_then(|v| semver::Version::parse(v).ok()) + { + if let Ok(new_version_req) = semver::VersionReq::parse(&self.new_version_req) { + if !new_version_req.matches(&latest_version) { + spec.set_fg(Some(Color::Yellow)); + } } } } @@ -506,6 +511,7 @@ impl Dep { #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] enum Reason { + Unchanged, Compatible, Pinned, } @@ -513,6 +519,7 @@ enum Reason { impl Reason { fn as_str(&self) -> &'static str { match self { + Self::Unchanged => "", Self::Compatible => "compatible", Self::Pinned => "pinned", } From 5650a2230720206d3771cff753189bc0f3bbb787 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 29 Jul 2022 10:51:10 -0500 Subject: [PATCH 4/5] fix(upgrade): Abbreviate the table Showing what we considered builds trust. Showing the full table every time can be overwhelming though, especially in large crates or workspaces. This goes a middle route by summarizing the uninteresting rows. This was inspired by my work on `git-stack`. --- src/bin/upgrade/upgrade.rs | 258 ++++++++++++------ tests/cargo-upgrade/main.rs | 1 + tests/cargo-upgrade/upgrade_all/mod.rs | 2 +- .../upgrade_everything/stderr.log | 37 +-- .../upgrade_verbose/in/Cargo.toml | 47 ++++ .../upgrade_verbose/in/src/lib.rs | 0 tests/cargo-upgrade/upgrade_verbose/mod.rs | 25 ++ .../upgrade_verbose/out/Cargo.toml | 47 ++++ .../cargo-upgrade/upgrade_verbose/stderr.log | 20 ++ .../cargo-upgrade/upgrade_verbose/stdout.log | 0 tests/cargo-upgrade/upgrade_workspace/mod.rs | 2 +- tests/cargo-upgrade/virtual_manifest/mod.rs | 2 +- 12 files changed, 329 insertions(+), 112 deletions(-) create mode 100644 tests/cargo-upgrade/upgrade_verbose/in/Cargo.toml create mode 100644 tests/cargo-upgrade/upgrade_verbose/in/src/lib.rs create mode 100644 tests/cargo-upgrade/upgrade_verbose/mod.rs create mode 100644 tests/cargo-upgrade/upgrade_verbose/out/Cargo.toml create mode 100644 tests/cargo-upgrade/upgrade_verbose/stderr.log create mode 100644 tests/cargo-upgrade/upgrade_verbose/stdout.log diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs index 9fa3c7adf2..a2cf4901e2 100644 --- a/src/bin/upgrade/upgrade.rs +++ b/src/bin/upgrade/upgrade.rs @@ -1,3 +1,4 @@ +use std::collections::BTreeMap; use std::collections::BTreeSet; use std::io::Write; use std::path::PathBuf; @@ -316,7 +317,7 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> { } } if !table.is_empty() { - print_upgrade(table)?; + print_upgrade(table, args.verbose)?; } if !args.dry_run && !args.locked && crate_modified { manifest.write()?; @@ -442,18 +443,23 @@ struct Dep { impl Dep { fn old_version_req_spec(&self) -> ColorSpec { let mut spec = ColorSpec::new(); + if !self.old_req_matches_latest() { + spec.set_fg(Some(Color::Yellow)); + } + spec + } + + fn old_req_matches_latest(&self) -> bool { if let Some(latest_version) = self .latest_version .as_ref() .and_then(|v| semver::Version::parse(v).ok()) { if let Ok(old_version_req) = semver::VersionReq::parse(&self.old_version_req) { - if !old_version_req.matches(&latest_version) { - spec.set_fg(Some(Color::Yellow)); - } + return old_version_req.matches(&latest_version); } } - spec + return true; } fn locked_version(&self) -> &str { @@ -462,20 +468,29 @@ impl Dep { fn locked_version_spec(&self) -> ColorSpec { let mut spec = ColorSpec::new(); - if self.locked_version.is_none() || self.latest_version.is_none() { - } else if self.locked_version != self.latest_version { + if !self.is_locked_latest() { spec.set_fg(Some(Color::Yellow)); } spec } + fn is_locked_latest(&self) -> bool { + if self.locked_version.is_none() || self.latest_version.is_none() { + true + } else if self.locked_version != self.latest_version { + false + } else { + true + } + } + fn latest_version(&self) -> &str { self.latest_version.as_deref().unwrap_or("-") } fn new_version_req_spec(&self) -> ColorSpec { let mut spec = ColorSpec::new(); - if self.new_version_req != self.old_version_req { + if self.req_changed() { if self.reason.is_some() { spec.set_fg(Some(Color::Yellow)); } else { @@ -496,8 +511,16 @@ impl Dep { spec } - fn reason(&self) -> &str { - self.reason.map(|r| r.as_str()).unwrap_or("") + fn req_changed(&self) -> bool { + self.new_version_req != self.old_version_req + } + + fn short_reason(&self) -> &'static str { + self.reason.map(|r| r.as_short()).unwrap_or("") + } + + fn long_reason(&self) -> &'static str { + self.reason.map(|r| r.as_long()).unwrap_or("") } fn reason_spec(&self) -> ColorSpec { @@ -507,6 +530,22 @@ impl Dep { } spec } + + fn is_interesting(&self) -> bool { + if self.reason.is_none() { + return true; + } + + if self.req_changed() { + return true; + } + + if !self.old_req_matches_latest() { + return true; + } + + false + } } #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -517,109 +556,146 @@ enum Reason { } impl Reason { - fn as_str(&self) -> &'static str { + fn as_short(&self) -> &'static str { match self { Self::Unchanged => "", Self::Compatible => "compatible", Self::Pinned => "pinned", } } -} -/// Print a message if the new dependency version is different from the old one. -fn print_upgrade(mut deps: Vec) -> CargoResult<()> { - deps.splice( - 0..0, - [ - Dep { - name: "name".to_owned(), - old_version_req: "old req".to_owned(), - locked_version: Some("locked".to_owned()), - latest_version: Some("latest".to_owned()), - new_version_req: "new req".to_owned(), - reason: None, - }, - Dep { - name: "====".to_owned(), - old_version_req: "=======".to_owned(), - locked_version: Some("======".to_owned()), - latest_version: Some("======".to_owned()), - new_version_req: "=======".to_owned(), - reason: None, - }, - ], - ); - let mut width = [0; 6]; - for (i, dep) in deps.iter().enumerate() { - width[0] = width[0].max(dep.name.len()); - width[1] = width[1].max(dep.old_version_req.len()); - width[2] = width[2].max(dep.locked_version().len()); - width[3] = width[3].max(dep.latest_version().len()); - width[4] = width[4].max(dep.new_version_req.len()); - if 1 < i { - width[5] = width[5].max(dep.reason().len()); + fn as_long(&self) -> &'static str { + match self { + Self::Unchanged => "unchanged", + Self::Compatible => "compatible", + Self::Pinned => "pinned", } } - for (i, dep) in deps.iter().enumerate() { - let is_header = (0..=1).contains(&i); - let mut header_spec = ColorSpec::new(); - header_spec.set_bold(true); - - let spec = if is_header { - header_spec.clone() - } else { - ColorSpec::new() - }; - write_cell(&dep.name, width[0], &spec)?; +} - shell_write_stderr(" ", &ColorSpec::new())?; - let spec = if is_header { - header_spec.clone() - } else { - dep.old_version_req_spec() - }; - write_cell(&dep.old_version_req, width[1], &spec)?; +/// Print a message if the new dependency version is different from the old one. +fn print_upgrade(deps: Vec, verbose: bool) -> CargoResult<()> { + let (mut interesting, uninteresting) = if verbose { + (deps, Vec::new()) + } else { + deps.into_iter().partition::, _>(Dep::is_interesting) + }; + if !interesting.is_empty() { + interesting.splice( + 0..0, + [ + Dep { + name: "name".to_owned(), + old_version_req: "old req".to_owned(), + locked_version: Some("locked".to_owned()), + latest_version: Some("latest".to_owned()), + new_version_req: "new req".to_owned(), + reason: None, + }, + Dep { + name: "====".to_owned(), + old_version_req: "=======".to_owned(), + locked_version: Some("======".to_owned()), + latest_version: Some("======".to_owned()), + new_version_req: "=======".to_owned(), + reason: None, + }, + ], + ); + let mut width = [0; 6]; + for (i, dep) in interesting.iter().enumerate() { + width[0] = width[0].max(dep.name.len()); + width[1] = width[1].max(dep.old_version_req.len()); + width[2] = width[2].max(dep.locked_version().len()); + width[3] = width[3].max(dep.latest_version().len()); + width[4] = width[4].max(dep.new_version_req.len()); + if 1 < i { + width[5] = width[5].max(dep.short_reason().len()); + } + } + for (i, dep) in interesting.iter().enumerate() { + let is_header = (0..=1).contains(&i); + let mut header_spec = ColorSpec::new(); + header_spec.set_bold(true); - shell_write_stderr(" ", &ColorSpec::new())?; - let spec = if is_header { - header_spec.clone() - } else { - dep.locked_version_spec() - }; - write_cell(dep.locked_version(), width[2], &spec)?; + let spec = if is_header { + header_spec.clone() + } else { + ColorSpec::new() + }; + write_cell(&dep.name, width[0], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; - let spec = if is_header { - header_spec.clone() - } else { - ColorSpec::new() - }; - write_cell(dep.latest_version(), width[3], &spec)?; + shell_write_stderr(" ", &ColorSpec::new())?; + let spec = if is_header { + header_spec.clone() + } else { + dep.old_version_req_spec() + }; + write_cell(&dep.old_version_req, width[1], &spec)?; - shell_write_stderr(" ", &ColorSpec::new())?; - let spec = if is_header { - header_spec.clone() - } else { - dep.new_version_req_spec() - }; - write_cell(&dep.new_version_req, width[4], &spec)?; + shell_write_stderr(" ", &ColorSpec::new())?; + let spec = if is_header { + header_spec.clone() + } else { + dep.locked_version_spec() + }; + write_cell(dep.locked_version(), width[2], &spec)?; - if 0 < width[5] { shell_write_stderr(" ", &ColorSpec::new())?; let spec = if is_header { header_spec.clone() } else { - dep.reason_spec() + ColorSpec::new() }; - let reason = match i { - 0 => "note", - 1 => "====", - _ => dep.reason(), + write_cell(dep.latest_version(), width[3], &spec)?; + + shell_write_stderr(" ", &ColorSpec::new())?; + let spec = if is_header { + header_spec.clone() + } else { + dep.new_version_req_spec() }; - write_cell(reason, width[5], &spec)?; + write_cell(&dep.new_version_req, width[4], &spec)?; + + if 0 < width[5] { + shell_write_stderr(" ", &ColorSpec::new())?; + let spec = if is_header { + header_spec.clone() + } else { + dep.reason_spec() + }; + let reason = match i { + 0 => "note", + 1 => "====", + _ => dep.short_reason(), + }; + write_cell(reason, width[5], &spec)?; + } + + shell_write_stderr("\n", &ColorSpec::new())?; } + } - shell_write_stderr("\n", &ColorSpec::new())?; + if !uninteresting.is_empty() { + let mut categorize = BTreeMap::new(); + for dep in uninteresting { + categorize + .entry(dep.long_reason()) + .or_insert_with(|| BTreeSet::new()) + .insert(dep.name); + } + let mut note = "Re-run with `--verbose` to show all dependencies".to_owned(); + for (reason, deps) in categorize { + use std::fmt::Write; + write!(&mut note, "\n {}: ", reason)?; + for (i, dep) in deps.into_iter().enumerate() { + if 0 < i { + note.push_str(", "); + } + note.push_str(&dep); + } + } + shell_note(¬e)?; } Ok(()) diff --git a/tests/cargo-upgrade/main.rs b/tests/cargo-upgrade/main.rs index d86c1a8875..de83a001a2 100644 --- a/tests/cargo-upgrade/main.rs +++ b/tests/cargo-upgrade/main.rs @@ -31,6 +31,7 @@ mod to_version; mod upgrade_all; mod upgrade_everything; mod upgrade_renamed; +mod upgrade_verbose; mod upgrade_workspace; mod virtual_manifest; mod workspace_member_cwd; diff --git a/tests/cargo-upgrade/upgrade_all/mod.rs b/tests/cargo-upgrade/upgrade_all/mod.rs index d13f4d6fe6..d5afbc0eba 100644 --- a/tests/cargo-upgrade/upgrade_all/mod.rs +++ b/tests/cargo-upgrade/upgrade_all/mod.rs @@ -14,7 +14,7 @@ fn case() { snapbox::cmd::Command::cargo_ui() .arg("upgrade") - .args(["--all"]) + .args(["--all", "--verbose"]) .current_dir(cwd) .assert() .success() diff --git a/tests/cargo-upgrade/upgrade_everything/stderr.log b/tests/cargo-upgrade/upgrade_everything/stderr.log index 5178cae962..a1dab125a3 100644 --- a/tests/cargo-upgrade/upgrade_everything/stderr.log +++ b/tests/cargo-upgrade/upgrade_everything/stderr.log @@ -1,20 +1,21 @@ Updating '[ROOTURL]/registry' index Checking None's dependencies -name old req locked latest new req -==== ======= ====== ====== ======= -docopt 0.4 0.4.1 99999.0.0 99999.0 -pad 0.1 0.1.1 99999.0.0 99999.0 -serde_json 20.0 20.0.0 99999.0.0 99999.0 -syn 0.1.1 0.1.1 99999.0.0 99999.0.0 -tar 0.4 0.4.1 99999.0.0 99999.0 -ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 -te 0.1.1 0.1.1 99999.0.0 99999.0.0 -semver 0.2 0.2.3 99999.0.0 99999.0 -rn 0.1 0.1.1 99999.0.0 99999.0 -assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 -tempdir 0.1 0.1.1 99999.0.0 99999.0 -serde 1.0 1.0.140 - 1.0 -openssl 0.4 0.4.1 99999.0.0 99999.0 -rget 0.4.0 0.4.1 99999.0.0 99999.0.0 -geo 0.2.0 0.2.3 99999.0.0 99999.0.0 -ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 +name old req locked latest new req +==== ======= ====== ====== ======= +docopt 0.4 0.4.1 99999.0.0 99999.0 +pad 0.1 0.1.1 99999.0.0 99999.0 +serde_json 20.0 20.0.0 99999.0.0 99999.0 +syn 0.1.1 0.1.1 99999.0.0 99999.0.0 +tar 0.4 0.4.1 99999.0.0 99999.0 +ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 +te 0.1.1 0.1.1 99999.0.0 99999.0.0 +semver 0.2 0.2.3 99999.0.0 99999.0 +rn 0.1 0.1.1 99999.0.0 99999.0 +assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 +tempdir 0.1 0.1.1 99999.0.0 99999.0 +openssl 0.4 0.4.1 99999.0.0 99999.0 +rget 0.4.0 0.4.1 99999.0.0 99999.0.0 +geo 0.2.0 0.2.3 99999.0.0 99999.0.0 +ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 +note: Re-run with `--verbose` to show all dependencies + unchanged: serde diff --git a/tests/cargo-upgrade/upgrade_verbose/in/Cargo.toml b/tests/cargo-upgrade/upgrade_verbose/in/Cargo.toml new file mode 100644 index 0000000000..ab601fba68 --- /dev/null +++ b/tests/cargo-upgrade/upgrade_verbose/in/Cargo.toml @@ -0,0 +1,47 @@ +[package] +name = "None" +version = "0.1.0" + +[lib] +path = "dummy.rs" + +[dependencies] +docopt = "0.4" +pad = "0.1" +serde_json = "20.0" +syn = { version = "0.1.1", default-features = false } +tar = { version = "0.4", default-features = false } +ftp = "20.0.0" +te = { package = "toml_edit", version = "0.1.1" } + +[dependencies.semver] +version = "0.2" + +[dependencies.rn] +package = "renamed" +version = "0.1" + +[dev-dependencies] +assert_cli = "0.2.0" +tempdir = "0.1" + +[build-dependencies] +serde = { version = "1.0", git= "https://github.com/serde-rs/serde.git" } + +[target.'cfg(unix)'.dependencies] +openssl = "0.4" + +[target."windows.json"] +# let's make it an inline table +dependencies = { rget = "0.4.0" } + +[target.'cfg(target_arch = "x86_64")'.dev-dependencies] +geo = { version = "0.2.0", default-features = false } + +[target.foo.build-dependencies] +ftp = "0.2.0" + +[features] +default = [] +test-external-apis = [] +unstable = [] diff --git a/tests/cargo-upgrade/upgrade_verbose/in/src/lib.rs b/tests/cargo-upgrade/upgrade_verbose/in/src/lib.rs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/cargo-upgrade/upgrade_verbose/mod.rs b/tests/cargo-upgrade/upgrade_verbose/mod.rs new file mode 100644 index 0000000000..a9cf401fdf --- /dev/null +++ b/tests/cargo-upgrade/upgrade_verbose/mod.rs @@ -0,0 +1,25 @@ +use cargo_test_support::compare::assert_ui; +use cargo_test_support::Project; + +use crate::init_registry; +use crate::CargoCommand; +use cargo_test_support::curr_dir; + +#[cargo_test] +fn case() { + init_registry(); + let project = Project::from_template(curr_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + snapbox::cmd::Command::cargo_ui() + .arg("upgrade") + .args(["--pinned", "--verbose"]) + .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); +} diff --git a/tests/cargo-upgrade/upgrade_verbose/out/Cargo.toml b/tests/cargo-upgrade/upgrade_verbose/out/Cargo.toml new file mode 100644 index 0000000000..f531bca663 --- /dev/null +++ b/tests/cargo-upgrade/upgrade_verbose/out/Cargo.toml @@ -0,0 +1,47 @@ +[package] +name = "None" +version = "0.1.0" + +[lib] +path = "dummy.rs" + +[dependencies] +docopt = "99999.0" +pad = "99999.0" +serde_json = "99999.0" +syn = { version = "99999.0.0", default-features = false } +tar = { version = "99999.0", default-features = false } +ftp = "99999.0.0" +te = { package = "toml_edit", version = "99999.0.0" } + +[dependencies.semver] +version = "99999.0" + +[dependencies.rn] +package = "renamed" +version = "99999.0" + +[dev-dependencies] +assert_cli = "99999.0.0" +tempdir = "99999.0" + +[build-dependencies] +serde = { version = "1.0", git= "https://github.com/serde-rs/serde.git" } + +[target.'cfg(unix)'.dependencies] +openssl = "99999.0" + +[target."windows.json"] +# let's make it an inline table +dependencies = { rget = "99999.0.0" } + +[target.'cfg(target_arch = "x86_64")'.dev-dependencies] +geo = { version = "99999.0.0", default-features = false } + +[target.foo.build-dependencies] +ftp = "99999.0.0" + +[features] +default = [] +test-external-apis = [] +unstable = [] diff --git a/tests/cargo-upgrade/upgrade_verbose/stderr.log b/tests/cargo-upgrade/upgrade_verbose/stderr.log new file mode 100644 index 0000000000..5178cae962 --- /dev/null +++ b/tests/cargo-upgrade/upgrade_verbose/stderr.log @@ -0,0 +1,20 @@ + Updating '[ROOTURL]/registry' index + Checking None's dependencies +name old req locked latest new req +==== ======= ====== ====== ======= +docopt 0.4 0.4.1 99999.0.0 99999.0 +pad 0.1 0.1.1 99999.0.0 99999.0 +serde_json 20.0 20.0.0 99999.0.0 99999.0 +syn 0.1.1 0.1.1 99999.0.0 99999.0.0 +tar 0.4 0.4.1 99999.0.0 99999.0 +ftp 20.0.0 20.0.0 99999.0.0 99999.0.0 +te 0.1.1 0.1.1 99999.0.0 99999.0.0 +semver 0.2 0.2.3 99999.0.0 99999.0 +rn 0.1 0.1.1 99999.0.0 99999.0 +assert_cli 0.2.0 0.2.3 99999.0.0 99999.0.0 +tempdir 0.1 0.1.1 99999.0.0 99999.0 +serde 1.0 1.0.140 - 1.0 +openssl 0.4 0.4.1 99999.0.0 99999.0 +rget 0.4.0 0.4.1 99999.0.0 99999.0.0 +geo 0.2.0 0.2.3 99999.0.0 99999.0.0 +ftp 0.2.0 0.2.3 99999.0.0 99999.0.0 diff --git a/tests/cargo-upgrade/upgrade_verbose/stdout.log b/tests/cargo-upgrade/upgrade_verbose/stdout.log new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/cargo-upgrade/upgrade_workspace/mod.rs b/tests/cargo-upgrade/upgrade_workspace/mod.rs index 353cb62322..127e191336 100644 --- a/tests/cargo-upgrade/upgrade_workspace/mod.rs +++ b/tests/cargo-upgrade/upgrade_workspace/mod.rs @@ -14,7 +14,7 @@ fn case() { snapbox::cmd::Command::cargo_ui() .arg("upgrade") - .args(["--workspace"]) + .args(["--workspace", "--verbose"]) .current_dir(cwd) .assert() .success() diff --git a/tests/cargo-upgrade/virtual_manifest/mod.rs b/tests/cargo-upgrade/virtual_manifest/mod.rs index c16008b1b0..f1e29ea6be 100644 --- a/tests/cargo-upgrade/virtual_manifest/mod.rs +++ b/tests/cargo-upgrade/virtual_manifest/mod.rs @@ -14,7 +14,7 @@ fn case() { snapbox::cmd::Command::cargo_ui() .arg("upgrade") - .args(["--manifest-path", "Cargo.toml"]) + .args(["--manifest-path", "Cargo.toml", "--verbose"]) .current_dir(cwd) .assert() .success() From 07ba3b7cd0eaf87e4fc1043e3a709b1ed77ade70 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 29 Jul 2022 10:59:39 -0500 Subject: [PATCH 5/5] style: Make clippy happy --- src/bin/upgrade/upgrade.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/bin/upgrade/upgrade.rs b/src/bin/upgrade/upgrade.rs index a2cf4901e2..51d564db54 100644 --- a/src/bin/upgrade/upgrade.rs +++ b/src/bin/upgrade/upgrade.rs @@ -459,7 +459,7 @@ impl Dep { return old_version_req.matches(&latest_version); } } - return true; + true } fn locked_version(&self) -> &str { @@ -477,10 +477,8 @@ impl Dep { fn is_locked_latest(&self) -> bool { if self.locked_version.is_none() || self.latest_version.is_none() { true - } else if self.locked_version != self.latest_version { - false } else { - true + self.locked_version == self.latest_version } } @@ -681,7 +679,7 @@ fn print_upgrade(deps: Vec, verbose: bool) -> CargoResult<()> { for dep in uninteresting { categorize .entry(dep.long_reason()) - .or_insert_with(|| BTreeSet::new()) + .or_insert_with(BTreeSet::new) .insert(dep.name); } let mut note = "Re-run with `--verbose` to show all dependencies".to_owned();