about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/non_octal_unix_permissions.rs
blob: ba1ee10a27871c74f71939e3db928b88c6de21de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//@ignore-target: windows

#![warn(clippy::non_octal_unix_permissions)]
use std::fs::{DirBuilder, File, OpenOptions, Permissions};
use std::os::unix::fs::{DirBuilderExt, OpenOptionsExt, PermissionsExt};

fn main() {
    let permissions = 0o760;

    // OpenOptionsExt::mode
    let mut options = OpenOptions::new();
    options.mode(440);
    //~^ non_octal_unix_permissions
    options.mode(0o400);
    options.mode(permissions);

    // PermissionsExt::from_mode
    let _permissions = Permissions::from_mode(647);
    //~^ non_octal_unix_permissions
    let _permissions = Permissions::from_mode(0o000);
    let _permissions = Permissions::from_mode(permissions);

    // PermissionsExt::set_mode
    let f = File::create("foo.txt").unwrap();
    let metadata = f.metadata().unwrap();
    let mut permissions = metadata.permissions();

    permissions.set_mode(644);
    //~^ non_octal_unix_permissions
    permissions.set_mode(0o704);
    // no error
    permissions.set_mode(0b111_000_100);

    // DirBuilderExt::mode
    let mut builder = DirBuilder::new();
    builder.mode(755);
    //~^ non_octal_unix_permissions
    builder.mode(0o406);
    // no error
    permissions.set_mode(0b111000100);
}