tests: improve file_list.py search order test

The directory structure was updated to have a typical ./include, ./lib,
./lib64 structure, otherwise the search heuristics of `find_libraries`
does not work. Also add a comment to tell what the test does, cause it
was unclear.
This commit is contained in:
Harmen Stoppels 2024-11-07 14:56:33 +01:00
parent 0ec918570a
commit 1da7ddc2b3
28 changed files with 10 additions and 6 deletions

View File

@ -4,7 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import fnmatch
import os.path
import pathlib
import sys
import pytest
@ -242,7 +242,7 @@ def test_add(self, header_list):
#: Directory where the data for the test below is stored
search_dir = os.path.join(spack.paths.test_path, "data", "directory_search")
search_dir = pathlib.Path(spack.paths.test_path) / "data" / "directory_search"
@pytest.mark.parametrize(
@ -257,7 +257,7 @@ def test_add(self, header_list):
],
)
def test_library_type_search(lib_list, kwargs):
results = find_libraries(lib_list, search_dir, **kwargs)
results = find_libraries(lib_list, str(search_dir), **kwargs)
assert len(results) != 0
for result in results:
lib_type_ext = plat_shared_ext
@ -293,13 +293,17 @@ def test_library_type_search(lib_list, kwargs):
(find_headers, ["a", "c"], search_dir, {"recursive": True}),
(find_headers, ["c", "b", "a"], search_dir, {"recursive": True}),
(find_headers, ["a", "c"], search_dir, {"recursive": True}),
(find_libraries, ["liba", "libd"], os.path.join(search_dir, "b"), {"recursive": False}),
(find_headers, ["b", "d"], os.path.join(search_dir, "b"), {"recursive": False}),
(find_libraries, ["liba", "libd"], search_dir / "lib" / "a", {"recursive": False}),
(find_headers, ["a", "d"], search_dir / "include" / "a", {"recursive": False}),
],
)
def test_searching_order(search_fn, search_list, root, kwargs):
"""Tests whether when multiple libraries or headers are searched for, like [a, b], the found
file list adheres to the same ordering: [a matches..., b matches...], which could be relevant
of the the order in which the libraries are passed to the linker in case there are
dependencies across static libraries."""
# Test search
result = search_fn(search_list, root, **kwargs)
result = search_fn(search_list, str(root), **kwargs)
# The tests are set-up so that something is always found
assert len(result) != 0