Repository: pypa/setuptools

Issue:
Deduplicate testing dependencies by referencing `[testing-integration]`
<!-- First time contributors: Take a moment to review https://setuptools.pypa.io/en/latest/development/developer-guide.html! -->
<!-- Remove sections if not applicable -->

## Summary of changes

This was my original idea, but in https://github.com/pypa/setuptools/pull/4257#discussion_r1514754970, @abravalheri mentioned that:
> [...] I think we just remove the `testing-integration` and use `testing` everywhere...
> 
> Although it might add a bit of overhead for the integration tests, it will simplify and streamline the setup... This way we reduce the divergence with `skeleton`. The additional overhead in the integration tests should not be too much, and the integration tests just run before the releases anyway.

But I'm still opening this PR as an option / for comparison.

Accepting this closes #4282

### Pull Request Checklist
- [x] Changes have tests (these are test changes)
- [x] News fragment added in [`newsfragments/`]. (no user facing changes)
  _(See [documentation][PR docs] for details)_


[`newsfragments/`]: https://github.com/pypa/setuptools/tree/master/newsfragments
[PR docs]:
https://setuptools.pypa.io/en/latest/development/developer-guide.html#making-a-pull-request



Discussion:

Resolving patch:
diff --git a/conftest.py b/conftest.py
--- a/conftest.py
+++ b/conftest.py
@@ -24,6 +24,7 @@ def pytest_addoption(parser):
 def pytest_configure(config):
     config.addinivalue_line("markers", "integration: integration tests")
     config.addinivalue_line("markers", "uses_network: tests may try to download files")
+    _IntegrationTestSpeedups.disable_plugins_already_run(config)
 
 
 collect_ignore = [
@@ -47,9 +48,25 @@ def pytest_configure(config):
 
 @pytest.fixture(autouse=True)
 def _skip_integration(request):
-    running_integration_tests = request.config.getoption("--integration")
-    is_integration_test = request.node.get_closest_marker("integration")
-    if running_integration_tests and not is_integration_test:
-        pytest.skip("running integration tests only")
-    if not running_integration_tests and is_integration_test:
-        pytest.skip("skipping integration tests")
+    _IntegrationTestSpeedups.conditional_skip(request)
+
+
+class _IntegrationTestSpeedups:
+    """Speed-up integration tests by only running what does not run in other tests."""
+
+    RUNS_ON_NORMAL_TESTS = ("checkdocks", "cov", "mypy", "perf", "ruff")
+
+    @classmethod
+    def disable_plugins_already_run(cls, config):
+        if config.getoption("--integration"):
+            for plugin in cls.RUNS_ON_NORMAL_TESTS:  # no need to run again
+                config.pluginmanager.set_blocked(plugin)
+
+    @staticmethod
+    def conditional_skip(request):
+        running_integration_tests = request.config.getoption("--integration")
+        is_integration_test = request.node.get_closest_marker("integration")
+        if running_integration_tests and not is_integration_test:
+            pytest.skip("running integration tests only")
+        if not running_integration_tests and is_integration_test:
+            pytest.skip("skipping integration tests")


Test patch: