From 1da7ddc2b39280040db1c91cb10ef55e790a81ff Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 14:56:33 +0100 Subject: [PATCH] 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. --- .../spack/test/data/directory_search/c/libb.so | 0 .../data/directory_search/{c => include/a}/a.h | 0 .../data/directory_search/{b => include/a}/d.h | 0 .../{a/c.h => include/a/foo.txt} | 0 .../data/directory_search/{ => include}/b/b.h | 0 .../directory_search/{c => include/b}/bar.txt | 0 .../{a/foobar.txt => include/c/baz.txt} | 0 .../directory_search/{a/libc.a => include/c/c.h} | 0 .../{a/libc.dll => lib/a/foo.txt} | 0 .../data/directory_search/{b => lib/a}/liba.a | 0 .../data/directory_search/{b => lib/a}/liba.dll | 0 .../directory_search/{b => lib/a}/liba.dylib | 0 .../data/directory_search/{b => lib/a}/liba.lib | 0 .../data/directory_search/{b => lib/a}/libd.a | 0 .../data/directory_search/{b => lib/a}/libd.dll | 0 .../directory_search/{b => lib/a}/libd.dylib | 0 .../data/directory_search/{b => lib/a}/libd.lib | 0 .../{a/libc.dylib => lib/b/bar.txt} | 0 .../data/directory_search/{c => lib/b}/libb.a | 0 .../data/directory_search/{c => lib/b}/libb.dll | 0 .../directory_search/{c => lib/b}/libb.dylib | 0 .../data/directory_search/{c => lib/b}/libb.lib | 0 .../{a/libc.lib => lib64/c/baz.txt} | 0 .../{a/libc.so => lib64/c/libc.a} | 0 .../{b/bar.txp => lib64/c/libc.dll} | 0 .../{b/liba.so => lib64/c/libc.dylib} | 0 .../{b/libd.so => lib64/c/libc.lib} | 0 lib/spack/spack/test/llnl/util/file_list.py | 16 ++++++++++------ 28 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 lib/spack/spack/test/data/directory_search/c/libb.so rename lib/spack/spack/test/data/directory_search/{c => include/a}/a.h (100%) rename lib/spack/spack/test/data/directory_search/{b => include/a}/d.h (100%) rename lib/spack/spack/test/data/directory_search/{a/c.h => include/a/foo.txt} (100%) rename lib/spack/spack/test/data/directory_search/{ => include}/b/b.h (100%) rename lib/spack/spack/test/data/directory_search/{c => include/b}/bar.txt (100%) rename lib/spack/spack/test/data/directory_search/{a/foobar.txt => include/c/baz.txt} (100%) rename lib/spack/spack/test/data/directory_search/{a/libc.a => include/c/c.h} (100%) rename lib/spack/spack/test/data/directory_search/{a/libc.dll => lib/a/foo.txt} (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/liba.a (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/liba.dll (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/liba.dylib (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/liba.lib (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/libd.a (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/libd.dll (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/libd.dylib (100%) rename lib/spack/spack/test/data/directory_search/{b => lib/a}/libd.lib (100%) rename lib/spack/spack/test/data/directory_search/{a/libc.dylib => lib/b/bar.txt} (100%) rename lib/spack/spack/test/data/directory_search/{c => lib/b}/libb.a (100%) rename lib/spack/spack/test/data/directory_search/{c => lib/b}/libb.dll (100%) rename lib/spack/spack/test/data/directory_search/{c => lib/b}/libb.dylib (100%) rename lib/spack/spack/test/data/directory_search/{c => lib/b}/libb.lib (100%) rename lib/spack/spack/test/data/directory_search/{a/libc.lib => lib64/c/baz.txt} (100%) rename lib/spack/spack/test/data/directory_search/{a/libc.so => lib64/c/libc.a} (100%) rename lib/spack/spack/test/data/directory_search/{b/bar.txp => lib64/c/libc.dll} (100%) rename lib/spack/spack/test/data/directory_search/{b/liba.so => lib64/c/libc.dylib} (100%) rename lib/spack/spack/test/data/directory_search/{b/libd.so => lib64/c/libc.lib} (100%) diff --git a/lib/spack/spack/test/data/directory_search/c/libb.so b/lib/spack/spack/test/data/directory_search/c/libb.so deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/lib/spack/spack/test/data/directory_search/c/a.h b/lib/spack/spack/test/data/directory_search/include/a/a.h similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/a.h rename to lib/spack/spack/test/data/directory_search/include/a/a.h diff --git a/lib/spack/spack/test/data/directory_search/b/d.h b/lib/spack/spack/test/data/directory_search/include/a/d.h similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/d.h rename to lib/spack/spack/test/data/directory_search/include/a/d.h diff --git a/lib/spack/spack/test/data/directory_search/a/c.h b/lib/spack/spack/test/data/directory_search/include/a/foo.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/c.h rename to lib/spack/spack/test/data/directory_search/include/a/foo.txt diff --git a/lib/spack/spack/test/data/directory_search/b/b.h b/lib/spack/spack/test/data/directory_search/include/b/b.h similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/b.h rename to lib/spack/spack/test/data/directory_search/include/b/b.h diff --git a/lib/spack/spack/test/data/directory_search/c/bar.txt b/lib/spack/spack/test/data/directory_search/include/b/bar.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/bar.txt rename to lib/spack/spack/test/data/directory_search/include/b/bar.txt diff --git a/lib/spack/spack/test/data/directory_search/a/foobar.txt b/lib/spack/spack/test/data/directory_search/include/c/baz.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/foobar.txt rename to lib/spack/spack/test/data/directory_search/include/c/baz.txt diff --git a/lib/spack/spack/test/data/directory_search/a/libc.a b/lib/spack/spack/test/data/directory_search/include/c/c.h similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/libc.a rename to lib/spack/spack/test/data/directory_search/include/c/c.h diff --git a/lib/spack/spack/test/data/directory_search/a/libc.dll b/lib/spack/spack/test/data/directory_search/lib/a/foo.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/libc.dll rename to lib/spack/spack/test/data/directory_search/lib/a/foo.txt diff --git a/lib/spack/spack/test/data/directory_search/b/liba.a b/lib/spack/spack/test/data/directory_search/lib/a/liba.a similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/liba.a rename to lib/spack/spack/test/data/directory_search/lib/a/liba.a diff --git a/lib/spack/spack/test/data/directory_search/b/liba.dll b/lib/spack/spack/test/data/directory_search/lib/a/liba.dll similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/liba.dll rename to lib/spack/spack/test/data/directory_search/lib/a/liba.dll diff --git a/lib/spack/spack/test/data/directory_search/b/liba.dylib b/lib/spack/spack/test/data/directory_search/lib/a/liba.dylib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/liba.dylib rename to lib/spack/spack/test/data/directory_search/lib/a/liba.dylib diff --git a/lib/spack/spack/test/data/directory_search/b/liba.lib b/lib/spack/spack/test/data/directory_search/lib/a/liba.lib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/liba.lib rename to lib/spack/spack/test/data/directory_search/lib/a/liba.lib diff --git a/lib/spack/spack/test/data/directory_search/b/libd.a b/lib/spack/spack/test/data/directory_search/lib/a/libd.a similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/libd.a rename to lib/spack/spack/test/data/directory_search/lib/a/libd.a diff --git a/lib/spack/spack/test/data/directory_search/b/libd.dll b/lib/spack/spack/test/data/directory_search/lib/a/libd.dll similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/libd.dll rename to lib/spack/spack/test/data/directory_search/lib/a/libd.dll diff --git a/lib/spack/spack/test/data/directory_search/b/libd.dylib b/lib/spack/spack/test/data/directory_search/lib/a/libd.dylib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/libd.dylib rename to lib/spack/spack/test/data/directory_search/lib/a/libd.dylib diff --git a/lib/spack/spack/test/data/directory_search/b/libd.lib b/lib/spack/spack/test/data/directory_search/lib/a/libd.lib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/libd.lib rename to lib/spack/spack/test/data/directory_search/lib/a/libd.lib diff --git a/lib/spack/spack/test/data/directory_search/a/libc.dylib b/lib/spack/spack/test/data/directory_search/lib/b/bar.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/libc.dylib rename to lib/spack/spack/test/data/directory_search/lib/b/bar.txt diff --git a/lib/spack/spack/test/data/directory_search/c/libb.a b/lib/spack/spack/test/data/directory_search/lib/b/libb.a similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/libb.a rename to lib/spack/spack/test/data/directory_search/lib/b/libb.a diff --git a/lib/spack/spack/test/data/directory_search/c/libb.dll b/lib/spack/spack/test/data/directory_search/lib/b/libb.dll similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/libb.dll rename to lib/spack/spack/test/data/directory_search/lib/b/libb.dll diff --git a/lib/spack/spack/test/data/directory_search/c/libb.dylib b/lib/spack/spack/test/data/directory_search/lib/b/libb.dylib similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/libb.dylib rename to lib/spack/spack/test/data/directory_search/lib/b/libb.dylib diff --git a/lib/spack/spack/test/data/directory_search/c/libb.lib b/lib/spack/spack/test/data/directory_search/lib/b/libb.lib similarity index 100% rename from lib/spack/spack/test/data/directory_search/c/libb.lib rename to lib/spack/spack/test/data/directory_search/lib/b/libb.lib diff --git a/lib/spack/spack/test/data/directory_search/a/libc.lib b/lib/spack/spack/test/data/directory_search/lib64/c/baz.txt similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/libc.lib rename to lib/spack/spack/test/data/directory_search/lib64/c/baz.txt diff --git a/lib/spack/spack/test/data/directory_search/a/libc.so b/lib/spack/spack/test/data/directory_search/lib64/c/libc.a similarity index 100% rename from lib/spack/spack/test/data/directory_search/a/libc.so rename to lib/spack/spack/test/data/directory_search/lib64/c/libc.a diff --git a/lib/spack/spack/test/data/directory_search/b/bar.txp b/lib/spack/spack/test/data/directory_search/lib64/c/libc.dll similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/bar.txp rename to lib/spack/spack/test/data/directory_search/lib64/c/libc.dll diff --git a/lib/spack/spack/test/data/directory_search/b/liba.so b/lib/spack/spack/test/data/directory_search/lib64/c/libc.dylib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/liba.so rename to lib/spack/spack/test/data/directory_search/lib64/c/libc.dylib diff --git a/lib/spack/spack/test/data/directory_search/b/libd.so b/lib/spack/spack/test/data/directory_search/lib64/c/libc.lib similarity index 100% rename from lib/spack/spack/test/data/directory_search/b/libd.so rename to lib/spack/spack/test/data/directory_search/lib64/c/libc.lib diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index e2ff5a82109..99044890980 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -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