diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 478b164d89b..893c87124e4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -173,13 +173,6 @@ jobs: - run: rustup target add ${{ matrix.other }} - run: rustup component add rustc-dev llvm-tools-preview rust-docs if: startsWith(matrix.rust, 'nightly') - # Install fish, zsh, and elvish only on Ubuntu systems - - name: Install fish, zsh, and elvish on Ubuntu - run: sudo apt update -y && sudo apt install fish zsh elvish -y - if: matrix.os == 'ubuntu-latest' - - name: Install fish, elvish on macOS - run: brew install fish elvish - if: matrix.os == 'macos-14' || matrix.os == 'macos-13' - run: sudo apt update -y && sudo apt install lldb gcc-multilib libsecret-1-0 libsecret-1-dev -y if: matrix.os == 'ubuntu-latest' - run: rustup component add rustfmt || echo "rustfmt not available" @@ -234,7 +227,6 @@ jobs: - run: rustup update --no-self-update stable && rustup default stable - run: rustup target add i686-unknown-linux-gnu - run: sudo apt update -y && sudo apt install gcc-multilib libsecret-1-0 libsecret-1-dev -y - - run: sudo apt update -y && sudo apt install fish zsh elvish -y - run: rustup component add rustfmt || echo "rustfmt not available" - run: cargo test -p cargo env: diff --git a/Cargo.lock b/Cargo.lock index 6a9cd64375a..dea2efe0edb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,12 +134,6 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - [[package]] name = "autocfg" version = "1.3.0" @@ -291,7 +285,6 @@ dependencies = [ "clap", "clap_complete", "color-print", - "completest-pty", "crates-io", "curl", "curl-sys", @@ -618,23 +611,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" -[[package]] -name = "completest" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410de1ffe61368aa040f599747584e9e3d19235cf4045be6159edb167ef45ddb" - -[[package]] -name = "completest-pty" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd2f22a999db122bd2861c504aa363bbacaa32ebea29edf6924ee6cfe044313" -dependencies = [ - "completest", - "ptyprocess", - "vt100", -] - [[package]] name = "const-oid" version = "0.9.6" @@ -2351,15 +2327,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2384,19 +2351,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", - "pin-utils", -] - [[package]] name = "nom" version = "7.1.3" @@ -2719,12 +2673,6 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "pkcs8" version = "0.10.2" @@ -2828,15 +2776,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "ptyprocess" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e05aef7befb11a210468a2d77d978dde2c6381a0381e33beb575e91f57fe8cf" -dependencies = [ - "nix", -] - [[package]] name = "pulldown-cmark" version = "0.11.0" @@ -3855,39 +3794,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "vt100" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de" -dependencies = [ - "itoa 1.0.11", - "log", - "unicode-width", - "vte", -] - -[[package]] -name = "vte" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" -dependencies = [ - "arrayvec", - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "wait-timeout" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index a1044b55399..0b0782099a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,6 @@ cargo_metadata = "0.18.1" clap = "4.5.18" clap_complete = { version = "4.5.29", features = ["unstable-dynamic"] } color-print = "0.3.6" -completest-pty = "0.5.3" core-foundation = { version = "0.10.0", features = ["mac_os_10_7_support"] } crates-io = { version = "0.40.4", path = "crates/crates-io" } criterion = { version = "0.5.1", features = ["html_reports"] } @@ -242,7 +241,6 @@ features = [ [dev-dependencies] annotate-snippets = { workspace = true, features = ["testing-colors"] } cargo-test-support.workspace = true -completest-pty.workspace = true gix = { workspace = true, features = ["revision"] } same-file.workspace = true snapbox.workspace = true diff --git a/tests/testsuite/main.rs b/tests/testsuite/main.rs index a5bd89a8c37..0c0434271dd 100644 --- a/tests/testsuite/main.rs +++ b/tests/testsuite/main.rs @@ -166,7 +166,6 @@ mod rustflags; mod rustup; mod script; mod search; -mod shell_completions; mod shell_quoting; mod source_replacement; mod ssh; diff --git a/tests/testsuite/shell_completions.rs b/tests/testsuite/shell_completions.rs deleted file mode 100644 index 2b96e266792..00000000000 --- a/tests/testsuite/shell_completions.rs +++ /dev/null @@ -1,204 +0,0 @@ -#![cfg(unix)] - -use cargo_test_support::cargo_test; -use completest_pty::Runtime; -use snapbox::assert_data_eq; - -#[cargo_test] -#[ignore = "disabled, see https://github.com/rust-lang/cargo/issues/14545"] -fn bash() { - // HACK: At least on CI, bash is not working on macOS - if cfg!(target_os = "macos") { - return; - } - - let input = "cargo \t\t"; - let expected = snapbox::str![ - "% ---version --help check install read-manifest update ---list -V clean locate-project remove vendor ---explain -v config login report verify-project ---verbose -q doc logout run version ---quiet -C fetch metadata rustc yank ---color -Z fix new rustdoc ---locked -h generate-lockfile owner search ---offline add help package test ---frozen bench info pkgid tree ---config build init publish uninstall " - ]; - let actual = complete(input, "bash"); - assert_data_eq!(actual, expected); -} - -#[cargo_test] -#[ignore = "disabled, see https://github.com/rust-lang/cargo/issues/14545"] -fn elvish() { - // HACK: At least on CI, elvish is not working on macOS - if cfg!(target_os = "macos") { - return; - } - - let input = "cargo \t\t"; - let expected = snapbox::str![ - "% cargo --config - COMPLETING argument ---color --version check install read-manifest update ---config -C clean locate-project remove vendor ---explain -V config login report verify-project ---frozen -Z doc logout run version ---help -h fetch metadata rustc yank ---list -q fix new rustdoc ---locked -v generate-lockfile owner search ---offline add help package test ---quiet bench info pkgid tree ---verbose build init publish uninstall " - ]; - let actual = complete(input, "elvish"); - assert_data_eq!(actual, expected); -} - -#[cargo_test] -#[ignore = "disabled, see https://github.com/rust-lang/cargo/issues/14545"] -fn fish() { - // HACK: At least on CI, fish is not working on macOS - if cfg!(target_os = "macos") { - return; - } - - let input = "cargo \t\t"; - let expected = snapbox::str![ - "% cargo ---version (Print version info and exit) ---list (List installed commands) ---explain (Provide a detailed explanation of a rustc error message) ---verbose (Use verbose output (-vv very verbose/build.rs output)) ---quiet (Do not print cargo log messages) ---color (Coloring: auto, always, never) ---locked (Assert that `Cargo.lock` will remain unchanged) ---offline (Run without accessing the network) ---frozen (Equivalent to specifying both --locked and --offline) ---config (Override a configuration value) ---help (Print help) --V (Print version info and exit) --v (Use verbose output (-vv very verbose/build.rs output)) --q (Do not print cargo log messages) --C (Change to DIRECTORY before doing anything (nightly-only)) --Z (Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details) --h (Print help) -add (Add dependencies to a Cargo.toml manifest file) -bench (Execute all benchmarks of a local package) -build (Compile a local package and all of its dependencies) -check (Check a local package and all of its dependencies for errors) -clean (Remove artifacts that cargo has generated in the past) -config (Inspect configuration values) -doc (Build a package's documentation) -fetch (Fetch dependencies of a package from the network) -fix (Automatically fix lint warnings reported by rustc) -generate-lockfile (Generate the lockfile for a package) -help (Displays help for a cargo subcommand) -info (Display information about a package in the registry) -init (Create a new cargo package in an existing directory) -install (Install a Rust binary) -locate-project (Print a JSON representation of a Cargo.toml file's location) -login (Log in to a registry.) -logout (Remove an API token from the registry locally) -metadata (Output the resolved dependencies of a package, the concrete used versions including overrides, in machine-r…) -new (Create a new cargo package at ) -owner (Manage the owners of a crate on the registry) -package (Assemble the local package into a distributable tarball) -pkgid (Print a fully qualified package specification) -publish (Upload a package to the registry) -read-manifest (Print a JSON representation of a Cargo.toml manifest.) -remove (Remove dependencies from a Cargo.toml manifest file) -report (Generate and display various kinds of reports) -run (Run a binary or example of the local package) -rustc (Compile a package, and pass extra options to the compiler) -rustdoc (Build a package's documentation, using specified custom flags.) -search (Search packages in the registry. Default registry is crates.io) -test (Execute all unit and integration tests and build examples of a local package) -tree (Display a tree visualization of a dependency graph) -uninstall (Remove a Rust binary) -update (Update dependencies as recorded in the local lock file) -vendor (Vendor all dependencies for a project locally) -verify-project (Check correctness of crate manifest) -version (Show version information) -yank (Remove a pushed crate from the index)"]; - - let actual = complete(input, "fish"); - assert_data_eq!(actual, expected); -} - -#[cargo_test] -#[ignore = "disabled, see https://github.com/rust-lang/cargo/issues/14545"] -fn zsh() { - let input = "cargo \t\t"; - let expected = snapbox::str![ - "% cargo ---color --version check install read-manifest update ---config -C clean locate-project remove vendor ---explain -V config login report verify-project ---frozen -Z doc logout run version ---help -h fetch metadata rustc yank ---list -q fix new rustdoc ---locked -v generate-lockfile owner search ---offline add help package test ---quiet bench info pkgid tree ---verbose build init publish uninstall " - ]; - let actual = complete(input, "zsh"); - assert_data_eq!(actual, expected); -} - -fn complete(input: &str, shell: &str) -> String { - let shell = shell.into(); - - // Load the runtime - let mut runtime = match shell { - "bash" => load_runtime::("bash"), - "elvish" => load_runtime::("elvish"), - "fish" => load_runtime::("fish"), - "zsh" => load_runtime::("zsh"), - _ => panic!("Unsupported shell: {}", shell), - }; - - // Exec the completion - let term = completest_pty::Term::new(); - let actual = runtime.complete(input, &term).unwrap(); - - actual -} - -// Return the scratch directory to keep it not being dropped -fn load_runtime(shell: &str) -> Box -where - ::Runtime: 'static, -{ - let home = cargo_test_support::paths::home(); - - let bin_path = cargo_test_support::cargo_exe(); - let bin_root = bin_path.parent().unwrap().to_owned(); - - let mut runtime = Box::new(R::new(bin_root, home).unwrap()); - - match shell { - "bash" => runtime - .register("", "source <(CARGO_COMPLETE=bash cargo)") - .unwrap(), - "elvish" => runtime - .register("", "eval (E:CARGO_COMPLETE=elvish cargo | slurp)") - .unwrap(), - "fish" => runtime - .register("cargo", "source (CARGO_COMPLETE=fish cargo | psub)") - .unwrap(), - "zsh" => runtime - .register( - "cargo", - "#compdef cargo -source <(CARGO_COMPLETE=zsh cargo)", - ) - .unwrap(), - _ => panic!("Unsupported shell: {}", shell), - } - - runtime -}