Changeset View
Changeset View
Standalone View
Standalone View
swh/scanner/tests/test_scanner.py
# Copyright (C) 2020 The Software Heritage developers | # Copyright (C) 2020 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import json | import json | ||||
from flask import url_for | from flask import url_for | ||||
import pytest | import pytest | ||||
from swh.scanner.exceptions import APIError, InvalidDirectoryPath | from swh.model.exceptions import InvalidDirectoryPath | ||||
from swh.scanner.exceptions import APIError | |||||
from swh.scanner.model import Tree | from swh.scanner.model import Tree | ||||
from swh.scanner.scanner import extract_regex_objs, get_subpaths, run, swhids_discovery | from swh.scanner.scanner import extract_regex_objs, get_subpaths, run, swhids_discovery | ||||
from .data import correct_api_response, present_swhids, to_exclude_swhid | from .data import correct_api_response, present_swhids, to_exclude_swhid | ||||
aio_url = "http://example.org/api/known/" | aio_url = "http://example.org/api/known/" | ||||
def test_extract_regex_objs(temp_folder): | def test_extract_regex_objs(temp_folder): | ||||
root_path = temp_folder["root"] | root_path = bytes(temp_folder["root"]) | ||||
patterns = (bytes(temp_folder["subdir"]), b"/none") | |||||
patterns = (str(temp_folder["subdir"]), "/none") | |||||
sre_patterns = [reg_obj for reg_obj in extract_regex_objs(root_path, patterns)] | sre_patterns = [reg_obj for reg_obj in extract_regex_objs(root_path, patterns)] | ||||
assert len(sre_patterns) == 2 | assert len(sre_patterns) == 2 | ||||
patterns = (*patterns, "/tmp") | patterns = (*patterns, b"/tmp") | ||||
with pytest.raises(InvalidDirectoryPath): | with pytest.raises(InvalidDirectoryPath): | ||||
sre_patterns = [reg_obj for reg_obj in extract_regex_objs(root_path, patterns)] | sre_patterns = [reg_obj for reg_obj in extract_regex_objs(root_path, patterns)] | ||||
def test_scanner_correct_api_request(mock_aioresponse, event_loop, aiosession): | def test_scanner_correct_api_request(mock_aioresponse, event_loop, aiosession): | ||||
mock_aioresponse.post( | mock_aioresponse.post( | ||||
aio_url, | aio_url, | ||||
status=200, | status=200, | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | for child_node in source_tree.iterate(): | ||||
assert node_info["known"] is False | assert node_info["known"] is False | ||||
def test_scanner_result_with_exclude_patterns( | def test_scanner_result_with_exclude_patterns( | ||||
live_server, event_loop, test_sample_folder | live_server, event_loop, test_sample_folder | ||||
): | ): | ||||
api_url = url_for("index", _external=True) | api_url = url_for("index", _external=True) | ||||
config = {"web-api": {"url": api_url, "auth-token": None}} | config = {"web-api": {"url": api_url, "auth-token": None}} | ||||
to_exclude_dir = str(test_sample_folder) + "/toexclude" | |||||
patterns = (str(test_sample_folder) + "/toexclude",) | patterns = (to_exclude_dir.encode(),) | ||||
exclude_pattern = { | exclude_pattern = { | ||||
reg_obj for reg_obj in extract_regex_objs(test_sample_folder, patterns) | reg_obj for reg_obj in extract_regex_objs(bytes(test_sample_folder), patterns) | ||||
} | } | ||||
source_tree = Tree(test_sample_folder) | source_tree = Tree(test_sample_folder) | ||||
event_loop.run_until_complete( | event_loop.run_until_complete( | ||||
run(config, test_sample_folder, source_tree, exclude_pattern) | run(config, test_sample_folder, source_tree, exclude_pattern) | ||||
) | ) | ||||
for child_node in source_tree.iterate(): | for child_node in source_tree.iterate(): | ||||
node_info = list(child_node.attributes.values())[0] | node_info = list(child_node.attributes.values())[0] | ||||
assert node_info["swhid"] != to_exclude_swhid | assert node_info["swhid"] != to_exclude_swhid |