diff --git a/test/test_tree.py b/test/test_tree.py index b44392e15..0c06b950c 100644 --- a/test/test_tree.py +++ b/test/test_tree.py @@ -7,11 +7,10 @@ import os.path as osp from pathlib import Path import subprocess -import tempfile from git.objects import Tree, Blob from git.util import cwd -from test.lib import TestBase +from test.lib import TestBase, with_rw_directory class TestTree(TestBase): @@ -43,36 +42,35 @@ def test_serializable(self): testtree._deserialize(stream) # END for each item in tree - @staticmethod - def _get_git_ordered_files(): + @with_rw_directory + def _get_git_ordered_files(self, rw_dir): """Get files as git orders them, to compare in test_tree_modifier_ordering.""" - with tempfile.TemporaryDirectory() as tdir: - # Create directory contents. - Path(tdir, "file").mkdir() - for filename in ( - "bin", - "bin.d", - "file.to", - "file.toml", - "file.toml.bin", - "file0", - ): - Path(tdir, filename).touch() - Path(tdir, "file", "a").touch() - - with cwd(tdir): - # Prepare the repository. - subprocess.run(["git", "init", "-q"], check=True) - subprocess.run(["git", "add", "."], check=True) - subprocess.run(["git", "commit", "-m", "c1"], check=True) - - # 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] + # 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) + subprocess.run(["git", "add", "."], check=True) + subprocess.run(["git", "commit", "-m", "c1"], check=True) + + # 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."""