@@ -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
23962460class 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