@@ -5,22 +5,27 @@ extern crate nix;
5
5
#[ macro_use]
6
6
extern crate lazy_static;
7
7
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
+
8
19
cfg_if ! {
9
20
if #[ cfg( any( target_os = "android" , target_os = "linux" ) ) ] {
10
21
macro_rules! require_capability {
11
22
( $capname: ident) => {
12
23
use :: caps:: { Capability , CapSet , has_cap} ;
13
- use :: std:: io:: { self , Write } ;
14
24
15
25
if !has_cap( None , CapSet :: Effective , Capability :: $capname)
16
26
. unwrap( )
17
27
{
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." ) ;
24
29
}
25
30
}
26
31
}
@@ -39,12 +44,7 @@ macro_rules! skip_if_jailed {
39
44
if let CtlValue :: Int ( 1 ) = :: sysctl:: value( "security.jail.jailed" )
40
45
. unwrap( )
41
46
{
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) ;
48
48
}
49
49
}
50
50
}
@@ -55,11 +55,7 @@ macro_rules! skip_if_not_root {
55
55
use nix:: unistd:: Uid ;
56
56
57
57
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) ;
63
59
}
64
60
} ;
65
61
}
@@ -74,13 +70,8 @@ cfg_if! {
74
70
if fields. next( ) == Some ( "Seccomp:" ) &&
75
71
fields. next( ) != Some ( "0" )
76
72
{
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) ) ;
84
75
}
85
76
}
86
77
}
@@ -97,7 +88,6 @@ cfg_if! {
97
88
if #[ cfg( target_os = "linux" ) ] {
98
89
macro_rules! require_kernel_version {
99
90
( $name: expr, $version_requirement: expr) => {
100
- use :: std:: io:: Write ;
101
91
use semver:: { Version , VersionReq } ;
102
92
103
93
let version_requirement = VersionReq :: parse( $version_requirement)
@@ -112,13 +102,8 @@ cfg_if! {
112
102
version. build. clear( ) ;
113
103
114
104
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) ;
122
107
}
123
108
}
124
109
}
0 commit comments