From 307e1fdab45c3757997d3c164dccb97baade50d9 Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Sat, 2 Dec 2023 00:37:25 -0500 Subject: [PATCH] WIP --- .github/workflows/main.yml | 2 +- tests/testsuite/install.rs | 24 ++++++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a49ac0988b66..2ecd39ce30d0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -155,7 +155,7 @@ jobs: run: echo CARGO_CONTAINER_TESTS=1 >> $GITHUB_ENV if: matrix.os == 'ubuntu-latest' - - run: cargo test -p cargo + - run: cargo test -p cargo -- uninstall_running_binary --nocapture - name: Clear intermediate test output run: ci/clean-test-output.sh diff --git a/tests/testsuite/install.rs b/tests/testsuite/install.rs index fb3d7c626270..bf62181eed6c 100644 --- a/tests/testsuite/install.rs +++ b/tests/testsuite/install.rs @@ -2522,6 +2522,8 @@ fn assert_tracker_noexistence(key: &str) { #[cargo_test] fn uninstall_running_binary() { + use std::io::Write; + Package::new("foo", "0.0.1") .file( "Cargo.toml", @@ -2534,12 +2536,18 @@ fn uninstall_running_binary() { .file( "src/main.rs", r#" + use std::net::TcpStream; + use std::env::var; + use std::io::Read; fn main() { - eprintln!(">>>>>>>>>>>>> 1"); - std::net::TcpStream::connect(&std::env::var("ADDR").unwrap()[..]).unwrap(); + for i in 0..2 { + eprintln!(">>>>>>>>>>>>> {i}"); + TcpStream::connect(&var("ADDR").unwrap()[..]) + .unwrap() + .read_to_end(&mut Vec::new()) + .unwrap(); + } eprintln!(">>>>>>>>>>>>> 2"); - std::net::TcpStream::connect(&std::env::var("ADDR").unwrap()[..]).unwrap(); - eprintln!(">>>>>>>>>>>>> 3"); } "#, ) @@ -2577,14 +2585,14 @@ fn uninstall_running_binary() { { // Ensure foo is running before the first `cargo uninstall` call eprintln!(">>>>>>>>>>>>> main 1"); - l.accept().unwrap(); + l.accept().unwrap().0.write_all(&[1]).unwrap(); eprintln!(">>>>>>>>>>>>> main 2"); cargo_process("uninstall foo") .with_status(101) .with_stderr_contains("[ERROR] failed to remove file `[CWD]/home/.cargo/bin/foo[EXE]`") .run(); // Ensure foo is stopped before the second `cargo uninstall` call - l.accept().unwrap(); + l.accept().unwrap().0.write_all(&[1]).unwrap(); eprintln!(">>>>>>>>>>>>> main 3"); t.join().unwrap(); eprintln!(">>>>>>>>>>>>> main 4"); @@ -2597,12 +2605,12 @@ fn uninstall_running_binary() { { // Ensure foo is running before the first `cargo uninstall` call eprintln!(">>>>>>>>>>>>> main 1"); - l.accept().unwrap(); + l.accept().unwrap().0.write_all(&[1]).unwrap(); eprintln!(">>>>>>>>>>>>> main 2"); cargo_process("uninstall foo") .with_stderr("[REMOVING] [CWD]/home/.cargo/bin/foo[EXE]") .run(); - l.accept().unwrap(); + l.accept().unwrap().0.write_all(&[1]).unwrap(); eprintln!(">>>>>>>>>>>>> main 3"); t.join().unwrap(); eprintln!(">>>>>>>>>>>>> main 4");