File tree Expand file tree Collapse file tree 2 files changed +34
-1
lines changed
src/uucore/src/lib/features Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -683,7 +683,9 @@ impl FsUsage {
683683 // Total number of free blocks.
684684 bfree : number_of_free_clusters as u64 ,
685685 // Total number of free blocks available to non-privileged processes.
686- bavail : 0 ,
686+ // Windows: 'bavail' should reflect free clusters available to non-privileged processes.
687+ // See: https://github.com/uutils/coreutils/issues/7461
688+ bavail : number_of_free_clusters as u64 ,
687689 bavail_top_bit_set : ( ( bytes_per_sector as u64 ) & ( 1u64 . rotate_right ( 1 ) ) ) != 0 ,
688690 // Total number of file nodes (inodes) on the file system.
689691 files : 0 , // Not available on windows
@@ -1215,4 +1217,15 @@ mod tests {
12151217 crate :: os_str_from_bytes( b"/mnt/some- -dir-\xf3 " ) . unwrap( )
12161218 ) ;
12171219 }
1220+
1221+ #[ test]
1222+ #[ cfg( windows) ]
1223+ fn test_windows_fs_usage_bavail_not_zero ( ) {
1224+ // Regression test for issue #7461: bavail should reflect actual free clusters
1225+ use std:: path:: Path ;
1226+
1227+ if let Ok ( fs_usage) = FsUsage :: new ( Path :: new ( "." ) ) {
1228+ assert ! ( fs_usage. bavail >= 0 ) ;
1229+ }
1230+ }
12181231}
Original file line number Diff line number Diff line change @@ -973,3 +973,23 @@ fn test_nonexistent_file() {
973973 . stderr_is ( "df: does-not-exist: No such file or directory\n " )
974974 . stdout_is ( "File\n .\n " ) ;
975975}
976+
977+ #[ test]
978+ #[ cfg( target_os = "windows" ) ]
979+ fn test_windows_avail_column_not_zero ( ) {
980+ // Regression test for issue #7461: Avail column should not be 0 on Windows
981+ let output = new_ucmd ! ( )
982+ . args ( & [ "--output=avail" ] )
983+ . succeeds ( )
984+ . stdout_str_lossy ( ) ;
985+
986+ let lines: Vec < & str > = output. lines ( ) . skip ( 1 ) . collect ( ) ;
987+ assert ! ( !lines. is_empty( ) , "Should have at least one filesystem" ) ;
988+
989+ // At least one filesystem should have non-zero avail
990+ let has_non_zero = lines. iter ( ) . any ( |line| {
991+ line. trim ( ) . parse :: < u64 > ( ) . map ( |v| v > 0 ) . unwrap_or ( false )
992+ } ) ;
993+
994+ assert ! ( has_non_zero, "At least one filesystem should have non-zero available space" ) ;
995+ }
You can’t perform that action at this time.
0 commit comments