Buildcache: add unit tests for normalized path functions in relocate.py (#15607)

This commit is contained in:
Patrick Gartung 2020-03-20 16:54:27 -05:00 committed by GitHub
parent 76c9e6d871
commit e2125c26ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,7 +26,9 @@
from spack.relocate import needs_binary_relocation, needs_text_relocation
from spack.relocate import relocate_text, relocate_links
from spack.relocate import get_relative_elf_rpaths
from spack.relocate import get_normalized_elf_rpaths
from spack.relocate import macho_make_paths_relative
from spack.relocate import macho_make_paths_normal
from spack.relocate import set_placeholder, macho_find_paths
from spack.relocate import file_is_relocatable
@ -471,7 +473,7 @@ def test_replace_paths(tmpdir):
def test_macho_make_paths():
out = macho_make_paths_relative('/Users/Shares/spack/pkgC/lib/libC.dylib',
out = macho_make_paths_relative('/Users/Shared/spack/pkgC/lib/libC.dylib',
'/Users/Shared/spack',
('/Users/Shared/spack/pkgA/lib',
'/Users/Shared/spack/pkgB/lib',
@ -481,19 +483,43 @@ def test_macho_make_paths():
'/usr/local/lib/libloco.dylib'),
'/Users/Shared/spack/pkgC/lib/libC.dylib')
assert out == {'/Users/Shared/spack/pkgA/lib':
'@loader_path/../../../../Shared/spack/pkgA/lib',
'@loader_path/../../pkgA/lib',
'/Users/Shared/spack/pkgB/lib':
'@loader_path/../../../../Shared/spack/pkgB/lib',
'@loader_path/../../pkgB/lib',
'/usr/local/lib': '/usr/local/lib',
'/Users/Shared/spack/pkgA/libA.dylib':
'@loader_path/../../../../Shared/spack/pkgA/libA.dylib',
'@loader_path/../../pkgA/libA.dylib',
'/Users/Shared/spack/pkgB/libB.dylib':
'@loader_path/../../../../Shared/spack/pkgB/libB.dylib',
'@loader_path/../../pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib':
'/usr/local/lib/libloco.dylib',
'/Users/Shared/spack/pkgC/lib/libC.dylib':
'@rpath/libC.dylib'}
out = macho_make_paths_normal('/Users/Shared/spack/pkgC/lib/libC.dylib',
('@loader_path/../../pkgA/lib',
'@loader_path/../../pkgB/lib',
'/usr/local/lib'),
('@loader_path/../../pkgA/libA.dylib',
'@loader_path/../../pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib'),
'@rpath/libC.dylib')
assert out == {'@rpath/libC.dylib':
'/Users/Shared/spack/pkgC/lib/libC.dylib',
'@loader_path/../../pkgA/lib':
'/Users/Shared/spack/pkgA/lib',
'@loader_path/../../pkgB/lib':
'/Users/Shared/spack/pkgB/lib',
'/usr/local/lib': '/usr/local/lib',
'@loader_path/../../pkgA/libA.dylib':
'/Users/Shared/spack/pkgA/libA.dylib',
'@loader_path/../../pkgB/libB.dylib':
'/Users/Shared/spack/pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib':
'/usr/local/lib/libloco.dylib'
}
out = macho_make_paths_relative('/Users/Shared/spack/pkgC/bin/exeC',
'/Users/Shared/spack',
('/Users/Shared/spack/pkgA/lib',
@ -515,9 +541,35 @@ def test_macho_make_paths():
'/usr/local/lib/libloco.dylib':
'/usr/local/lib/libloco.dylib'}
out = macho_make_paths_normal('/Users/Shared/spack/pkgC/bin/exeC',
('@loader_path/../../pkgA/lib',
'@loader_path/../../pkgB/lib',
'/usr/local/lib'),
('@loader_path/../../pkgA/libA.dylib',
'@loader_path/../../pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib'),
None)
assert out == {'@loader_path/../../pkgA/lib':
'/Users/Shared/spack/pkgA/lib',
'@loader_path/../../pkgB/lib':
'/Users/Shared/spack/pkgB/lib',
'/usr/local/lib': '/usr/local/lib',
'@loader_path/../../pkgA/libA.dylib':
'/Users/Shared/spack/pkgA/libA.dylib',
'@loader_path/../../pkgB/libB.dylib':
'/Users/Shared/spack/pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib':
'/usr/local/lib/libloco.dylib'}
def test_elf_paths():
out = get_relative_elf_rpaths(
'/usr/bin/test', '/usr',
('/usr/lib', '/usr/lib64', '/opt/local/lib'))
assert out == ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib']
out = get_normalized_elf_rpaths(
'/usr/bin/test',
['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib'])
assert out == ['/usr/lib', '/usr/lib64', '/opt/local/lib']