From 6d44030a339856aac5f624f9fc14849066e5f307 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Tue, 26 Dec 2017 03:23:26 +0530 Subject: [PATCH] unit tests: Test that relative install_rpath works correctly We weren't testing this with C++, so the breakage was missed. https://github.com/mesonbuild/meson/issues/2814 --- run_unittests.py | 7 +++++++ test cases/unit/11 build_rpath/meson.build | 9 ++++++++- test cases/unit/11 build_rpath/prog.cc | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test cases/unit/11 build_rpath/prog.cc diff --git a/run_unittests.py b/run_unittests.py index f717e6dd1..ec926a549 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -2269,11 +2269,18 @@ class LinuxlikeTests(BasePlatformTests): testdir = os.path.join(self.unit_test_dir, '11 build_rpath') self.init(testdir) self.build() + # C program RPATH build_rpath = get_rpath(os.path.join(self.builddir, 'prog')) self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar') self.install() install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/prog')) self.assertEqual(install_rpath, '/baz') + # C++ program RPATH + build_rpath = get_rpath(os.path.join(self.builddir, 'progcxx')) + self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar') + self.install() + install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/progcxx')) + self.assertEqual(install_rpath, 'baz') def test_pch_with_address_sanitizer(self): testdir = os.path.join(self.common_test_dir, '13 pch') diff --git a/test cases/unit/11 build_rpath/meson.build b/test cases/unit/11 build_rpath/meson.build index b84c259ab..c0bc3bd27 100644 --- a/test cases/unit/11 build_rpath/meson.build +++ b/test cases/unit/11 build_rpath/meson.build @@ -1,4 +1,4 @@ -project('build rpath', 'c') +project('build rpath', 'c', 'cpp') subdir('sub') executable('prog', 'prog.c', @@ -7,3 +7,10 @@ executable('prog', 'prog.c', install_rpath : '/baz', install : true, ) + +executable('progcxx', 'prog.cc', + link_with : l, + build_rpath : '/foo/bar', + install_rpath : 'baz', + install : true, + ) diff --git a/test cases/unit/11 build_rpath/prog.cc b/test cases/unit/11 build_rpath/prog.cc new file mode 100644 index 000000000..c7c212370 --- /dev/null +++ b/test cases/unit/11 build_rpath/prog.cc @@ -0,0 +1,8 @@ +#include +#include + +int main(int argc, char **argv) { + std::string* s = new std::string("Hello"); + delete s; + return 0; +}