5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
17 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
28 Verify that we can import and use the contents of Platform and Tool
37 test = TestSCons.TestSCons()
39 SConstruct_path = test.workpath('SConstruct')
53 for platform in platforms:
54 test.write('SConstruct', """
55 print "Platform %(platform)s"
56 env = Environment(platform = '%(platform)s')
57 import SCons.Platform.%(platform)s
58 x = SCons.Platform.%(platform)s.generate
63 # Can't import '386asm' everywhere due to Windows registry dependency.
108 # Can't import 'linkloc' everywhere due to Windows registry dependency.
146 if sys.platform == 'win32':
152 # Intel no compiler warning..
153 intel_no_compiler_warning = """
154 scons: warning: Failed to find Intel compiler for version='None', abi='[^']*'
155 """ + TestSCons.file_expr
157 # Intel no top dir warning.
158 intel_no_top_dir_warning = """
159 scons: warning: Can't find Intel compiler top dir for version='None', abi='[^']*'
160 """ + TestSCons.file_expr
162 # Intel no license directory warning
163 intel_license_warning = re.escape("""
164 scons: warning: Intel license dir was not found. Tried using the INTEL_LICENSE_FILE environment variable (), the registry () and the default path (C:\Program Files\Common Files\Intel\Licenses). Using the default path as a last resort.
165 """) + TestSCons.file_expr
168 re.compile(intel_license_warning),
169 re.compile(intel_no_compiler_warning),
170 re.compile(intel_no_compiler_warning + intel_license_warning),
171 re.compile(intel_no_top_dir_warning),
172 re.compile(intel_no_top_dir_warning + intel_license_warning),
175 moc = test.where_is('moc')
179 qtdir = os.path.dirname(os.path.dirname(moc))
182 scons: warning: Could not detect qt, using moc executable as a hint (QTDIR=%(qtdir)s)
188 scons: warning: Could not detect qt, using empty QTDIR
191 qt_warnings = [ re.compile(qt_err + TestSCons.file_expr) ]
194 'icl' : intel_warnings,
195 'intelc' : intel_warnings,
199 # An SConstruct for importing Tool names that have illegal characters
200 # for Python variable names.
201 indirect_import = """\
202 print "Tool %(tool)s (indirect)"
203 env = Environment(tools = ['%(tool)s'])
205 SCons = __import__('SCons.Tool.%(tool)s', globals(), locals(), [])
206 m = getattr(SCons.Tool, '%(tool)s')
211 # An SConstruct for importing Tool names "normally."
213 print "Tool %(tool)s (direct)"
214 env = Environment(tools = ['%(tool)s'])
216 import SCons.Tool.%(tool)s
218 SCons.Tool.%(tool)s.generate(env)
223 if tool[0] in '0123456789' or '+' in tool:
224 test.write('SConstruct', indirect_import % locals())
226 test.write('SConstruct', direct_import % locals())
227 test.run(stderr=None)
228 stderr = test.stderr()
231 for expression in error_output.get(tool, []):
232 if expression.match(stderr):
236 print "Failed importing '%s', stderr:" % tool
238 failures.append(tool)
240 test.fail_test(len(failures))