Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: test/make_global_settings/ld/gyptest-make_global_settings_ld.py

Issue 322973006: Add unittest for 'LD' in 'make_global_settings' (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/make_global_settings/ld/make_global_settings_ld.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2014 Google Inc. All rights reserved. 3 # Copyright (c) 2014 Google Inc. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """ 7 """
8 Verifies 'AR' in make_global_settings. 8 Verifies 'LD' in make_global_settings.
9 """ 9 """
10 10
11 import os 11 import os
12 import sys 12 import sys
13 import TestGyp 13 import TestGyp
14 14
15 def resolve_path(test, path): 15 def resolve_path(test, path):
16 if path is None: 16 if path is None:
17 return None 17 return None
18 elif test.format == 'make': 18 elif test.format == 'make':
19 return '$(abspath %s)' % path 19 return '$(abspath %s)' % path
20 elif test.format == 'ninja': 20 elif test.format == 'ninja':
21 return os.path.join('..', '..', path) 21 return os.path.join('..', '..', path)
22 else: 22 else:
23 test.fail_test() 23 test.fail_test()
24 24
25 25
26 def verify_ar_target(test, ar=None, rel_path=False): 26 def verify_ld_target(test, ld=None, rel_path=False):
27 if rel_path: 27 if rel_path:
28 ar_expected = resolve_path(test, ar) 28 ld_expected = resolve_path(test, ld)
29 else: 29 else:
30 ar_expected = ar 30 ld_expected = ld
31 # Resolve default values 31 # Resolve default values
32 if ar_expected is None: 32 if ld_expected is None:
33 if test.format == 'make': 33 if test.format == 'make':
34 # Make generator hasn't set the default value for AR. 34 # Make generator hasn't set the default value for LD.
35 # You can remove the following assertion as long as it doesn't 35 # You can remove the following assertion as long as it doesn't
36 # break existing projects. 36 # break existing projects.
37 test.must_not_contain('Makefile', 'AR ?= ') 37 test.must_not_contain('Makefile', 'LD ?= ')
38 return 38 return
39 elif test.format == 'ninja': 39 elif test.format == 'ninja':
40 if sys.platform == 'win32': 40 if sys.platform == 'win32':
41 ar_expected = 'lib.exe' 41 ld_expected = 'link.exe'
42 else: 42 else:
43 ar_expected = 'ar' 43 ld_expected = '$cc'
44 if test.format == 'make': 44 if test.format == 'make':
45 test.must_contain('Makefile', 'AR ?= %s' % ar_expected) 45 test.must_contain('Makefile', 'LD ?= %s' % ld_expected)
46 elif test.format == 'ninja': 46 elif test.format == 'ninja':
47 test.must_contain('out/Default/build.ninja', 'ar = %s' % ar_expected) 47 test.must_contain('out/Default/build.ninja', 'ld = %s' % ld_expected)
48 else: 48 else:
49 test.fail_test() 49 test.fail_test()
50 50
51 51
52 def verify_ar_host(test, ar=None, rel_path=False): 52 def verify_ld_host(test, ld=None, rel_path=False):
53 if rel_path: 53 if rel_path:
54 ar_expected = resolve_path(test, ar) 54 ld_expected = resolve_path(test, ld)
55 else: 55 else:
56 ar_expected = ar 56 ld_expected = ld
57 # Resolve default values 57 # Resolve default values
58 if ar_expected is None: 58 if ld_expected is None:
59 if test.format == 'make': 59 if test.format == 'make':
60 ar_expected = '$(AR)' 60 ld_expected = '$(LD)'
61 elif test.format == 'ninja': 61 elif test.format == 'ninja':
62 if sys.platform == 'win32': 62 if sys.platform == 'win32':
63 # TODO(yukawa): Make sure if this is an expected result or not. 63 # TODO(yukawa): Make sure if this is an expected result or not.
64 ar_expected = 'ar' 64 ld_expected = 'ld'
65 else: 65 else:
66 ar_expected = '$ar' 66 ld_expected = '$ld'
67 if test.format == 'make': 67 if test.format == 'make':
68 test.must_contain('Makefile', 'AR.host ?= %s' % ar_expected) 68 test.must_contain('Makefile', 'LD.host ?= %s' % ld_expected)
69 elif test.format == 'ninja': 69 elif test.format == 'ninja':
70 test.must_contain('out/Default/build.ninja', 'ar_host = %s' % ar_expected) 70 test.must_contain('out/Default/build.ninja', 'ld_host = %s' % ld_expected)
71 else: 71 else:
72 test.fail_test() 72 test.fail_test()
73 73
74 74
75 test_format = ['ninja'] 75 test_format = ['ninja']
76 if sys.platform in ('linux2', 'darwin'): 76 if sys.platform in ('linux2', 'darwin'):
77 test_format += ['make'] 77 test_format += ['make']
78 78
79 test = TestGyp.TestGyp(formats=test_format) 79 test = TestGyp.TestGyp(formats=test_format)
80 80
81 # Check default values 81 # Check default values
82 test.run_gyp('make_global_settings_ar.gyp') 82 test.run_gyp('make_global_settings_ld.gyp')
83 verify_ar_target(test) 83 verify_ld_target(test)
84 84
85 85
86 # Test 'AR' in 'make_global_settings'. 86 # Test 'LD' in 'make_global_settings'.
87 test.run_gyp('make_global_settings_ar.gyp', '-Dcustom_ar_target=my_ar') 87 test.run_gyp('make_global_settings_ld.gyp', '-Dcustom_ld_target=my_ld')
88 verify_ar_target(test, ar='my_ar', rel_path=True) 88 # TODO(yukawa): Support 'LD' in Ninja generator
89 if test.format == 'make':
90 verify_ld_target(test, ld='my_ld', rel_path=True)
89 91
90 92
91 # Test 'AR'/'AR.host' in 'make_global_settings'. 93 # Test 'LD'/'LD.host' in 'make_global_settings'.
92 test.run_gyp('make_global_settings_ar.gyp', 94 test.run_gyp('make_global_settings_ld.gyp',
93 '-Dcustom_ar_target=my_ar_target1', 95 '-Dcustom_ld_target=my_ld_target1',
94 '-Dcustom_ar_host=my_ar_host1') 96 '-Dcustom_ld_host=my_ld_host1')
95 verify_ar_target(test, ar='my_ar_target1', rel_path=True) 97 # TODO(yukawa): Support 'LD'/'LD.host' in Ninja generator
96 # TODO(yukawa): Support 'AR.host' in Ninja generator
97 if test.format == 'make': 98 if test.format == 'make':
98 verify_ar_host(test, ar='my_ar_host1', rel_path=True) 99 verify_ld_target(test, ld='my_ld_target1', rel_path=True)
100 verify_ld_host(test, ld='my_ld_host1', rel_path=True)
99 101
100 102
101 # Test $AR and $AR_host environment variables. 103 # Unlike other environment variables such as $AR/$AR_host, $CC/$CC_host,
102 with TestGyp.LocalEnv({'AR': 'my_ar_target2', 104 # and $CXX/$CXX_host, neither Make generator nor Ninja generator recognizes
103 'AR_host': 'my_ar_host2'}): 105 # $LD/$LD_host environment variables as of r1935. This may or may not be
104 test.run_gyp('make_global_settings_ar.gyp') 106 # intentional, but here we leave a test case to verify this behavior just for
105 # Ninja generator resolves $AR in gyp phase. Make generator doesn't. 107 # the record.
106 if test.format == 'ninja': 108 # If you want to support $LD/$LD_host, please revise the following test case as
107 if sys.platform == 'win32': 109 # well as the generator.
108 # TODO(yukawa): Make sure if this is an expected result or not. 110 with TestGyp.LocalEnv({'LD': 'my_ld_target2',
109 verify_ar_target(test, ar='lib.exe', rel_path=False) 111 'LD_host': 'my_ld_host2'}):
110 else: 112 test.run_gyp('make_global_settings_ld.gyp')
111 verify_ar_target(test, ar='my_ar_target2', rel_path=False) 113 if test.format == 'make':
112 verify_ar_host(test, ar='my_ar_host2', rel_path=False) 114 test.must_not_contain('Makefile', 'my_ld_target2')
113 115 test.must_not_contain('Makefile', 'my_ld_host2')
114 116 elif test.format == 'ninja':
115 # Test 'AR' in 'make_global_settings' with $AR_host environment variable. 117 test.must_not_contain('out/Default/build.ninja', 'my_ld_target2')
116 with TestGyp.LocalEnv({'AR_host': 'my_ar_host3'}): 118 test.must_not_contain('out/Default/build.ninja', 'my_ld_host2')
117 test.run_gyp('make_global_settings_ar.gyp',
118 '-Dcustom_ar_target=my_ar_target3')
119 verify_ar_target(test, ar='my_ar_target3', rel_path=True)
120 verify_ar_host(test, ar='my_ar_host3', rel_path=False)
121 119
122 120
123 test.pass_test() 121 test.pass_test()
OLDNEW
« no previous file with comments | « no previous file | test/make_global_settings/ld/make_global_settings_ld.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698