From 4ff83781c298cdf2b8976eba9949af65239ee82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20Meadows-J=C3=B6nsson?= Date: Wed, 13 May 2026 00:29:54 +0200 Subject: [PATCH] Accept LicenseRef license identifiers --- src/hex_licenses.erl | 26 ++++++++++++++++++++++++++ test/hex_licenses_SUITE.erl | 10 +++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/hex_licenses.erl b/src/hex_licenses.erl index 8ae50ec1..c8e0a79f 100644 --- a/src/hex_licenses.erl +++ b/src/hex_licenses.erl @@ -665,4 +665,30 @@ valid(<<"xlock">>) -> true; valid(<<"xpp">>) -> true; valid(<<"xzoom">>) -> true; valid(<<"zlib-acknowledgement">>) -> true; +valid(<<"LicenseRef-", IdString/binary>>) -> valid_license_ref_idstring(IdString); valid(_) -> false. + +valid_license_ref_idstring(<<>>) -> + false; +valid_license_ref_idstring(IdString) -> + valid_license_ref_idstring(IdString, true). + +valid_license_ref_idstring(<<>>, Valid) -> + Valid; +valid_license_ref_idstring(_, false) -> + false; +valid_license_ref_idstring(<>, true) -> + valid_license_ref_idstring(Rest, valid_license_ref_char(Char)). + +valid_license_ref_char(Char) when Char >= $A, Char =< $Z -> + true; +valid_license_ref_char(Char) when Char >= $a, Char =< $z -> + true; +valid_license_ref_char(Char) when Char >= $0, Char =< $9 -> + true; +valid_license_ref_char($-) -> + true; +valid_license_ref_char($.) -> + true; +valid_license_ref_char(_) -> + false. diff --git a/test/hex_licenses_SUITE.erl b/test/hex_licenses_SUITE.erl index 0bd42c64..714d2a55 100644 --- a/test/hex_licenses_SUITE.erl +++ b/test/hex_licenses_SUITE.erl @@ -7,12 +7,20 @@ -include_lib("common_test/include/ct.hrl"). all() -> - [license_test, invalid_license_test]. + [license_test, license_ref_test, invalid_license_test]. license_test(_Config) -> true = hex_licenses:valid(<<"MIT">>), ok. +license_ref_test(_Config) -> + true = hex_licenses:valid(<<"LicenseRef-Journey">>), + true = hex_licenses:valid(<<"LicenseRef-acme.1-2">>), + false = hex_licenses:valid(<<"LicenseRef-">>), + false = hex_licenses:valid(<<"LicenseRef-Journey License">>), + false = hex_licenses:valid(<<"LicenseRef-Journey_License">>), + ok. + invalid_license_test(_Config) -> false = hex_licenses:valid(<<"MICROSOFT">>), ok.