diff --git a/conan/cli/printers/graph.py b/conan/cli/printers/graph.py index 2c4f3493c22..e24b63d2edf 100644 --- a/conan/cli/printers/graph.py +++ b/conan/cli/printers/graph.py @@ -78,6 +78,8 @@ def _format_resolved(title, reqs_to_print): output.info("Overrides", Color.BRIGHT_YELLOW) for req, override_info in overrides.serialize().items(): output.info(" {}: {}".format(req, override_info), Color.BRIGHT_CYAN) + if override_info == [None]: + output.warning("Unused override") if deprecated: output.info("Deprecated", Color.BRIGHT_YELLOW) diff --git a/conans/client/graph/graph.py b/conans/client/graph/graph.py index b5037c271f5..199df28e8d3 100644 --- a/conans/client/graph/graph.py +++ b/conans/client/graph/graph.py @@ -313,19 +313,17 @@ def create(nodes): overrides = {} for n in nodes: for r in n.conanfile.requires.values(): - if r.override and not r.overriden_ref: # overrides are not real graph edges - continue - if r.overriden_ref: - overrides.setdefault(r.overriden_ref, set()).add(r.override_ref) - else: - overrides.setdefault(r.ref, set()).add(None) + if r.override: + if r.overriden_ref: + overrides.setdefault(r.overriden_ref, set()).add(r.override_ref) + else: + overrides.setdefault(r.ref, set()).add(None) # reduce, eliminate those overrides definitions that only override to None, that is, not # really an override result = Overrides() for require, override_info in overrides.items(): - if len(override_info) != 1 or None not in override_info: - result._overrides[require] = override_info + result._overrides[require] = override_info return result def get(self, require): diff --git a/test/integration/graph/require_override_test.py b/test/integration/graph/require_override_test.py index 3dc677de3c7..d580c9fc87f 100644 --- a/test/integration/graph/require_override_test.py +++ b/test/integration/graph/require_override_test.py @@ -40,3 +40,8 @@ def test_can_override_even_versions_with_build_metadata(self): c.assert_listed_require({"lib/1.0+xyz": "Cache", "pkg/1.0": "Cache"}) + def test_discarded_override(self): + tc = TestClient(light=True) + tc.save({"conanfile.py": GenConanfile("lib").with_requirement("pkg/1.0", override=True)}) + tc.run("graph info .") + assert "Unused override" in tc.out