diff --git a/test/lib/helper.py b/test/lib/helper.py
index e6784e51c..f951a6a12 100644
--- a/test/lib/helper.py
+++ b/test/lib/helper.py
@@ -97,7 +97,8 @@ def wrapper(self, *args, **kwargs):
             return func(self, path, *args, **kwargs)
         except Exception:
             _logger.info(
-                "Test %s.%s failed, output is at %r\n",
+                "%s %s.%s failed, output is at %r\n",
+                "Test" if func.__name__.startswith("test_") else "Helper",
                 type(self).__name__,
                 func.__name__,
                 path,
diff --git a/test/test_tree.py b/test/test_tree.py
index 695cb803e..0c06b950c 100644
--- a/test/test_tree.py
+++ b/test/test_tree.py
@@ -4,14 +4,14 @@
 # 3-Clause BSD License: https://opensource.org/license/bsd-3-clause/
 
 from io import BytesIO
-
-from git.objects import Tree, Blob
-from test.lib import TestBase
-
-import os
 import os.path as osp
+from pathlib import Path
 import subprocess
 
+from git.objects import Tree, Blob
+from git.util import cwd
+from test.lib import TestBase, with_rw_directory
+
 
 class TestTree(TestBase):
     def test_serializable(self):
@@ -42,28 +42,39 @@ def test_serializable(self):
             testtree._deserialize(stream)
         # END for each item in tree
 
-    def test_tree_modifier_ordering(self):
-        def setup_git_repository_and_get_ordered_files():
-            os.mkdir("tmp")
-            os.chdir("tmp")
+    @with_rw_directory
+    def _get_git_ordered_files(self, rw_dir):
+        """Get files as git orders them, to compare in test_tree_modifier_ordering."""
+        # Create directory contents.
+        Path(rw_dir, "file").mkdir()
+        for filename in (
+            "bin",
+            "bin.d",
+            "file.to",
+            "file.toml",
+            "file.toml.bin",
+            "file0",
+        ):
+            Path(rw_dir, filename).touch()
+        Path(rw_dir, "file", "a").touch()
+
+        with cwd(rw_dir):
+            # Prepare the repository.
             subprocess.run(["git", "init", "-q"], check=True)
-            os.mkdir("file")
-            for filename in [
-                "bin",
-                "bin.d",
-                "file.to",
-                "file.toml",
-                "file.toml.bin",
-                "file0",
-                "file/a",
-            ]:
-                open(filename, "a").close()
-
             subprocess.run(["git", "add", "."], check=True)
             subprocess.run(["git", "commit", "-m", "c1"], check=True)
-            tree_hash = subprocess.check_output(["git", "rev-parse", "HEAD^{tree}"]).decode().strip()
-            cat_file_output = subprocess.check_output(["git", "cat-file", "-p", tree_hash]).decode()
-            return [line.split()[-1] for line in cat_file_output.split("\n") if line]
+
+            # Get git output from which an ordered file list can be parsed.
+            rev_parse_command = ["git", "rev-parse", "HEAD^{tree}"]
+            tree_hash = subprocess.check_output(rev_parse_command).decode().strip()
+            cat_file_command = ["git", "cat-file", "-p", tree_hash]
+            cat_file_output = subprocess.check_output(cat_file_command).decode()
+
+        return [line.split()[-1] for line in cat_file_output.split("\n") if line]
+
+    def test_tree_modifier_ordering(self):
+        """TreeModifier.set_done() sorts files in the same order git does."""
+        git_file_names_in_order = self._get_git_ordered_files()
 
         hexsha = "6c1faef799095f3990e9970bc2cb10aa0221cf9c"
         roottree = self.rorepo.tree(hexsha)
@@ -92,9 +103,6 @@ def names_in_mod_cache():
             here = file_names_in_order()
             return [e for e in a if e in here]
 
-        git_file_names_in_order = setup_git_repository_and_get_ordered_files()
-        os.chdir("..")
-
         mod.set_done()
         assert names_in_mod_cache() == git_file_names_in_order, "set_done() performs git-sorting"