@@ -1218,14 +1218,29 @@ def test_index_add_non_normalized_path(self, rw_repo):
12181218
12191219 rw_repo.index.add(non_normalized_path)
12201220
1221+ def test_index_file_v3(self):
1222+ index = IndexFile(self.rorepo, fixture_path("index_extended_flags"))
1223+ assert index.entries
1224+ assert index.version == 3
1225+ assert len(index.entries) == 4
1226+ assert index.entries[('init.t', 0)].skip_worktree
1227+
1228+ # Write the data - it must match the original.
1229+ tmpfile = tempfile.mktemp()
1230+ index.write(tmpfile)
1231+ assert Path(tmpfile).read_bytes() == Path(fixture_path("index_extended_flags")).read_bytes()
1232+ os.remove(tmpfile)
1233+
12211234 @with_rw_directory
1222- def test_index_version_v3 (self, tmp_dir):
1235+ def test_index_file_v3_with_git_command (self, tmp_dir):
12231236 tmp_dir = Path(tmp_dir)
12241237 with cwd(tmp_dir):
1225- subprocess.run(["git", "init", "-q"], check=True)
1238+ git = Git(tmp_dir)
1239+ git.init()
1240+
12261241 file = tmp_dir / "file.txt"
12271242 file.write_text("hello")
1228- subprocess.run(["git", " add", "-N", " file.txt"], check=True)
1243+ git.add("--intent-to- add", "file.txt") # intent-to-add sets extended flag
12291244
12301245 repo = Repo(tmp_dir)
12311246
@@ -1239,9 +1254,10 @@ def test_index_version_v3(self, tmp_dir):
12391254 repo.index.add(["file2.txt"])
12401255 repo.index.write()
12411256
1242- status_str = subprocess.check_output(["git", "status", "--porcelain"], text=True)
1243- assert " A file.txt\n" in status_str
1244- assert "A file2.txt\n" in status_str
1257+ status_str = git.status(porcelain=True)
1258+ status_lines = status_str.splitlines()
1259+ assert " A file.txt" in status_lines
1260+ assert "A file2.txt" in status_lines
12451261
12461262
12471263class TestIndexUtils:
0 commit comments