Skip to content

Commit

Permalink
Call repo.close() instead of manually collecting
Browse files Browse the repository at this point in the history
The code this replaces in the `commit` pytest fixture seems not to
be needed anymore, and could arguably be removed now with no
further related changes. But whether it is needed depends on
subtle and sometimes nondeterministic factors, and may also vary
across Python versions.

To be safe, this replaces it with a call to the Repo instance's
close method, which is in effect more robust than what was being
done before, as it calls clear_cache on the the Git object that the
Repo object uses, does a gitdb/smmap collection, and on Windows
calls gc.collect both before and after that collection.

This may happen immediately anyway if the Repo object is not
reachable from any cycle, since the reference count should go to
zero after each of the deprecation warning tests (the fixture's
lifetime is that of the test case), and Repo.close is called in
Repo.__del__. But this makes it happen immediately even if there is
a cycle.
  • Loading branch information
EliahKagan committed Mar 28, 2024
1 parent ca385a5 commit 8bbcb26
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions test/deprecation/test_various.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"""Tests of assorted deprecation warnings with no extra subtleties to check."""

import contextlib
import gc
import warnings

import pytest
Expand All @@ -31,8 +30,7 @@ def commit(tmp_path):
repo = Repo.init(tmp_path)
repo.index.add(["a.txt"])
yield repo.index.commit("Initial commit")
del repo
gc.collect()
repo.close()


@pytest.fixture
Expand Down

0 comments on commit 8bbcb26

Please sign in to comment.