diff --git a/src/cluecode/plugin_filter_clues.py b/src/cluecode/plugin_filter_clues.py index 5336c221edb..a5ae40da8e6 100644 --- a/src/cluecode/plugin_filter_clues.py +++ b/src/cluecode/plugin_filter_clues.py @@ -102,11 +102,16 @@ def filter_ignorable_resource_clues(resource, rules_by_id): detections = Detections.from_resource(resource) filtered = filter_ignorable_clues(detections, rules_by_id) if filtered: - resource.emails = filtered.emails - resource.urls = filtered.urls - resource.authors = filtered.authors - resource.holders = filtered.holders - resource.copyrights = filtered.copyrights + if hasattr(resource, 'emails'): + resource.emails = filtered.emails + if hasattr(resource, 'urls'): + resource.urls = filtered.urls + if hasattr(resource, 'authors'): + resource.authors = filtered.authors + if hasattr(resource, 'holders'): + resource.holders = filtered.holders + if hasattr(resource, 'copyrights'): + resource.copyrights = filtered.copyrights return resource @@ -220,11 +225,8 @@ def filter_ignorable_clues(detections, rules_by_id): no_detected_ignorables = not detections.copyrights and not detections.authors - if detections.licenses: - ignorables = collect_ignorables(detections.licenses, rules_by_id) - else: - ignorables = None - + ignorables = collect_ignorables(detections.licenses, rules_by_id) + no_ignorables = not detections.licenses or is_empty(ignorables) if TRACE: @@ -323,6 +325,14 @@ def collect_ignorables(license_matches, rules_by_id): holders = set() copyrights = set() + if not license_matches: + return Ignorables( + copyrights=frozenset(copyrights), + holders=frozenset(holders), + authors=frozenset(authors), + urls=frozenset(urls), + emails=frozenset(emails), + ) # build tuple of (set of lines number, set of ignorbale values) for lic in license_matches: diff --git a/tests/scancode/test_cli.py b/tests/scancode/test_cli.py index 3040c312c51..02a23dc0d92 100644 --- a/tests/scancode/test_cli.py +++ b/tests/scancode/test_cli.py @@ -109,7 +109,6 @@ def test_verbose_option_with_copyrights(monkeypatch): assert len(open(result_file).read()) > 10 -@pytest.mark.xfail(reason='Bug is not fixed yet') def test_scanned_resource_no_attribute_emails(): test_dir = test_env.get_test_loc('attribute_error_data/apache-1.1.txt') result_file = test_env.get_temp_file('bb.json')