Skip to content

Commit 3066814

Browse files
committed
tests: Cleanup: introduce a common spawn_server() helper function
1 parent 947231b commit 3066814

File tree

2 files changed

+25
-43
lines changed

2 files changed

+25
-43
lines changed

src/platform/test.rs

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,9 @@
1010
use platform::{self, OsIpcChannel, OsIpcReceiverSet};
1111
use platform::{OsIpcSharedMemory};
1212
use std::collections::HashMap;
13-
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
14-
use std::process::{Command, Stdio};
1513
use std::sync::Arc;
1614
use std::time::{Duration, Instant};
1715
use std::thread;
18-
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
19-
use std::env;
2016

2117
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
2218
use libc;
@@ -26,7 +22,7 @@ use libc::{kill, SIGSTOP, SIGCONT};
2622
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
2723
use test::{fork, Wait};
2824
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
29-
use test::get_channel_name_arg;
25+
use test::{get_channel_name_arg, spawn_server};
3026

3127
#[test]
3228
fn simple() {
@@ -676,15 +672,7 @@ fn cross_process_spawn() {
676672
let (server, name) = OsIpcOneShotServer::new().unwrap();
677673
let data: &[u8] = b"1234567";
678674

679-
let mut child_pid = Command::new(env::current_exe().unwrap())
680-
.arg("--ignored")
681-
.arg("cross_process_server")
682-
.arg(format!("channel_name-server:{}", name))
683-
.stdin(Stdio::null())
684-
.stdout(Stdio::null())
685-
.stderr(Stdio::null())
686-
.spawn()
687-
.expect("failed to execute server process");
675+
let mut child_pid = spawn_server("cross_process_server", &[("server", &*name)]);
688676

689677
let (_, received_data, received_channels, received_shared_memory_regions) =
690678
server.accept().unwrap();
@@ -738,15 +726,8 @@ fn cross_process_sender_transfer_server()
738726
fn cross_process_sender_transfer_spawn() {
739727
let (server, name) = OsIpcOneShotServer::new().unwrap();
740728

741-
let mut child_pid = Command::new(env::current_exe().unwrap())
742-
.arg("--ignored")
743-
.arg("cross_process_sender_transfer_server")
744-
.arg(format!("channel_name-server:{}", name))
745-
.stdin(Stdio::null())
746-
.stdout(Stdio::null())
747-
.stderr(Stdio::null())
748-
.spawn()
749-
.expect("failed to execute server process");
729+
let mut child_pid = spawn_server("cross_process_sender_transfer_server",
730+
&[("server", &*name)]);
750731

751732
let (super_rx, _, mut received_channels, _) = server.accept().unwrap();
752733
assert_eq!(received_channels.len(), 1);
@@ -1018,15 +999,8 @@ fn cross_process_two_step_transfer_spawn() {
1018999

10191000
// create a one-shot server, and spawn another process
10201001
let (server, name) = OsIpcOneShotServer::new().unwrap();
1021-
let mut child_pid = Command::new(env::current_exe().unwrap())
1022-
.arg("--ignored")
1023-
.arg("cross_process_two_step_transfer_server")
1024-
.arg(format!("channel_name-server:{}", name))
1025-
.stdin(Stdio::null())
1026-
.stdout(Stdio::null())
1027-
.stderr(Stdio::null())
1028-
.spawn()
1029-
.expect("failed to execute server process");
1002+
let mut child_pid = spawn_server("cross_process_two_step_transfer_server",
1003+
&[("server", &*name)]);
10301004

10311005
// The other process will have sent us a transmit channel in received channels
10321006
let (super_rx, _, mut received_channels, _) = server.accept().unwrap();

src/test.rs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::cell::RefCell;
1919
use std::env;
2020
use std::iter;
2121
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
22-
use std::process::{Command, Stdio};
22+
use std::process::{self, Command, Stdio};
2323
#[cfg(not(windows))]
2424
use std::ptr;
2525
use std::sync::Arc;
@@ -72,6 +72,22 @@ pub fn get_channel_name_arg(which: &str) -> Option<String> {
7272
None
7373
}
7474

75+
// Helper to get a channel_name argument passed in; used for the
76+
// cross-process spawn server tests.
77+
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android")))]
78+
pub fn spawn_server(test_name: &str, server_args: &[(&str, &str)]) -> process::Child {
79+
Command::new(env::current_exe().unwrap())
80+
.arg("--ignored")
81+
.arg(test_name)
82+
.args(server_args.iter()
83+
.map(|&(ref name, ref val)| format!("channel_name-{}:{}", name, val)))
84+
.stdin(Stdio::null())
85+
.stdout(Stdio::null())
86+
.stderr(Stdio::null())
87+
.spawn()
88+
.expect("failed to execute server process")
89+
}
90+
7591
type Person = (String, u32);
7692

7793
#[test]
@@ -185,16 +201,8 @@ fn cross_process_embedded_senders_spawn() {
185201
let (server0, server0_name) = IpcOneShotServer::new().unwrap();
186202
let (server2, server2_name) = IpcOneShotServer::new().unwrap();
187203

188-
let mut child_pid = Command::new(env::current_exe().unwrap())
189-
.arg("--ignored")
190-
.arg("cross_process_embedded_senders_server")
191-
.arg(format!("channel_name-server0:{}", server0_name))
192-
.arg(format!("channel_name-server2:{}", server2_name))
193-
.stdin(Stdio::null())
194-
.stdout(Stdio::null())
195-
.stderr(Stdio::null())
196-
.spawn()
197-
.expect("failed to execute server process");
204+
let mut child_pid = spawn_server("cross_process_embedded_senders_server",
205+
&[("server0", &*server0_name), ("server2", &*server2_name)]);
198206

199207
let (_, tx1): (_, IpcSender<Person>) = server0.accept().unwrap();
200208
tx1.send(person.clone()).unwrap();

0 commit comments

Comments
 (0)