Chromium Code Reviews| Index: test/linux/gyptest-implicit-rpath.py |
| =================================================================== |
| --- test/linux/gyptest-implicit-rpath.py (revision 0) |
| +++ test/linux/gyptest-implicit-rpath.py (revision 0) |
| @@ -0,0 +1,45 @@ |
| +#!/usr/bin/env python |
| + |
| +# Copyright (c) 2013 Google Inc. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +""" |
| +Verifies that the implicit rpath is added only when needed. |
| +""" |
| + |
| +import TestGyp |
| + |
| +import re |
| +import subprocess |
| +import sys |
| + |
| +if sys.platform.startswith('linux'): |
| + test = TestGyp.TestGyp(formats=['ninja', 'make']) |
| + |
| + CHDIR = 'implicit-rpath' |
| + test.run_gyp('test.gyp', chdir=CHDIR) |
| + test.build('test.gyp', test.ALL, chdir=CHDIR) |
| + |
| + def GetRpaths(p): |
| + p = test.built_file_path(p, chdir=CHDIR) |
| + r = re.compile(r'Library rpath: \[([^\]]+)\]') |
| + proc = subprocess.Popen(['readelf', '-d', p], stdout=subprocess.PIPE) |
| + o = proc.communicate()[0] |
| + assert not proc.returncode |
| + return r.findall(o) |
| + |
| + if test.format == 'ninja': |
| + expect = '$ORIGIN/lib/' |
| + elif test.format == 'make': |
| + expect = '$ORIGIN/lib.target/' |
| + else: |
| + test.fail_test() |
| + |
| + if (GetRpaths('shared_executable') != [expect]): |
|
Nico
2013/01/10 21:34:57
ifs usually have no parens in python
cwolfe
2013/01/10 21:49:47
Done. I blame test/mac/gyptest-rpath.py :)
|
| + test.fail_test() |
| + |
| + if (GetRpaths('static_executable') != []): |
|
Nico
2013/01/10 21:34:57
likewise, and since lists are false exactly if the
cwolfe
2013/01/10 21:49:47
Done.
|
| + test.fail_test() |
| + |
| + test.pass_test() |