diff --git a/src/license_expression/__init__.py b/src/license_expression/__init__.py index dc1ab31..21d44ef 100644 --- a/src/license_expression/__init__.py +++ b/src/license_expression/__init__.py @@ -785,10 +785,14 @@ def validate(self, expression, strict=True, **kwargs): # Check `expression` type and syntax try: parsed_expression = self.parse(expression, strict=strict) - except ExpressionError as e: + except ExpressionParseError as e: expression_info.errors.append(str(e)) expression_info.invalid_symbols.append(e.token_string) return expression_info + except ExpressionError as e: + expression_info.errors.append(str(e)) + expression_info.invalid_symbols.append(str(expression)) + return expression_info # Check `expression` keys (validate) try: diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index 193fafd..a6a4306 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -2422,6 +2422,15 @@ def test_validation_invalid_license_key(self): assert result.errors == ["Unknown license key(s): cool-license"] assert result.invalid_symbols == ["cool-license"] + def test_validation_invalid_license_key_chara(self): + result = self.licensing.validate("cool,license") + assert result.original_expression == "cool,license" + assert not result.normalized_expression + assert result.errors == [ + "Invalid license key: the valid characters are: letters and numbers, underscore, dot, colon or hyphen signs and spaces: 'cool,license'" + ] + assert result.invalid_symbols == ["cool,license"] + def test_validate_exception(self): result = self.licensing.validate("GPL-2.0-or-later WITH WxWindows-exception-3.1") assert result.original_expression == "GPL-2.0-or-later WITH WxWindows-exception-3.1"