Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit487a4fd

Browse files
committed
Add a test for git.index.util.TemporaryFileSwap
This is a general test for TemporaryFileSwap, but by beingparametrized by the type of file_path, it reveals a regressionintroduced in9e86053 (#1770). TemporaryFileSwap still works whenfile_path is a string, but is now broken when it is a Path. Thatworked before, and the type annotations document that it shouldbe able to work. This is at least a bug because TemporaryFileSwapis public. (I am unsure whether, in practice, GitPython itself usesit in a way that sometimes passes a Path object as file_path. Butcode that uses GitPython may call it directly and pass Path.)
1 parent4023f28 commit487a4fd

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

‎test/test_index.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
)
3535
fromgit.index.funimporthook_path
3636
fromgit.index.typimportBaseIndexEntry,IndexEntry
37+
fromgit.index.utilimportTemporaryFileSwap
3738
fromgit.objectsimportBlob
38-
fromtest.libimportTestBase,fixture,fixture_path,with_rw_directory,with_rw_repo
3939
fromgit.utilimportActor,hex_to_bin,rmtree
4040
fromgitdb.baseimportIStream
41+
fromtest.libimportTestBase,fixture,fixture_path,with_rw_directory,with_rw_repo
4142

4243
HOOKS_SHEBANG="#!/usr/bin/env sh\n"
4344

@@ -1087,3 +1088,25 @@ def test_index_add_pathlike(self, rw_repo):
10871088
file.touch()
10881089

10891090
rw_repo.index.add(file)
1091+
1092+
1093+
classTestIndexUtils:
1094+
@pytest.mark.parametrize("file_path_type", [str,Path])
1095+
deftest_temporary_file_swap(self,tmp_path,file_path_type):
1096+
file_path=tmp_path/"foo"
1097+
file_path.write_bytes(b"some data")
1098+
1099+
withTemporaryFileSwap(file_path_type(file_path))asctx:
1100+
assertPath(ctx.file_path)==file_path
1101+
assertnotfile_path.exists()
1102+
1103+
# Recreate it with new data, so we can observe that they're really separate.
1104+
file_path.write_bytes(b"other data")
1105+
1106+
temp_file_path=Path(ctx.tmp_file_path)
1107+
asserttemp_file_path.parent==file_path.parent
1108+
asserttemp_file_path.name.startswith(file_path.name)
1109+
asserttemp_file_path.read_bytes()==b"some data"
1110+
1111+
assertnottemp_file_path.exists()
1112+
assertfile_path.read_bytes()==b"some data"# Not b"other data".

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp