diff --git a/AUTHORS.rst b/AUTHORS.rst index 9a8224dc7da..4b8f48fcb1e 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -36,6 +36,7 @@ The following organizations or individuals have contributed to ScanCode: - Hanif Ali @hanif-ali - Horie Issei @is2ei - James Ward @jamesward +- Jatin Pandey @satiricalguru - Jelmer Vernooij @jelmer - Jens Keim @pepper-jk - Kunal Chhabra @kunalchhabra37 diff --git a/CHANGELOG.rst b/CHANGELOG.rst index abc3ae41ad2..b22120495bd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,9 @@ Changelog Next release -------------- +- Recognize GNU GPL v2 release notices without reporting unrelated composite licenses. + https://github.com/aboutcode-org/scancode-toolkit/issues/4942 + - Fix the optional ``licenses`` extra dependency typo to install ``licensedcode-data``. https://github.com/aboutcode-org/scancode-toolkit/pull/5056 diff --git a/src/licensedcode/data/rules/gpl-2.0_1487.RULE b/src/licensedcode/data/rules/gpl-2.0_1487.RULE new file mode 100644 index 00000000000..84c1b527b9d --- /dev/null +++ b/src/licensedcode/data/rules/gpl-2.0_1487.RULE @@ -0,0 +1,8 @@ +--- +license_expression: gpl-2.0 +is_license_notice: yes +relevance: 100 +notes: Rule found in test.cpp and tmp.cpp (#4942) +--- + +released under GNU GPL v2 only license diff --git a/src/licensedcode/data/rules/gpl-2.0_1488.RULE b/src/licensedcode/data/rules/gpl-2.0_1488.RULE new file mode 100644 index 00000000000..5ff7b16a749 --- /dev/null +++ b/src/licensedcode/data/rules/gpl-2.0_1488.RULE @@ -0,0 +1,8 @@ +--- +license_expression: gpl-2.0 +is_license_notice: yes +relevance: 100 +notes: Rule found in test.cpp and tmp.cpp (#4942) +--- + +released under GNU GPL v2 license diff --git a/tests/licensedcode/test_match_hash.py b/tests/licensedcode/test_match_hash.py index a56fa2e8e70..3e3c94bd7b5 100644 --- a/tests/licensedcode/test_match_hash.py +++ b/tests/licensedcode/test_match_hash.py @@ -50,3 +50,22 @@ def test_match_hash_returns_correct_offset(self): assert match.rule == rules[0] assert match.qspan == Span(0, 119) assert match.ispan == Span(0, 119) + + def test_issue_4942_gpl_2_0_release_notices(self): + # Reproduces issue #4942 + from licensedcode.cache import get_index + idx = get_index() + + queries = [ + "* released under GNU GPL v2 only licence", + "* released under GNU GPL v2 licence", + "* released under GNU GPL v2 only license", + "* released under GNU GPL v2 license", + ] + for q in queries: + matches = idx.match(query_string=q) + assert len(matches) == 1, f"Failed on {q}: {matches}" + m = matches[0] + assert m.rule.license_expression == "gpl-2.0", f"Wrong license on {q}: {m.rule.license_expression}" + assert m.matcher == match_hash.MATCH_HASH, f"Not a hash match on {q}: {m.matcher}" + assert m.coverage() == 100