@@ -98,6 +98,58 @@ fn test_mkfifo_directory() {
98
98
assert ! ( mkfifo( & env:: temp_dir( ) , Mode :: S_IRUSR ) . is_err( ) ) ;
99
99
}
100
100
101
+ #[ test]
102
+ #[ cfg( not( any( target_os = "macos" , target_os = "ios" , target_os = "android" ) ) ) ]
103
+ fn test_mkfifoat_none ( ) {
104
+ let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
105
+ let mkfifoat_fifo = tempdir. path ( ) . join ( "mkfifoat_fifo" ) ;
106
+
107
+ mkfifoat ( None , & mkfifoat_fifo, Mode :: S_IRUSR ) . unwrap ( ) ;
108
+
109
+ let stats = stat:: stat ( & mkfifoat_fifo) . unwrap ( ) ;
110
+ let typ = stat:: SFlag :: from_bits_truncate ( stats. st_mode ) ;
111
+ assert_eq ! ( typ, SFlag :: S_IFIFO ) ;
112
+ }
113
+
114
+ #[ test]
115
+ #[ cfg( not( any( target_os = "macos" , target_os = "ios" , target_os = "android" ) ) ) ]
116
+ fn test_mkfifoat ( ) {
117
+ let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
118
+ let dirfd = open ( tempdir. path ( ) , OFlag :: empty ( ) , Mode :: empty ( ) ) . unwrap ( ) ;
119
+ let mkfifoat_name = "mkfifoat_name" ;
120
+
121
+ mkfifoat ( Some ( dirfd) , mkfifoat_name, Mode :: S_IRUSR ) . unwrap ( ) ;
122
+
123
+ let stats = stat:: fstatat ( dirfd, mkfifoat_name, fcntl:: AtFlags :: empty ( ) ) . unwrap ( ) ;
124
+ let typ = stat:: SFlag :: from_bits_truncate ( stats. st_mode ) ;
125
+ assert_eq ! ( typ, SFlag :: S_IFIFO ) ;
126
+ }
127
+
128
+ #[ test]
129
+ #[ cfg( not( any( target_os = "macos" , target_os = "ios" , target_os = "android" ) ) ) ]
130
+ fn test_mkfifoat_directory_none ( ) {
131
+ // mkfifoat should fail if a directory is given
132
+ assert_eq ! (
133
+ mkfifoat( None , & env:: temp_dir( ) , Mode :: S_IRUSR ) . is_ok( ) ,
134
+ false
135
+ ) ;
136
+ }
137
+
138
+ #[ test]
139
+ #[ cfg( not( any( target_os = "macos" , target_os = "ios" , target_os = "android" ) ) ) ]
140
+ fn test_mkfifoat_directory ( ) {
141
+ // mkfifoat should fail if a directory is given
142
+ let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
143
+ let dirfd = open ( tempdir. path ( ) , OFlag :: empty ( ) , Mode :: empty ( ) ) . unwrap ( ) ;
144
+ let mkfifoat_dir = "mkfifoat_dir" ;
145
+ stat:: mkdirat ( dirfd, mkfifoat_dir, Mode :: S_IRUSR ) . unwrap ( ) ;
146
+
147
+ assert_eq ! (
148
+ mkfifoat( Some ( dirfd) , mkfifoat_dir, Mode :: S_IRUSR ) . is_ok( ) ,
149
+ false
150
+ ) ;
151
+ }
152
+
101
153
#[ test]
102
154
fn test_getpid ( ) {
103
155
let pid: :: libc:: pid_t = getpid ( ) . into ( ) ;
0 commit comments