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 pytest | import pytest | ||||
import json | import json | ||||
from pathlib import PosixPath | from pathlib import PosixPath | ||||
from .data import correct_api_response | from .data import correct_api_response, present_swhids, to_exclude_swhid | ||||
from swh.scanner.scanner import pids_discovery, get_subpaths, run | from swh.scanner.scanner import pids_discovery, get_subpaths, run | ||||
from swh.scanner.model import Tree | from swh.scanner.model import Tree | ||||
from swh.scanner.cli import extract_regex_objs | from swh.scanner.cli import extract_regex_objs | ||||
from swh.scanner.exceptions import APIError | from swh.scanner.exceptions import APIError | ||||
aio_url = "http://example.org/api/known/" | aio_url = "http://example.org/api/known/" | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
@pytest.mark.options(debug=False) | @pytest.mark.options(debug=False) | ||||
def test_app(app): | def test_app(app): | ||||
assert not app.debug | assert not app.debug | ||||
def test_scanner_result(live_server, event_loop, test_folder): | def test_scanner_result(live_server, event_loop, test_folder): | ||||
api_url = live_server.url() + "/" | api_url = live_server.url() + "/" | ||||
result_path = test_folder.joinpath(PosixPath("sample-folder-result.json")) | |||||
with open(result_path, "r") as json_file: | |||||
expected_result = json.loads(json_file.read()) | |||||
sample_folder = test_folder.joinpath(PosixPath("sample-folder")) | sample_folder = test_folder.joinpath(PosixPath("sample-folder")) | ||||
source_tree = Tree(sample_folder) | source_tree = Tree(sample_folder) | ||||
event_loop.run_until_complete(run(sample_folder, api_url, source_tree, tuple())) | event_loop.run_until_complete(run(sample_folder, api_url, source_tree, set())) | ||||
actual_result = source_tree.getTree() | |||||
assert actual_result == expected_result | for node_dict in source_tree.iterate(): | ||||
node_info = list(node_dict.values())[0] | |||||
if node_info["swhid"] in present_swhids: | |||||
assert node_info["known"] is True | |||||
else: | |||||
assert node_info["known"] is False | |||||
def test_scanner_result_with_exclude_patterns(live_server, event_loop, test_folder): | def test_scanner_result_with_exclude_patterns(live_server, event_loop, test_folder): | ||||
api_url = live_server.url() + "/" | api_url = live_server.url() + "/" | ||||
result_path = test_folder.joinpath( | |||||
PosixPath("sample-folder-result-no-toexclude.json") | |||||
) | |||||
with open(result_path, "r") as json_file: | |||||
expected_result = json.loads(json_file.read()) | |||||
sample_folder = test_folder.joinpath(PosixPath("sample-folder")) | sample_folder = test_folder.joinpath(PosixPath("sample-folder")) | ||||
patterns = (str(sample_folder) + "/toexclude",) | patterns = (str(sample_folder) + "/toexclude",) | ||||
exclude_pattern = { | exclude_pattern = { | ||||
reg_obj for reg_obj in extract_regex_objs(sample_folder, patterns) | reg_obj for reg_obj in extract_regex_objs(sample_folder, patterns) | ||||
} | } | ||||
source_tree = Tree(sample_folder) | source_tree = Tree(sample_folder) | ||||
event_loop.run_until_complete( | event_loop.run_until_complete( | ||||
run(sample_folder, api_url, source_tree, exclude_pattern) | run(sample_folder, api_url, source_tree, exclude_pattern) | ||||
) | ) | ||||
actual_result = source_tree.getTree() | for node_dict in source_tree.iterate(): | ||||
node_info = list(node_dict.values())[0] | |||||
assert actual_result == expected_result | assert node_info["swhid"] != to_exclude_swhid |