@@ -6,7 +6,6 @@ use std::io::{self, Read};
66use std:: net:: TcpListener ;
77use std:: process:: { Child , Stdio } ;
88use std:: thread;
9- use std:: time;
109
1110#[ cargo_test]
1211fn 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) ]
24090pub fn ctrl_c ( child : & mut Child ) {
24191 let r = unsafe { libc:: kill ( -( child. id ( ) as i32 ) , libc:: SIGINT ) } ;
0 commit comments