From 7ffc7d073cc5b14fbafbf4f03af48d4550e7539a Mon Sep 17 00:00:00 2001 From: Michael Debertol Date: Wed, 2 Jun 2021 18:08:09 +0200 Subject: [PATCH] cp: test that file descriptors are closed --- tests/by-util/test_cp.rs | 16 +++++++++++++++- tests/fixtures/cp/dir_with_10_files/0 | 0 tests/fixtures/cp/dir_with_10_files/1 | 0 tests/fixtures/cp/dir_with_10_files/2 | 0 tests/fixtures/cp/dir_with_10_files/3 | 0 tests/fixtures/cp/dir_with_10_files/4 | 0 tests/fixtures/cp/dir_with_10_files/5 | 0 tests/fixtures/cp/dir_with_10_files/6 | 0 tests/fixtures/cp/dir_with_10_files/7 | 0 tests/fixtures/cp/dir_with_10_files/8 | 0 tests/fixtures/cp/dir_with_10_files/9 | 0 11 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/cp/dir_with_10_files/0 create mode 100644 tests/fixtures/cp/dir_with_10_files/1 create mode 100644 tests/fixtures/cp/dir_with_10_files/2 create mode 100644 tests/fixtures/cp/dir_with_10_files/3 create mode 100644 tests/fixtures/cp/dir_with_10_files/4 create mode 100644 tests/fixtures/cp/dir_with_10_files/5 create mode 100644 tests/fixtures/cp/dir_with_10_files/6 create mode 100644 tests/fixtures/cp/dir_with_10_files/7 create mode 100644 tests/fixtures/cp/dir_with_10_files/8 create mode 100644 tests/fixtures/cp/dir_with_10_files/9 diff --git a/tests/by-util/test_cp.rs b/tests/by-util/test_cp.rs index c56e1ca57..ff607f984 100644 --- a/tests/by-util/test_cp.rs +++ b/tests/by-util/test_cp.rs @@ -1,4 +1,4 @@ -// spell-checker:ignore (flags) reflink (fs) tmpfs +// spell-checker:ignore (flags) reflink (fs) tmpfs (linux) rlimit Rlim NOFILE use crate::common::util::*; #[cfg(not(windows))] @@ -14,6 +14,8 @@ use std::os::windows::fs::symlink_file; #[cfg(target_os = "linux")] use filetime::FileTime; +#[cfg(target_os = "linux")] +use rlimit::Resource; #[cfg(not(windows))] use std::env; #[cfg(target_os = "linux")] @@ -1276,3 +1278,15 @@ fn test_cp_reflink_insufficient_permission() { .fails() .stderr_only("cp: 'unreadable' -> 'existing_file.txt': Permission denied (os error 13)"); } + +#[cfg(target_os = "linux")] +#[test] +fn test_closes_file_descriptors() { + new_ucmd!() + .arg("-r") + .arg("--reflink=auto") + .arg("dir_with_10_files/") + .arg("dir_with_10_files_new/") + .with_limit(Resource::NOFILE, 9, 9) + .succeeds(); +} diff --git a/tests/fixtures/cp/dir_with_10_files/0 b/tests/fixtures/cp/dir_with_10_files/0 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/1 b/tests/fixtures/cp/dir_with_10_files/1 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/2 b/tests/fixtures/cp/dir_with_10_files/2 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/3 b/tests/fixtures/cp/dir_with_10_files/3 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/4 b/tests/fixtures/cp/dir_with_10_files/4 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/5 b/tests/fixtures/cp/dir_with_10_files/5 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/6 b/tests/fixtures/cp/dir_with_10_files/6 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/7 b/tests/fixtures/cp/dir_with_10_files/7 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/8 b/tests/fixtures/cp/dir_with_10_files/8 new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fixtures/cp/dir_with_10_files/9 b/tests/fixtures/cp/dir_with_10_files/9 new file mode 100644 index 000000000..e69de29bb