1 # -*- python -*- 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 import json 7 import posixpath 8 9 Import('env') 10 11 env.ComponentLibrary('testrunner_browser', ['test_runner_ppapi.c']) 12 13 dest_copy = env.Replicate('$STAGING_DIR', 'test_runner.html') 14 env.Replicate('$STAGING_DIR', 15 '${SCONSTRUCT_DIR}/tools/browser_tester/browserdata/nacltest.js') 16 17 def AddTest(env, test_name, exe_list, parallel=False): 18 test_files = [env.File('${STAGING_DIR}/%s${PROGSUFFIX}' 19 % env.ProgramNameForNmf(exe_name)) 20 for exe_name in exe_list] 21 22 def WriteManifestList(target, source, env): 23 nmf_names = ['%s.nmf' % exe_name for exe_name in exe_list] 24 data = ('// This file is automatically generated\n' 25 'var G_NMF_TEST_LIST = %s;\n' % json.dumps(nmf_names)) 26 fh = open(target[0].abspath, 'w') 27 fh.write(data) 28 fh.close() 29 30 nmf_list_js = env.Command(['%s_nmf_test_list.js' % test_name], [], 31 WriteManifestList)[0] 32 # Scons does not track the dependency of nmf_list_js on exe_list, so 33 # we must always recreate nmf_list_js when it is used. 34 env.AlwaysBuild(nmf_list_js) 35 36 node = env.PPAPIBrowserTester( 37 '%s.out' % test_name, url='test_runner.html', 38 nmf_names=exe_list, 39 files=[env.File('test_runner.html')] + test_files, 40 map_files=[('nmf_test_list.js', nmf_list_js)], 41 test_args=[('parallel', int(parallel))]) 42 43 # Disabled on Valgrind because of multiple nexes. 44 # TODO(eugenis): enable when Valgrind learns to autodetect the nexe name 45 env.AddNodeToTestSuite(node, ['chrome_browser_tests'], test_name, 46 disable_irt_suffix=True, 47 is_broken=env.PPAPIBrowserTesterIsBroken() or 48 env.Bit('running_on_valgrind') or 49 # inbrowser_test_runner_parallel is flaky on 32 bit windows 50 # (maybe http://code.google.com/p/chromium/issues/detail?id=120355 ?) 51 parallel) 52 53 if not env.Bit('tests_use_irt'): 54 Return() 55 56 exe_list = env['TESTS_TO_RUN_INBROWSER'] 57 AddTest(env, 'run_inbrowser_test_runner', exe_list, parallel=False) 58 AddTest(env, 'run_inbrowser_test_runner_parallel', exe_list, parallel=True) 59