mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
fix testcase fails on Windows
This commit is contained in:
parent
102c30061e
commit
b0d18e86fc
1 changed files with 44 additions and 9 deletions
|
|
@ -1,7 +1,14 @@
|
|||
use std::{collections::VecDeque, path::{Path, PathBuf}};
|
||||
use std::{
|
||||
collections::VecDeque,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use anyhow::Result;
|
||||
use tokio::{fs, io, select, sync::{mpsc, oneshot}, time};
|
||||
use tokio::{
|
||||
fs, io, select,
|
||||
sync::{mpsc, oneshot},
|
||||
time,
|
||||
};
|
||||
|
||||
pub async fn calculate_size(path: &Path) -> u64 {
|
||||
let mut total = 0;
|
||||
|
|
@ -95,7 +102,10 @@ pub fn copy_with_progress(from: &Path, to: &Path) -> mpsc::Receiver<Result<u64,
|
|||
#[cfg(not(target_os = "windows"))]
|
||||
#[allow(clippy::collapsible_else_if)]
|
||||
pub fn file_mode(mode: u32) -> String {
|
||||
use libc::{S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFMT, S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR};
|
||||
use libc::{
|
||||
S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFMT, S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR,
|
||||
S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR,
|
||||
};
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
let m = mode as u16;
|
||||
|
|
@ -123,27 +133,51 @@ pub fn file_mode(mode: u32) -> String {
|
|||
s.push(if m & S_IRUSR != 0 { 'r' } else { '-' });
|
||||
s.push(if m & S_IWUSR != 0 { 'w' } else { '-' });
|
||||
s.push(if m & S_IXUSR != 0 {
|
||||
if m & S_ISUID != 0 { 's' } else { 'x' }
|
||||
if m & S_ISUID != 0 {
|
||||
's'
|
||||
} else {
|
||||
if m & S_ISUID != 0 { 'S' } else { '-' }
|
||||
'x'
|
||||
}
|
||||
} else {
|
||||
if m & S_ISUID != 0 {
|
||||
'S'
|
||||
} else {
|
||||
'-'
|
||||
}
|
||||
});
|
||||
|
||||
// Group
|
||||
s.push(if m & S_IRGRP != 0 { 'r' } else { '-' });
|
||||
s.push(if m & S_IWGRP != 0 { 'w' } else { '-' });
|
||||
s.push(if m & S_IXGRP != 0 {
|
||||
if m & S_ISGID != 0 { 's' } else { 'x' }
|
||||
if m & S_ISGID != 0 {
|
||||
's'
|
||||
} else {
|
||||
if m & S_ISGID != 0 { 'S' } else { '-' }
|
||||
'x'
|
||||
}
|
||||
} else {
|
||||
if m & S_ISGID != 0 {
|
||||
'S'
|
||||
} else {
|
||||
'-'
|
||||
}
|
||||
});
|
||||
|
||||
// Other
|
||||
s.push(if m & S_IROTH != 0 { 'r' } else { '-' });
|
||||
s.push(if m & S_IWOTH != 0 { 'w' } else { '-' });
|
||||
s.push(if m & S_IXOTH != 0 {
|
||||
if m & S_ISVTX != 0 { 't' } else { 'x' }
|
||||
if m & S_ISVTX != 0 {
|
||||
't'
|
||||
} else {
|
||||
if m & S_ISVTX != 0 { 'T' } else { '-' }
|
||||
'x'
|
||||
}
|
||||
} else {
|
||||
if m & S_ISVTX != 0 {
|
||||
'T'
|
||||
} else {
|
||||
'-'
|
||||
}
|
||||
});
|
||||
|
||||
s
|
||||
|
|
@ -172,6 +206,7 @@ pub fn max_common_root(files: &[impl AsRef<Path>]) -> PathBuf {
|
|||
root
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
#[test]
|
||||
fn test_max_common_root() {
|
||||
assert_eq!(max_common_root(&[] as &[PathBuf]).as_os_str(), "");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue