debci runs tests in an environment where the crate root is not writable, the testsuite
needs some adjustments to handle this.
Index: rust-findutils-0.8.0/src/find/matchers/lname.rs
===================================================================
--- rust-findutils-0.8.0.orig/src/find/matchers/lname.rs
+++ rust-findutils-0.8.0/src/find/matchers/lname.rs
@@ -67,14 +67,17 @@ mod tests {
     #[cfg(windows)]
     use std::os::windows::fs::symlink_file;
 
-    fn create_file_link() {
+    fn create_file_link() -> tempfile::TempDir {
         #[cfg(unix)]
-        if let Err(e) = symlink("abbbc", "test_data/links/link-f") {
+        let testdir = tempfile::TempDir::new().unwrap();
+        std::fs::copy("test_data/links/abbbc",testdir.path().join("abbbc"));
+        if let Err(e) = symlink("abbbc", testdir.path().join("link-f")) {
             assert!(
                 e.kind() == ErrorKind::AlreadyExists,
                 "Failed to create sym link: {e:?}"
             );
         }
+        return testdir;
         #[cfg(windows)]
         if let Err(e) = symlink_file("abbbc", "test_data/links/link-f") {
             assert!(
@@ -87,9 +90,9 @@ mod tests {
 
     /*#[test]
     fn matches_against_link_target() {
-        create_file_link();
+        let testdir = create_file_link();
 
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
+        let link_f = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-f");
         let matcher = LinkNameMatcher::new("ab?bc", false);
         let deps = FakeDependencies::new();
         assert!(matcher.matches(&link_f, &mut deps.new_matcher_io()));
@@ -97,9 +100,9 @@ mod tests {
 
     #[test]
     fn caseless_matches_against_link_target() {
-        create_file_link();
+        let testdir = create_file_link();
 
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
+        let link_f = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-f");
         let matcher = LinkNameMatcher::new("AbB?c", true);
         let deps = FakeDependencies::new();
         assert!(matcher.matches(&link_f, &mut deps.new_matcher_io()));
Index: rust-findutils-0.8.0/src/find/matchers/name.rs
===================================================================
--- rust-findutils-0.8.0.orig/src/find/matchers/name.rs
+++ rust-findutils-0.8.0/src/find/matchers/name.rs
@@ -49,14 +49,17 @@ mod tests {
     #[cfg(windows)]
     use std::os::windows::fs::symlink_file;
 
-    fn create_file_link() {
+    fn create_file_link() -> tempfile::TempDir {
         #[cfg(unix)]
-        if let Err(e) = symlink("abbbc", "test_data/links/link-f") {
+        let testdir = tempfile::TempDir::new().unwrap();
+        std::fs::copy("test_data/links/abbbc",testdir.path().join("abbbc"));
+        if let Err(e) = symlink("abbbc", testdir.path().join("link-f")) {
             assert!(
                 e.kind() == ErrorKind::AlreadyExists,
                 "Failed to create sym link: {e:?}"
             );
         }
+        return testdir;
         #[cfg(windows)]
         if let Err(e) = symlink_file("abbbc", "test_data/links/link-f") {
             assert!(
@@ -93,9 +96,9 @@ mod tests {
 
     /*#[test]
     fn matches_against_link_file_name() {
-        create_file_link();
+        let testdir = create_file_link();
 
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
+        let link_f = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-f");
         let matcher = NameMatcher::new("link?f", false);
         let deps = FakeDependencies::new();
         assert!(matcher.matches(&link_f, &mut deps.new_matcher_io()));
@@ -127,9 +130,9 @@ mod tests {
 
     /*#[test]
     fn caseless_matches_against_link_file_name() {
-        create_file_link();
+        let testdir = create_file_link();
 
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
+        let link_f = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-f");
         let matcher = NameMatcher::new("linK?f", true);
         let deps = FakeDependencies::new();
         assert!(matcher.matches(&link_f, &mut deps.new_matcher_io()));
Index: rust-findutils-0.8.0/src/find/matchers/printf.rs
===================================================================
--- rust-findutils-0.8.0.orig/src/find/matchers/printf.rs
+++ rust-findutils-0.8.0/src/find/matchers/printf.rs
@@ -925,33 +925,37 @@ mod tests {
 
     /*#[test]
     fn test_printf_symlinks() {
+        let testdir = tempfile::TempDir::new().unwrap();
+        std::fs::copy("test_data/links/abbbc",testdir.path().join("abbbc"));
+        std::fs::create_dir(testdir.path().join("subdir"));
+        std::fs::copy("test_data/links/subdir/test",testdir.path().join("subdir/test"));
         #[cfg(unix)]
         {
-            if let Err(e) = symlink("abbbc", "test_data/links/link-f") {
+            if let Err(e) = symlink("abbbc", testdir.path().join("link-f")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
                 );
             }
-            if let Err(e) = symlink("subdir", "test_data/links/link-d") {
+            if let Err(e) = symlink("subdir", testdir.path().join("link-d")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
                 );
             }
-            if let Err(e) = symlink("missing", "test_data/links/link-missing") {
+            if let Err(e) = symlink("missing", testdir.path().join("link-missing")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
                 );
             }
-            if let Err(e) = symlink("abbbc/x", "test_data/links/link-notdir") {
+            if let Err(e) = symlink("abbbc/x", testdir.path().join("link-notdir")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
                 );
             }
-            if let Err(e) = symlink("link-loop", "test_data/links/link-loop") {
+            if let Err(e) = symlink("link-loop", testdir.path().join("link-loop")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
@@ -991,12 +995,12 @@ mod tests {
         }
 
         let regular_file = get_dir_entry_for("test_data/simple", "abbbc");
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
-        let link_d = get_dir_entry_for("test_data/links", "link-d");
-        let link_missing = get_dir_entry_for("test_data/links", "link-missing");
-        let link_notdir = get_dir_entry_for("test_data/links", "link-notdir");
+        let link_f = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-f");
+        let link_d = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-d");
+        let link_missing = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-missing");
+        let link_notdir = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-notdir");
         #[cfg(unix)]
-        let link_loop = get_dir_entry_for("test_data/links", "link-loop");
+        let link_loop = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "link-loop");
 
         let deps = FakeDependencies::new();
 
Index: rust-findutils-0.8.0/src/find/matchers/type_matcher.rs
===================================================================
--- rust-findutils-0.8.0.orig/src/find/matchers/type_matcher.rs
+++ rust-findutils-0.8.0/src/find/matchers/type_matcher.rs
@@ -126,15 +126,21 @@ mod tests {
     // so we have to create links in test
     /*#[test]
     fn link_type_matcher() {
+        let testdir = tempfile::TempDir::new().unwrap();
+        let linksdir = testdir.path().join("links");
+        std::fs::create_dir(&linksdir);
+        std::fs::copy("test_data/links/abbbc",linksdir.join("abbbc"));
+        std::fs::create_dir(linksdir.join("subdir"));
+        std::fs::copy("test_data/links/subdir/test",linksdir.join("subdir/test"));
         #[cfg(unix)]
         {
-            if let Err(e) = symlink("abbbc", "test_data/links/link-f") {
+            if let Err(e) = symlink("abbbc", linksdir.join("link-f")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
                 );
             }
-            if let Err(e) = symlink("subdir", "test_data/links/link-d") {
+            if let Err(e) = symlink("subdir", linksdir.join("link-d")) {
                 assert!(
                     e.kind() == ErrorKind::AlreadyExists,
                     "Failed to create sym link: {e:?}"
@@ -159,10 +165,10 @@ mod tests {
             }
         };
 
-        let link_f = get_dir_entry_for("test_data/links", "link-f");
-        let link_d = get_dir_entry_for("test_data/links", "link-d");
-        let file = get_dir_entry_for("test_data/links", "abbbc");
-        let dir = get_dir_entry_for("test_data", "links");
+        let link_f = get_dir_entry_for(linksdir.as_os_str().to_str().unwrap(), "link-f");
+        let link_d = get_dir_entry_for(linksdir.as_os_str().to_str().unwrap(), "link-d");
+        let file = get_dir_entry_for(linksdir.as_os_str().to_str().unwrap(), "abbbc");
+        let dir = get_dir_entry_for(testdir.path().as_os_str().to_str().unwrap(), "links");
         let deps = FakeDependencies::new();
 
         let matcher = TypeMatcher::new("l").unwrap();
Index: rust-findutils-0.8.0/src/find/mod.rs
===================================================================
--- rust-findutils-0.8.0.orig/src/find/mod.rs
+++ rust-findutils-0.8.0/src/find/mod.rs
@@ -397,14 +397,17 @@ mod tests {
         }
     }
 
-    fn create_file_link() {
+    fn create_file_link() -> tempfile::TempDir {
         #[cfg(unix)]
-        if let Err(e) = symlink("abbbc", "test_data/links/link-f") {
+        let testdir = tempfile::TempDir::new().unwrap();
+        std::fs::copy("test_data/links/abbbc",testdir.path().join("abbbc"));
+        if let Err(e) = symlink("abbbc", testdir.path().join("link-f")) {
             assert!(
                 e.kind() == ErrorKind::AlreadyExists,
                 "Failed to create sym link: {e:?}"
             );
         }
+        return testdir;
         #[cfg(windows)]
         if let Err(e) = symlink_file("abbbc", "test_data/links/link-f") {
             assert!(
@@ -869,13 +872,13 @@ mod tests {
 
     /*#[test]
     fn find_name_links() {
-        create_file_link();
+        let testdir = create_file_link();
 
         let deps = FakeDependencies::new();
         let rc = find_main(
             &[
                 "find",
-                &fix_up_slashes("./test_data/links"),
+                &fix_up_slashes(testdir.path().to_str().unwrap()),
                 "-name",
                 "abbbc",
             ],
@@ -885,19 +888,19 @@ mod tests {
         assert_eq!(rc, 0);
         assert_eq!(
             deps.get_output_as_string(),
-            fix_up_slashes("./test_data/links/abbbc\n")
+            fix_up_slashes(&(testdir.path().to_str().unwrap().to_owned()+"/abbbc\n"))
         );
     }*/
 
     /*#[test]
     fn find_lname_links() {
-        create_file_link();
+        let testdir = create_file_link();
 
         let deps = FakeDependencies::new();
         let rc = find_main(
             &[
                 "find",
-                &fix_up_slashes("./test_data/links"),
+                &fix_up_slashes(testdir.path().to_str().unwrap()),
                 "-lname",
                 "abbbc",
                 "-sorted",
@@ -908,19 +911,19 @@ mod tests {
         assert_eq!(rc, 0);
         assert_eq!(
             deps.get_output_as_string(),
-            fix_up_slashes("./test_data/links/link-f\n")
+            fix_up_slashes(&(testdir.path().to_str().unwrap().to_owned()+"/link-f\n"))
         );
     }*/
 
     /*#[test]
     fn find_ilname_links() {
-        create_file_link();
+        let testdir = create_file_link();
 
         let deps = FakeDependencies::new();
         let rc = find_main(
             &[
                 "find",
-                &fix_up_slashes("./test_data/links"),
+                &fix_up_slashes(testdir.path().to_str().unwrap()),
                 "-ilname",
                 "abBbc",
             ],
@@ -930,7 +933,7 @@ mod tests {
         assert_eq!(rc, 0);
         assert_eq!(
             deps.get_output_as_string(),
-            fix_up_slashes("./test_data/links/link-f\n")
+            fix_up_slashes(&(testdir.path().to_str().unwrap().to_owned()+"/link-f\n"))
         );
     }*/
 
@@ -1510,20 +1513,21 @@ mod tests {
 
     #[test]
     fn find_fprintf() {
+        let testdir = tempfile::TempDir::new().unwrap();
         let deps = FakeDependencies::new();
         let rc = find_main(
             &[
                 "find",
                 "./test_data/simple",
                 "-fprintf",
-                "test_data/find_fprintf",
+                testdir.path().join("find_fprintf").as_os_str().to_str().unwrap(),
                 "%h %H %p %P",
             ],
             &deps,
         );
         assert_eq!(rc, 0);
 
-        let _ = fs::remove_file("test_data/find_fprintf");
+        let _ = fs::remove_file(testdir.path().join("find_fprintf"));
     }
 
     #[test]
Index: rust-findutils-0.8.0/tests/find_cmd_tests.rs
===================================================================
--- rust-findutils-0.8.0.orig/tests/find_cmd_tests.rs
+++ rust-findutils-0.8.0/tests/find_cmd_tests.rs
@@ -1138,14 +1138,14 @@ fn find_follow() {
 #[test]
 #[serial(working_dir)]
 fn find_fprintf() {
-    let _ = fs::remove_file("test_data/find_fprintf");
+    let testdir = tempfile::TempDir::new().unwrap();
 
     Command::cargo_bin("find")
         .expect("found binary")
         .args([
             "test_data/simple",
             "-fprintf",
-            "test_data/find_fprintf",
+            testdir.path().join("find_fprintf").as_os_str().to_str().unwrap(),
             "%h %H %p %P",
         ])
         .assert()
@@ -1154,12 +1154,12 @@ fn find_fprintf() {
         .stderr(predicate::str::is_empty());
 
     // read test_data/find_fprintf
-    let mut f = File::open("test_data/find_fprintf").unwrap();
+    let mut f = File::open(testdir.path().join("find_fprintf")).unwrap();
     let mut contents = String::new();
     f.read_to_string(&mut contents).unwrap();
     assert!(contents.contains("test_data/simple"));
 
-    let _ = fs::remove_file("test_data/find_fprintf");
+    let _ = fs::remove_file(testdir.path().join("find_fprintf"));
 }
 
 #[test]
