summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlrich Hornung <hornunguli@gmx.de>2024-03-14 20:02:55 +0100
committerUlrich Hornung <hornunguli@gmx.de>2024-03-23 16:54:19 +0100
commit066032b1d32dfc65c83b053ae3233e482d3ccf31 (patch)
tree2380d4abca31115204d8f73eb526c6b5d6dee302
parentf3bbf53412c47787ca73709d815817b1089b9774 (diff)
apply different reference sizes for f2fs (android) case
-rw-r--r--tests/by-util/test_ls.rs60
1 files changed, 43 insertions, 17 deletions
diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs
index 8d4e58759..3f0154f7a 100644
--- a/tests/by-util/test_ls.rs
+++ b/tests/by-util/test_ls.rs
@@ -73,6 +73,21 @@ fn test_ls_ordering() {
.stdout_matches(&Regex::new("some-dir1:\\ntotal 0").unwrap());
}
+#[cfg(all(unix, feature = "df", not(target_os = "freebsd")))]
+fn get_filesystem_type(scene: &TestScenario, path: &Path) -> String {
+ let mut cmd = scene.ccmd("df");
+ cmd.args(&["-PT"]).arg(path);
+ let output = cmd.succeeds();
+ let stdout_str = String::from_utf8_lossy(output.stdout());
+ println!("output of stat call ({:?}):\n{}", cmd, stdout_str);
+ let regex_str = r#"Filesystem\s+Type\s+.+[\r\n]+([^\s]+)\s+(?<fstype>[^\s]+)\s+"#;
+ let regex = Regex::new(regex_str).unwrap();
+ let m = regex.captures(&stdout_str).unwrap();
+ let fstype = m["fstype"].to_owned();
+ println!("detected fstype: {}", fstype);
+ fstype
+}
+
#[cfg(all(feature = "truncate", feature = "dd"))]
#[test] // FIXME: fix this test for FreeBSD
fn test_ls_allocation_size() {
@@ -81,7 +96,7 @@ fn test_ls_allocation_size() {
at.mkdir("some-dir1");
at.touch("some-dir1/empty-file");
- #[cfg(unix)]
+ #[cfg(all(unix, feature = "df"))]
{
scene
.ccmd("truncate")
@@ -116,12 +131,23 @@ fn test_ls_allocation_size() {
.stdout_matches(&Regex::new("[^ ] 2 [^ ]").unwrap());
#[cfg(not(target_os = "freebsd"))]
+ let (zero_file_size_4k, zero_file_size_1k, zero_file_size_8k, zero_file_size_4m) =
+ match get_filesystem_type(&scene, &scene.fixtures.subdir).as_str() {
+ // apparently f2fs (flash friendly fs) accepts small overhead for better performance
+ "f2fs" => (4100, 1025, 8200, "4.1M"),
+ _ => (4096, 1024, 8192, "4.0M"),
+ };
+
+ #[cfg(not(target_os = "freebsd"))]
scene
.ucmd()
.arg("-s1")
.arg("some-dir1")
.succeeds()
- .stdout_is("total 4096\n 0 empty-file\n 0 file-with-holes\n4096 zero-file\n");
+ .stdout_is(format!(
+ "total {zero_file_size_4k}\n 0 empty-file\n 0 file-with-holes\n\
+ {zero_file_size_4k} zero-file\n"
+ ));
scene
.ucmd()
@@ -138,7 +164,7 @@ fn test_ls_allocation_size() {
.arg("some-dir1")
.succeeds()
.stdout_contains("0 empty-file")
- .stdout_contains("4096 zero-file");
+ .stdout_contains(format!("{zero_file_size_4k} zero-file"));
// Test alignment of different block sized files
let res = scene.ucmd().arg("-si1").arg("some-dir1").succeeds();
@@ -185,10 +211,10 @@ fn test_ls_allocation_size() {
.arg("-s1")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 1024")
+ .stdout_contains(format!("total {zero_file_size_1k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("1024 zero-file");
+ .stdout_contains(format!("{zero_file_size_1k} zero-file"));
#[cfg(not(target_os = "freebsd"))]
scene
@@ -210,10 +236,10 @@ fn test_ls_allocation_size() {
.arg("-s1")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 1024")
+ .stdout_contains(format!("total {zero_file_size_1k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("1024 zero-file");
+ .stdout_contains(format!("{zero_file_size_1k} zero-file"));
#[cfg(not(target_os = "freebsd"))]
scene
@@ -222,10 +248,10 @@ fn test_ls_allocation_size() {
.arg("-s1")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 8192")
+ .stdout_contains(format!("total {zero_file_size_8k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("8192 zero-file");
+ .stdout_contains(format!("{zero_file_size_8k} zero-file"));
// -k should make 'ls' ignore the env var
#[cfg(not(target_os = "freebsd"))]
@@ -235,10 +261,10 @@ fn test_ls_allocation_size() {
.arg("-s1k")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 4096")
+ .stdout_contains(format!("total {zero_file_size_4k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("4096 zero-file");
+ .stdout_contains(format!("{zero_file_size_4k} zero-file"));
// but manually specified blocksize overrides -k
#[cfg(not(target_os = "freebsd"))]
@@ -248,10 +274,10 @@ fn test_ls_allocation_size() {
.arg("--block-size=4K")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 1024")
+ .stdout_contains(format!("total {zero_file_size_1k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("1024 zero-file");
+ .stdout_contains(format!("{zero_file_size_1k} zero-file"));
#[cfg(not(target_os = "freebsd"))]
scene
@@ -260,10 +286,10 @@ fn test_ls_allocation_size() {
.arg("--block-size=4K")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 1024")
+ .stdout_contains(format!("total {zero_file_size_1k}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("1024 zero-file");
+ .stdout_contains(format!("{zero_file_size_1k} zero-file"));
// si option should always trump the human-readable option
#[cfg(not(target_os = "freebsd"))]
@@ -285,10 +311,10 @@ fn test_ls_allocation_size() {
.arg("--block-size=human-readable")
.arg("some-dir1")
.succeeds()
- .stdout_contains("total 4.0M")
+ .stdout_contains(format!("total {zero_file_size_4m}"))
.stdout_contains("0 empty-file")
.stdout_contains("0 file-with-holes")
- .stdout_contains("4.0M zero-file");
+ .stdout_contains(format!("{zero_file_size_4m} zero-file"));
#[cfg(not(target_os = "freebsd"))]
scene