From 9fb9e4369e56ea5a25735484eb9279343c8090da Mon Sep 17 00:00:00 2001 From: Ali Zulfiqar Date: Sat, 5 Sep 2026 21:59:43 +0500 Subject: [PATCH 1/2] Return warnings for duplicate and empty license aliases Signed-off-by: Ali Zulfiqar --- src/license_expression/__init__.py | 4 ++-- tests/test_license_expression.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/license_expression/__init__.py b/src/license_expression/__init__.py index 13170b4..ca9c159 100644 --- a/src/license_expression/__init__.py +++ b/src/license_expression/__init__.py @@ -1764,8 +1764,8 @@ def validate_symbols(symbols, validate_keys=False): errors.append(f"Invalid key: a key cannot be an expression keyword: {ikw}.") warnings = [] - for dupe_alias in sorted(dupe_aliases): - errors.append(f"Duplicated or empty aliases ignored for license key: {dupe_alias!r}.") + for key in sorted(warning_dupe_aliases): + warnings.append(f"Duplicated or empty aliases ignored for license key: {key!r}.") return warnings, errors diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index 7af4175..16353d9 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -2640,3 +2640,29 @@ def test_combine_expressions_with_duplicated_elements(self): def test_combine_expressions_with_or_relationship(self): assert str(combine_expressions(["mit", "apache-2.0"], "OR")) == "mit OR apache-2.0" + + +def test_validate_symbols_reports_duplicate_and_empty_alias_warnings(): + symbols = [ + LicenseSymbol("mit", aliases=["MIT license", "mit license"]), + LicenseSymbol("apache-2.0", aliases=[""]), + ] + warnings, errors = validate_symbols(symbols) + assert errors == [] + assert warnings == [ + "Duplicated or empty aliases ignored for license key: 'apache-2.0'.", + "Duplicated or empty aliases ignored for license key: 'mit'.", + ] + + +def test_validate_symbols_keeps_conflicting_aliases_as_errors(): + warnings, errors = validate_symbols( + [ + LicenseSymbol("mit", aliases=["shared"]), + LicenseSymbol("apache-2.0", aliases=["shared"]), + ] + ) + assert warnings == [] + assert errors == [ + "Invalid duplicated alias pointing to multiple keys: " "shared point to keys: 'apache-2.0'." + ] From e042662d5b5581cd6beaadb9164406b7c031c27a Mon Sep 17 00:00:00 2001 From: Ali Zulfiqar Date: Sat, 5 Sep 2026 22:04:12 +0500 Subject: [PATCH 2/2] Match the test formatting to Ruff Signed-off-by: Ali Zulfiqar --- tests/test_license_expression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index 16353d9..dc4f1db 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -2664,5 +2664,5 @@ def test_validate_symbols_keeps_conflicting_aliases_as_errors(): ) assert warnings == [] assert errors == [ - "Invalid duplicated alias pointing to multiple keys: " "shared point to keys: 'apache-2.0'." + "Invalid duplicated alias pointing to multiple keys: shared point to keys: 'apache-2.0'." ]