Skip to content

Commit d970e8e

Browse files
committed
Factor out common code from the various skip macros
1 parent c18b1d0 commit d970e8e

File tree

2 files changed

+19
-34
lines changed

2 files changed

+19
-34
lines changed

test/test.rs

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,27 @@ extern crate nix;
55
#[macro_use]
66
extern crate lazy_static;
77

8+
macro_rules! skip {
9+
($($reason: expr),+) => {
10+
use ::std::io::{self, Write};
11+
12+
let stderr = io::stderr();
13+
let mut handle = stderr.lock();
14+
writeln!(handle, $($reason),+).unwrap();
15+
return;
16+
}
17+
}
18+
819
cfg_if! {
920
if #[cfg(any(target_os = "android", target_os = "linux"))] {
1021
macro_rules! require_capability {
1122
($capname:ident) => {
1223
use ::caps::{Capability, CapSet, has_cap};
13-
use ::std::io::{self, Write};
1424

1525
if !has_cap(None, CapSet::Effective, Capability::$capname)
1626
.unwrap()
1727
{
18-
let stderr = io::stderr();
19-
let mut handle = stderr.lock();
20-
writeln!(handle,
21-
"Insufficient capabilities. Skipping test.")
22-
.unwrap();
23-
return;
28+
skip!("Insufficient capabilities. Skipping test.");
2429
}
2530
}
2631
}
@@ -39,12 +44,7 @@ macro_rules! skip_if_jailed {
3944
if let CtlValue::Int(1) = ::sysctl::value("security.jail.jailed")
4045
.unwrap()
4146
{
42-
use ::std::io::Write;
43-
let stderr = ::std::io::stderr();
44-
let mut handle = stderr.lock();
45-
writeln!(handle, "{} cannot run in a jail. Skipping test.", $name)
46-
.unwrap();
47-
return;
47+
skip!("{} cannot run in a jail. Skipping test.", $name);
4848
}
4949
}
5050
}
@@ -55,11 +55,7 @@ macro_rules! skip_if_not_root {
5555
use nix::unistd::Uid;
5656

5757
if !Uid::current().is_root() {
58-
use ::std::io::Write;
59-
let stderr = ::std::io::stderr();
60-
let mut handle = stderr.lock();
61-
writeln!(handle, "{} requires root privileges. Skipping test.", $name).unwrap();
62-
return;
58+
skip!("{} requires root privileges. Skipping test.", $name);
6359
}
6460
};
6561
}
@@ -74,13 +70,8 @@ cfg_if! {
7470
if fields.next() == Some("Seccomp:") &&
7571
fields.next() != Some("0")
7672
{
77-
use ::std::io::Write;
78-
let stderr = ::std::io::stderr();
79-
let mut handle = stderr.lock();
80-
writeln!(handle,
81-
"{} cannot be run in Seccomp mode. Skipping test.",
82-
stringify!($name)).unwrap();
83-
return;
73+
skip!("{} cannot be run in Seccomp mode. Skipping test.",
74+
stringify!($name));
8475
}
8576
}
8677
}
@@ -97,7 +88,6 @@ cfg_if! {
9788
if #[cfg(target_os = "linux")] {
9889
macro_rules! require_kernel_version {
9990
($name:expr, $version_requirement:expr) => {
100-
use ::std::io::Write;
10191
use semver::{Version, VersionReq};
10292

10393
let version_requirement = VersionReq::parse($version_requirement)
@@ -112,13 +102,8 @@ cfg_if! {
112102
version.build.clear();
113103

114104
if !version_requirement.matches(&version) {
115-
let stderr = ::std::io::stderr();
116-
let mut handle = stderr.lock();
117-
118-
writeln!(handle,
119-
"Skip {} because kernel version `{}` doesn't match the requirement `{}`",
120-
stringify!($name), version, version_requirement).unwrap();
121-
return;
105+
skip!("Skip {} because kernel version `{}` doesn't match the requirement `{}`",
106+
stringify!($name), version, version_requirement);
122107
}
123108
}
124109
}

test/test_unistd.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -932,7 +932,7 @@ fn test_access_file_exists() {
932932
#[test]
933933
fn test_setfsuid() {
934934
use std::os::unix::fs::PermissionsExt;
935-
use std::{fs, thread};
935+
use std::{fs, io, thread};
936936
require_capability!(CAP_SETUID);
937937

938938
// get the UID of the "nobody" user

0 commit comments

Comments
 (0)