Skip to content
This repository was archived by the owner on Mar 7, 2021. It is now read-only.

Commit 129f445

Browse files
committed
Try this?
1 parent ea3b255 commit 129f445

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

tests/chrdev/tests/tests.rs

+20-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
use std::ffi::CString;
21
use std::io::Read;
32
use std::path::PathBuf;
3+
use std::process::Command;
44
use std::{env, fs};
55

66
use libc;
77

88
use kernel_module_testlib::with_kernel_module;
99

10-
fn get_device_number() -> libc::dev_t {
10+
fn get_device_major_number() -> libc::dev_t {
1111
let devices = fs::read_to_string("/proc/devices").unwrap();
1212
let dev_no_line = devices
1313
.lines()
@@ -31,31 +31,40 @@ struct UnlinkOnDrop<'a> {
3131

3232
impl Drop for UnlinkOnDrop<'_> {
3333
fn drop(&mut self) {
34-
fs::remove_file(self.path).unwrap();
34+
Command::new("sudo")
35+
.arg("rm")
36+
.arg(self.path.to_str().unwrap())
37+
.status()
38+
.unwrap();
3539
}
3640
}
3741

38-
fn mknod(path: &PathBuf, mode: u32, device_number: libc::dev_t) -> UnlinkOnDrop {
39-
let path_cstr = CString::new(path.to_str().unwrap().as_bytes().to_vec()).unwrap();
40-
let result = unsafe { libc::mknod(path_cstr.as_ptr(), mode, device_number) };
41-
assert_eq!(result, 0);
42+
fn mknod(path: &PathBuf, device_number: libc::dev_t) -> UnlinkOnDrop {
43+
Command::new("sudo")
44+
.arg("mknod")
45+
.arg(path.to_str().unwrap())
46+
.arg("c")
47+
.arg(device_number.to_string())
48+
.arg("0")
49+
.status()
50+
.unwrap();
4251
return UnlinkOnDrop { path };
4352
}
4453

4554
#[test]
4655
fn test_mknod() {
4756
with_kernel_module(|| {
48-
let device_number = get_device_number();
49-
mknod(&temporary_file_path(), 0o600, device_number);
57+
let device_number = get_device_major_number();
58+
mknod(&temporary_file_path(), device_number);
5059
});
5160
}
5261

5362
#[test]
5463
fn test_read() {
5564
with_kernel_module(|| {
56-
let device_number = get_device_number();
65+
let device_number = get_device_major_number();
5766
let p = temporary_file_path();
58-
let _u = mknod(&p, 0o600, device_number);
67+
let _u = mknod(&p, device_number);
5968

6069
let mut f = fs::File::open(&p).unwrap();
6170
let mut data = [0; 12];

0 commit comments

Comments
 (0)