Skip to content

Commit 30efa8d

Browse files
committed
test: Remove add/remove death tests
Seeing recent fialures on Windows - rust-lang#13748 - rust-lang#13738 - rust-lang#13740 and maybe more The test was added in rust-lang#12744. It seems of limited utility because there are innumerable ways of adding new writes that aren't atomic and we can't test for them all. Even this case, its limited. See also https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/Flaky.20test.3A.20.20-death.3A.3Akill_cargo_add_never_corrupts_cargo/near/432979594
1 parent 7dc84a2 commit 30efa8d

File tree

1 file changed

+0
-150
lines changed

1 file changed

+0
-150
lines changed

Diff for: tests/testsuite/death.rs

-150
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use std::io::{self, Read};
66
use std::net::TcpListener;
77
use std::process::{Child, Stdio};
88
use std::thread;
9-
use std::time;
109

1110
#[cargo_test]
1211
fn ctrl_c_kills_everyone() {
@@ -87,155 +86,6 @@ fn ctrl_c_kills_everyone() {
8786
);
8887
}
8988

90-
#[cargo_test]
91-
fn kill_cargo_add_never_corrupts_cargo_toml() {
92-
cargo_test_support::registry::init();
93-
cargo_test_support::registry::Package::new("my-package", "0.1.1+my-package").publish();
94-
95-
let with_dependency = r#"
96-
[package]
97-
name = "foo"
98-
version = "0.0.1"
99-
authors = []
100-
101-
[dependencies]
102-
my-package = "0.1.1"
103-
"#;
104-
let without_dependency = r#"
105-
[package]
106-
name = "foo"
107-
version = "0.0.1"
108-
authors = []
109-
"#;
110-
111-
for sleep_time_ms in [30, 60, 90] {
112-
let p = project()
113-
.file("Cargo.toml", without_dependency)
114-
.file("src/lib.rs", "")
115-
.build();
116-
117-
let mut cargo = p.cargo("add").arg("my-package").build_command();
118-
cargo
119-
.stdin(Stdio::piped())
120-
.stdout(Stdio::piped())
121-
.stderr(Stdio::piped());
122-
123-
let mut child = cargo.spawn().unwrap();
124-
125-
thread::sleep(time::Duration::from_millis(sleep_time_ms));
126-
127-
assert!(child.kill().is_ok());
128-
assert!(child.wait().is_ok());
129-
130-
// check the Cargo.toml
131-
let contents = fs::read(p.root().join("Cargo.toml")).unwrap();
132-
133-
// not empty
134-
assert_ne!(
135-
contents, b"",
136-
"Cargo.toml is empty, and should not be at {} milliseconds",
137-
sleep_time_ms
138-
);
139-
140-
// We should have the original Cargo.toml or the new one, nothing else.
141-
if std::str::from_utf8(&contents)
142-
.unwrap()
143-
.contains("[dependencies]")
144-
{
145-
assert_eq!(
146-
std::str::from_utf8(&contents).unwrap(),
147-
with_dependency,
148-
"Cargo.toml is with_dependency after add at {} milliseconds",
149-
sleep_time_ms
150-
);
151-
} else {
152-
assert_eq!(
153-
std::str::from_utf8(&contents).unwrap(),
154-
without_dependency,
155-
"Cargo.toml is without_dependency after add at {} milliseconds",
156-
sleep_time_ms
157-
);
158-
}
159-
}
160-
}
161-
162-
#[cargo_test]
163-
fn kill_cargo_remove_never_corrupts_cargo_toml() {
164-
let with_dependency = r#"
165-
[package]
166-
name = "foo"
167-
version = "0.0.1"
168-
authors = []
169-
build = "build.rs"
170-
171-
[dependencies]
172-
bar = "0.0.1"
173-
"#;
174-
let without_dependency = r#"
175-
[package]
176-
name = "foo"
177-
version = "0.0.1"
178-
authors = []
179-
build = "build.rs"
180-
"#;
181-
182-
// This test depends on killing the cargo process at the right time to cause a failed write.
183-
// Note that we're iterating and using the index as time in ms to sleep before killing the cargo process.
184-
// If it is working correctly, we never fail, but can't hang out here all day...
185-
// So we'll just run it a few times and hope for the best.
186-
for sleep_time_ms in [30, 60, 90] {
187-
// new basic project with a single dependency
188-
let p = project()
189-
.file("Cargo.toml", with_dependency)
190-
.file("src/lib.rs", "")
191-
.build();
192-
193-
// run cargo remove the dependency
194-
let mut cargo = p.cargo("remove").arg("bar").build_command();
195-
cargo
196-
.stdin(Stdio::piped())
197-
.stdout(Stdio::piped())
198-
.stderr(Stdio::piped());
199-
200-
let mut child = cargo.spawn().unwrap();
201-
202-
thread::sleep(time::Duration::from_millis(sleep_time_ms));
203-
204-
assert!(child.kill().is_ok());
205-
assert!(child.wait().is_ok());
206-
207-
// check the Cargo.toml
208-
let contents = fs::read(p.root().join("Cargo.toml")).unwrap();
209-
210-
// not empty
211-
assert_ne!(
212-
contents, b"",
213-
"Cargo.toml is empty, and should not be at {} milliseconds",
214-
sleep_time_ms
215-
);
216-
217-
// We should have the original Cargo.toml or the new one, nothing else.
218-
if std::str::from_utf8(&contents)
219-
.unwrap()
220-
.contains("[dependencies]")
221-
{
222-
assert_eq!(
223-
std::str::from_utf8(&contents).unwrap(),
224-
with_dependency,
225-
"Cargo.toml is not the same as the original at {} milliseconds",
226-
sleep_time_ms
227-
);
228-
} else {
229-
assert_eq!(
230-
std::str::from_utf8(&contents).unwrap(),
231-
without_dependency,
232-
"Cargo.toml is not the same as expected at {} milliseconds",
233-
sleep_time_ms
234-
);
235-
}
236-
}
237-
}
238-
23989
#[cfg(unix)]
24090
pub fn ctrl_c(child: &mut Child) {
24191
let r = unsafe { libc::kill(-(child.id() as i32), libc::SIGINT) };

0 commit comments

Comments
 (0)