@@ -2058,3 +2058,96 @@ fn test_du_symlinks_multiple_links_in_args() {
20582058 result. stdout_contains ( "dir1/file" ) ;
20592059 result. stdout_does_not_contain ( "dir1/link" ) ;
20602060}
2061+
2062+ #[ test]
2063+ fn test_block_size_args_override ( ) {
2064+ let ts = TestScenario :: new ( util_name ! ( ) ) ;
2065+ let at = & ts. fixtures ;
2066+ let dir = "override_args_dir" ;
2067+
2068+ at. mkdir ( dir) ;
2069+ let fpath = at. plus ( format ! ( "{dir}/file" ) ) ;
2070+ std:: fs:: File :: create ( fpath)
2071+ . expect ( "cannot create test file" )
2072+ . set_len ( 100_000_000 )
2073+ . expect ( "cannot set file size" ) ;
2074+
2075+ let fpath2 = at. plus ( format ! ( "{dir}/file_2" ) ) ;
2076+ std:: fs:: File :: create ( fpath2)
2077+ . expect ( "cannot create test file" )
2078+ . set_len ( 100_000_000 )
2079+ . expect ( "cannot set file size" ) ;
2080+
2081+ let test_cases = [
2082+ ( [ "-sk" , "-m" ] , "-sm" ) ,
2083+ ( [ "-sk" , "-b" ] , "-sb" ) ,
2084+ ( [ "-sm" , "-k" ] , "-sk" ) ,
2085+ ] ;
2086+
2087+ for ( idx, ( overwriting_args, expected) ) in test_cases. into_iter ( ) . enumerate ( ) {
2088+ let overridden_args = ts
2089+ . ucmd ( )
2090+ . arg ( dir)
2091+ . args ( & overwriting_args)
2092+ . succeeds ( )
2093+ . stdout_move_str ( ) ;
2094+
2095+ let single_args = ts
2096+ . ucmd ( )
2097+ . arg ( dir)
2098+ . arg ( expected)
2099+ . succeeds ( )
2100+ . stdout_move_str ( ) ;
2101+
2102+ assert_eq ! (
2103+ overridden_args, single_args,
2104+ "The last argument of m, k and b should overwrite. Run: {idx}"
2105+ ) ;
2106+ }
2107+ }
2108+
2109+ #[ test]
2110+ fn test_block_override_b_still_has_apparent_size ( ) {
2111+ let ts = TestScenario :: new ( util_name ! ( ) ) ;
2112+ let at = & ts. fixtures ;
2113+ let dir = "override_args_dir" ;
2114+
2115+ at. mkdir ( dir) ;
2116+ let fpath = at. plus ( format ! ( "{dir}/file" ) ) ;
2117+ std:: fs:: File :: create ( fpath)
2118+ . expect ( "cannot create test file" )
2119+ . set_len ( 100_000_000 )
2120+ . expect ( "cannot set file size" ) ;
2121+
2122+ let fpath2 = at. plus ( format ! ( "{dir}/file_2" ) ) ;
2123+ std:: fs:: File :: create ( fpath2)
2124+ . expect ( "cannot create test file" )
2125+ . set_len ( 100_000_000 )
2126+ . expect ( "cannot set file size" ) ;
2127+
2128+ let test_cases = [
2129+ ( [ "-sb" , "-m" ] , [ "-sm" , "--apparent-size" ] ) ,
2130+ ( [ "-sb" , "-k" ] , [ "-sk" , "--apparent-size" ] ) ,
2131+ ] ;
2132+
2133+ for ( idx, ( overwriting_args, expected) ) in test_cases. into_iter ( ) . enumerate ( ) {
2134+ let overridden_args = ts
2135+ . ucmd ( )
2136+ . arg ( dir)
2137+ . args ( & overwriting_args)
2138+ . succeeds ( )
2139+ . stdout_move_str ( ) ;
2140+
2141+ let single_args = ts
2142+ . ucmd ( )
2143+ . arg ( dir)
2144+ . args ( & expected)
2145+ . succeeds ( )
2146+ . stdout_move_str ( ) ;
2147+
2148+ assert_eq ! (
2149+ overridden_args, single_args,
2150+ "Overwriting the b flag should still leave --apparent-size active. Run: {idx}"
2151+ ) ;
2152+ }
2153+ }
0 commit comments