338b3fd11d
We patch gobject-introspection somewhat heavily, so add some unit tests that will catch potential errors when we're eg. updating the patches. There's two tests: - Basic test for absolute nix store paths (testing absolute_shlib_path.patch) - Test for macos `@rpath` sanitizing, including fallback_libpath (macos-shared-library.patch)
51 lines
3.6 KiB
Diff
51 lines
3.6 KiB
Diff
--- a/tests/scanner/test_shlibs.py
|
|
+++ b/tests/scanner/test_shlibs.py
|
|
@@ -10,6 +10,46 @@ from giscanner.shlibs import resolve_from_ldd_output
|
|
|
|
class TestLddParser(unittest.TestCase):
|
|
|
|
+ def test_resolve_from_ldd_output_nix(self):
|
|
+ output = '''\
|
|
+ libglib-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0 (0x00007f0ee1b28000)
|
|
+ libgobject-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgobject-2.0.so.0 (0x00007f0ee18cf000)
|
|
+ libgio-2.0.so.0 => @nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0 (0x00007f0ee1502000)
|
|
+ libxml2.so.2 => @nixStoreDir@/72mxkk74cv266snkjpz1kwl1i2rg8rpc-libxml2-2.9.8/lib/libxml2.so.2 (0x00007f0ee119c000)
|
|
+ libsqlite3.so.0 => @nixStoreDir@/ck5ay23hsmlc67pg3m34kzd1k2hhvww0-sqlite-3.24.0/lib/libsqlite3.so.0 (0x00007f0ee0e98000)
|
|
+ libpsl.so.5 => @nixStoreDir@/qn3l2gn7m76f318676wflrs2z6d4rrkj-libpsl-0.20.2-list-2017-02-03/lib/libpsl.so.5 (0x00007f0ee0c88000)
|
|
+ libc.so.6 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libc.so.6 (0x00007f0ee08d4000)
|
|
+ libpcre.so.1 => @nixStoreDir@/hxbq8lpc53qsf1bc0dfcsm47wmcxzjvh-pcre-8.42/lib/libpcre.so.1 (0x00007f0ee0662000)
|
|
+ @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib64/ld-linux-x86-64.so.2 (0x00007f0ee20ff000)
|
|
+ libblkid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libblkid.so.1 (0x00007f0edd0cd000)
|
|
+ libuuid.so.1 => @nixStoreDir@/q0kgnq21j0l2yd77gdlld371246cwghh-util-linux-2.32.1/lib/libuuid.so.1 (0x00007f0edcec5000)
|
|
+ librt.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/librt.so.1 (0x00007f0edccbd000)
|
|
+ libstdc++.so.6 => @nixStoreDir@/3v5r7fkrbkw2qajadvjbf6p6qriz9p1i-gcc-7.3.0-lib/lib/libstdc++.so.6 (0x00007f0edc936000)
|
|
+ libgcc_s.so.1 => @nixStoreDir@/g2yk54hifqlsjiha3szr4q3ccmdzyrdv-glibc-2.27/lib/libgcc_s.so.1 (0x00007f0edc720000)
|
|
+ '''
|
|
+ libraries = ['glib-2.0', 'gio-2.0']
|
|
+
|
|
+ self.assertEqual(
|
|
+ ['@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libglib-2.0.so.0',
|
|
+ '@nixStoreDir@/gmrf09y7sfxrr0mcx90dba7w41jj2kzk-glib-2.58.1/lib/libgio-2.0.so.0'],
|
|
+ resolve_from_ldd_output(libraries, output, basename=False))
|
|
+
|
|
+ def test_resolve_from_ldd_output_macos(self):
|
|
+ output = '''\
|
|
+ @rpath/libatk-1.0.0.dylib
|
|
+ @rpath/libgstreamer-1.0.0.dylib (compatibility version 0.0.0, current version 0.0.0)
|
|
+ /Volumes/USB_SSD/cerbero/build/dist/darwin_x86_64/lib/libglib-2.0.0.dylib (compatibility version 0.0.0, current version 0.0.0)
|
|
+ /Volumes/USB_SSD/cerbero/build/dist/darwin_x86_64/lib/libintl.dylib (compatibility version 0.0.0, current version 0.0.0)
|
|
+ /Volumes/USB_SSD/cerbero/build/dist/darwin_x86_64/lib/libgobject-2.0.0.dylib (compatibility version 0.0.0, current version 0.0.0)
|
|
+ /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
|
|
+ '''
|
|
+ libraries = ['atk-1.0']
|
|
+ fallback_libpath = '@nixStoreDir@/1ynd5b01z87c1nw75k5iy7sq49hpkw53-atk-2.30.0/lib'
|
|
+
|
|
+ self.assertEqual(
|
|
+ [ '%s/libatk-1.0.0.dylib' % fallback_libpath ],
|
|
+ resolve_from_ldd_output(libraries, output, basename=False, fallback_libpath=fallback_libpath))
|
|
+
|
|
def test_resolve_from_ldd_output(self):
|
|
output = '''\
|
|
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbe12d68000)
|
|
|