From 862982b7e65c2fc3ebb5b4f803c20aee91c3d1c8 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Tue, 16 Jun 2020 16:34:42 +0100
Subject: [PATCH] tests: Work around libldap-2.4.so.2 not loading successfully
 on Arch

Workaround for T21931. Fully fixing this is low-priority, because we
have been removing libldap dependencies anyway.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 tests/inside-scout.py | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/tests/inside-scout.py b/tests/inside-scout.py
index 3b9f48853..b7e19585e 100755
--- a/tests/inside-scout.py
+++ b/tests/inside-scout.py
@@ -363,13 +363,14 @@ class TestInsideScout(BaseTest):
                 arch=multiarch,
             ):
                 self.assertTrue(arch_info['can-run'])
-                self.assertEqual([], arch_info['library-issues-summary'])
                 # Graphics driver support depends on the host system, so we
                 # don't assert that everything is fine, only that we have
                 # the information.
                 self.assertIn('graphics-details', arch_info)
                 self.assertIn('glx/gl', arch_info['graphics-details'])
 
+            expect_library_issues = set()
+
             for soname, details in arch_info['library-details'].items():
                 with self.catch(
                     'per-library information',
@@ -377,6 +378,15 @@ class TestInsideScout(BaseTest):
                     arch=multiarch,
                     soname=soname,
                 ):
+                    if soname == 'libldap-2.4.so.2':
+                        # On Debian, libldap-2.4.so.2 is really an alias
+                        # for libldap_r-2.4.so.2; but on Arch Linux they
+                        # are separate libraries, and this causes trouble
+                        # for our library-loading. Ignore failure to load
+                        # the former.
+                        expect_library_issues |= set(details.get('issues', []))
+                        continue
+
                     self.assertIn('path', details)
                     self.assertEqual(
                         [],
@@ -521,6 +531,16 @@ class TestInsideScout(BaseTest):
                                         details.get(key),
                                     )
 
+            with self.catch(
+                'per-architecture information',
+                diagnostic=arch_info,
+                arch=multiarch,
+            ):
+                self.assertEqual(
+                    expect_library_issues,
+                    set(arch_info['library-issues-summary']),
+                )
+
 
 if __name__ == '__main__':
     assert sys.version_info >= (3, 5), 'Python 3.5+ is required'
-- 
GitLab