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
pull/2826/head
Nirbheek Chauhan 7 years ago
parent f3c182f07d
commit 55abe16d5a
  1. 7
      run_unittests.py
  2. 9
      test cases/unit/11 build_rpath/meson.build
  3. 8
      test cases/unit/11 build_rpath/prog.cc

@ -2288,11 +2288,18 @@ class LinuxlikeTests(BasePlatformTests):
testdir = os.path.join(self.unit_test_dir, '11 build_rpath') testdir = os.path.join(self.unit_test_dir, '11 build_rpath')
self.init(testdir) self.init(testdir)
self.build() self.build()
# C program RPATH
build_rpath = get_rpath(os.path.join(self.builddir, 'prog')) build_rpath = get_rpath(os.path.join(self.builddir, 'prog'))
self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar') self.assertEqual(build_rpath, '$ORIGIN/sub:/foo/bar')
self.install() self.install()
install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/prog')) install_rpath = get_rpath(os.path.join(self.installdir, 'usr/bin/prog'))
self.assertEqual(install_rpath, '/baz') 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): def test_pch_with_address_sanitizer(self):
testdir = os.path.join(self.common_test_dir, '13 pch') testdir = os.path.join(self.common_test_dir, '13 pch')

@ -1,4 +1,4 @@
project('build rpath', 'c') project('build rpath', 'c', 'cpp')
subdir('sub') subdir('sub')
executable('prog', 'prog.c', executable('prog', 'prog.c',
@ -7,3 +7,10 @@ executable('prog', 'prog.c',
install_rpath : '/baz', install_rpath : '/baz',
install : true, install : true,
) )
executable('progcxx', 'prog.cc',
link_with : l,
build_rpath : '/foo/bar',
install_rpath : 'baz',
install : true,
)

@ -0,0 +1,8 @@
#include <string>
#include <iostream>
int main(int argc, char **argv) {
std::string* s = new std::string("Hello");
delete s;
return 0;
}
Loading…
Cancel
Save