| # -*- python -*- |
| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import json |
| import posixpath |
| |
| Import('env') |
| |
| env.ComponentLibrary('testrunner_browser', ['test_runner_ppapi.c']) |
| |
| dest_copy = env.Replicate('$STAGING_DIR', 'test_runner.html') |
| env.Replicate('$STAGING_DIR', |
| '${SCONSTRUCT_DIR}/tools/browser_tester/browserdata/nacltest.js') |
| |
| def AddTest(env, test_name, exe_list, parallel=False): |
| test_files = [env.File('${STAGING_DIR}/%s${PROGSUFFIX}' |
| % env.ProgramNameForNmf(exe_name)) |
| for exe_name in exe_list] |
| |
| def WriteManifestList(target, source, env): |
| nmf_names = ['%s.nmf' % exe_name for exe_name in exe_list] |
| data = ('// This file is automatically generated\n' |
| 'var G_NMF_TEST_LIST = %s;\n' % json.dumps(nmf_names)) |
| fh = open(target[0].abspath, 'w') |
| fh.write(data) |
| fh.close() |
| |
| nmf_list_js = env.Command(['%s_nmf_test_list.js' % test_name], [], |
| WriteManifestList)[0] |
| # Scons does not track the dependency of nmf_list_js on exe_list, so |
| # we must always recreate nmf_list_js when it is used. |
| env.AlwaysBuild(nmf_list_js) |
| |
| node = env.PPAPIBrowserTester( |
| '%s.out' % test_name, url='test_runner.html', |
| nmf_names=exe_list, |
| files=[env.File('test_runner.html')] + test_files, |
| map_files=[('nmf_test_list.js', nmf_list_js)], |
| test_args=[('parallel', int(parallel))]) |
| |
| # Disabled on Valgrind because of multiple nexes. |
| # TODO(eugenis): enable when Valgrind learns to autodetect the nexe name |
| env.AddNodeToTestSuite(node, ['chrome_browser_tests'], test_name, |
| disable_irt_suffix=True, |
| is_broken=env.PPAPIBrowserTesterIsBroken() or |
| env.Bit('running_on_valgrind') or |
| # inbrowser_test_runner_parallel is flaky on 32 bit windows |
| # (maybe http://code.google.com/p/chromium/issues/detail?id=120355 ?) |
| parallel) |
| |
| if not env.Bit('tests_use_irt'): |
| Return() |
| |
| exe_list = env['TESTS_TO_RUN_INBROWSER'] |
| AddTest(env, 'run_inbrowser_test_runner', exe_list, parallel=False) |
| AddTest(env, 'run_inbrowser_test_runner_parallel', exe_list, parallel=True) |