Skip to content

Commit ff97e29

Browse files
Add tests for Ruff dev deps not removed when using pre-commit (#1464)
* Initial plan * Add tests verifying Ruff dev deps are not removed when using pre-commit (#1126) Co-authored-by: nathanjmcdougall <18602289+nathanjmcdougall@users.noreply.github.com> Agent-Logs-Url: https://github.com/usethis-python/usethis-python/sessions/9b1d5f0b-61a3-46d4-bacf-a1ae0dfc4b50 * Apply formatter fixes to test file Co-authored-by: nathanjmcdougall <18602289+nathanjmcdougall@users.noreply.github.com> Agent-Logs-Url: https://github.com/usethis-python/usethis-python/sessions/9b1d5f0b-61a3-46d4-bacf-a1ae0dfc4b50 --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: nathanjmcdougall <18602289+nathanjmcdougall@users.noreply.github.com>
1 parent 170e8d3 commit ff97e29

1 file changed

Lines changed: 74 additions & 4 deletions

File tree

tests/usethis/_core/test_core_tool.py

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,6 +2074,24 @@ def test_codespell_used(self, uv_init_repo_dir: Path):
20742074
dev_deps = get_deps_from_group("dev")
20752075
assert any(dep.name == "codespell" for dep in dev_deps)
20762076

2077+
@pytest.mark.usefixtures("_vary_network_conn")
2078+
def test_ruff_used(self, uv_init_repo_dir: Path):
2079+
with change_cwd(uv_init_repo_dir), files_manager():
2080+
# Arrange
2081+
use_ruff()
2082+
2083+
# Act
2084+
use_pre_commit()
2085+
2086+
# Assert
2087+
hook_names = get_hook_ids()
2088+
assert "ruff-check" in hook_names
2089+
assert "ruff-format" in hook_names
2090+
2091+
# Issue #1126: Deps should remain even when using pre-commit
2092+
dev_deps = get_deps_from_group("dev")
2093+
assert any(dep.name == "ruff" for dep in dev_deps)
2094+
20772095
class TestRemove:
20782096
@pytest.mark.usefixtures("_vary_network_conn")
20792097
def test_config_file(self, uv_init_repo_dir: Path):
@@ -2392,6 +2410,52 @@ def test_deps_not_added_when_migrating_from_pre_commit(self, uv_init_dir: Path):
23922410
assert len(codespell_deps_after) == 1
23932411
assert codespell_deps_after == codespell_deps_before
23942412

2413+
@pytest.mark.usefixtures("_vary_network_conn")
2414+
def test_ruff_deps_not_removed_when_migrating_to_pre_commit(
2415+
self, uv_init_dir: Path
2416+
):
2417+
"""Test that Ruff deps are NOT removed when migrating to pre-commit."""
2418+
with change_cwd(uv_init_dir), files_manager():
2419+
# Arrange - Add Ruff first
2420+
use_ruff()
2421+
2422+
# Verify dep is present before migration
2423+
dev_deps_before = get_deps_from_group("dev")
2424+
assert any(dep.name == "ruff" for dep in dev_deps_before)
2425+
2426+
# Act - Add pre-commit (which triggers migration)
2427+
use_pre_commit()
2428+
2429+
# Assert - Dep should STILL be present after migration (issue #1126)
2430+
dev_deps_after = get_deps_from_group("dev")
2431+
assert any(dep.name == "ruff" for dep in dev_deps_after)
2432+
2433+
@pytest.mark.usefixtures("_vary_network_conn")
2434+
def test_ruff_deps_not_added_when_migrating_from_pre_commit(
2435+
self, uv_init_dir: Path
2436+
):
2437+
"""Test that Ruff deps are NOT re-added when migrating from pre-commit."""
2438+
with change_cwd(uv_init_dir), files_manager():
2439+
# Arrange - Add pre-commit first, then Ruff
2440+
use_pre_commit()
2441+
use_ruff()
2442+
2443+
# Verify dep is present before removal
2444+
dev_deps_before = get_deps_from_group("dev")
2445+
ruff_deps_before = [
2446+
dep for dep in dev_deps_before if dep.name == "ruff"
2447+
]
2448+
assert len(ruff_deps_before) == 1
2449+
2450+
# Act - Remove pre-commit (which triggers migration)
2451+
use_pre_commit(remove=True)
2452+
2453+
# Assert - Dep should still be present exactly once (not duplicated)
2454+
dev_deps_after = get_deps_from_group("dev")
2455+
ruff_deps_after = [dep for dep in dev_deps_after if dep.name == "ruff"]
2456+
assert len(ruff_deps_after) == 1
2457+
assert ruff_deps_after == ruff_deps_before
2458+
23952459

23962460
class TestPyprojectFmt:
23972461
class TestAdd:
@@ -3819,9 +3883,12 @@ def test_use_first(self, uv_init_repo_dir: Path):
38193883

38203884
# Assert
38213885
hook_names = get_hook_ids()
3886+
assert "ruff-format" in hook_names
3887+
assert "ruff-check" in hook_names
38223888

3823-
assert "ruff-format" in hook_names
3824-
assert "ruff-check" in hook_names
3889+
# Issue #1126: Deps should remain even when using pre-commit
3890+
dev_deps = get_deps_from_group("dev")
3891+
assert any(dep.name == "ruff" for dep in dev_deps)
38253892

38263893
@pytest.mark.usefixtures("_vary_network_conn")
38273894
def test_use_after(self, uv_init_repo_dir: Path):
@@ -3834,9 +3901,12 @@ def test_use_after(self, uv_init_repo_dir: Path):
38343901

38353902
# Assert
38363903
hook_names = get_hook_ids()
3904+
assert "ruff-format" in hook_names
3905+
assert "ruff-check" in hook_names
38373906

3838-
assert "ruff-format" in hook_names
3839-
assert "ruff-check" in hook_names
3907+
# Issue #1126: Deps should be added even when pre-commit is used
3908+
dev_deps = get_deps_from_group("dev")
3909+
assert any(dep.name == "ruff" for dep in dev_deps)
38403910

38413911
@pytest.mark.usefixtures("_vary_network_conn")
38423912
def test_remove(

0 commit comments

Comments
 (0)