summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2016-12-05 15:09:49 +0100
committerLinus Färnstrand <linus@mullvad.net>2016-12-05 15:09:49 +0100
commit22da2098045bdf69a178eb7e4eaaaf38989235af (patch)
tree45207af982855eb3b0762c3382df55e4684779aa /tests
parentf0ee88a4c02039ad198e42f78b39905ce7c89436 (diff)
parent057a45c28be721d44d76ed64c4dba6f8a0cbffdf (diff)
downloadmullvadvpn-22da2098045bdf69a178eb7e4eaaaf38989235af.tar.xz
mullvadvpn-22da2098045bdf69a178eb7e4eaaaf38989235af.zip
Merge branch 'add-process'
Diffstat (limited to 'tests')
-rw-r--r--tests/process.rs36
-rw-r--r--tests/util.rs16
2 files changed, 52 insertions, 0 deletions
diff --git a/tests/process.rs b/tests/process.rs
new file mode 100644
index 0000000000..2281a9d990
--- /dev/null
+++ b/tests/process.rs
@@ -0,0 +1,36 @@
+extern crate talpid_core;
+
+mod util;
+
+use talpid_core::process::OpenVpnBuilder;
+
+#[cfg(target_os = "linux")]
+#[test]
+fn check_test_environment() {
+ use std::env;
+ let test_threads = env::var("RUST_TEST_THREADS");
+ if !test_threads.is_ok() || test_threads.unwrap() != "1" {
+ panic!("Tests must be run with environment variable RUST_TEST_THREADS=1");
+ }
+}
+
+#[cfg(target_os = "linux")]
+#[test]
+fn openvpn_builder_starts_correct_process() {
+ let mut child = OpenVpnBuilder::new("echo").spawn().unwrap();
+ let args = util::read_args_for_proc(child.id());
+
+ assert_eq!(vec!["echo"], args);
+ child.kill().unwrap();
+}
+
+#[cfg(target_os = "linux")]
+#[test]
+fn openvpn_builder_passes_config() {
+ let config_path = "/path/to/config".to_owned();
+ let mut child = OpenVpnBuilder::new("echo").config(&config_path).spawn().unwrap();
+ let args = util::read_args_for_proc(child.id());
+
+ assert!(args.contains(&config_path));
+ child.kill().unwrap();
+}
diff --git a/tests/util.rs b/tests/util.rs
new file mode 100644
index 0000000000..8fe87e5783
--- /dev/null
+++ b/tests/util.rs
@@ -0,0 +1,16 @@
+use std::fs::File;
+use std::io::Read;
+use std::path::Path;
+
+pub fn read_file<P: AsRef<Path>>(path: P) -> String {
+ let mut string = String::new();
+ let mut f = File::open(path).unwrap();
+ f.read_to_string(&mut string).unwrap();
+ string
+}
+
+#[cfg(target_os = "linux")]
+pub fn read_args_for_proc(pid: u32) -> Vec<String> {
+ let cmdline = read_file(format!("/proc/{}/cmdline", pid));
+ cmdline.split_terminator('\0').map(String::from).collect()
+}