15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -*- python -*- 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import json 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import posixpath 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Import('env') 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)env.ComponentLibrary('testrunner_browser', ['test_runner_ppapi.c']) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dest_copy = env.Replicate('$STAGING_DIR', 'test_runner.html') 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)env.Replicate('$STAGING_DIR', 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '${SCONSTRUCT_DIR}/tools/browser_tester/browserdata/nacltest.js') 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def AddTest(env, test_name, exe_list, parallel=False): 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_files = [env.File('${STAGING_DIR}/%s${PROGSUFFIX}' 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) % env.ProgramNameForNmf(exe_name)) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for exe_name in exe_list] 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def WriteManifestList(target, source, env): 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nmf_names = ['%s.nmf' % exe_name for exe_name in exe_list] 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data = ('// This file is automatically generated\n' 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'var G_NMF_TEST_LIST = %s;\n' % json.dumps(nmf_names)) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fh = open(target[0].abspath, 'w') 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fh.write(data) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fh.close() 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nmf_list_js = env.Command(['%s_nmf_test_list.js' % test_name], [], 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteManifestList)[0] 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Scons does not track the dependency of nmf_list_js on exe_list, so 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we must always recreate nmf_list_js when it is used. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) env.AlwaysBuild(nmf_list_js) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) node = env.PPAPIBrowserTester( 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '%s.out' % test_name, url='test_runner.html', 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nmf_names=exe_list, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files=[env.File('test_runner.html')] + test_files, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) map_files=[('nmf_test_list.js', nmf_list_js)], 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_args=[('parallel', int(parallel))]) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Disabled on Valgrind because of multiple nexes. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # TODO(eugenis): enable when Valgrind learns to autodetect the nexe name 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) env.AddNodeToTestSuite(node, ['chrome_browser_tests'], test_name, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disable_irt_suffix=True, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_broken=env.PPAPIBrowserTesterIsBroken() or 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) env.Bit('running_on_valgrind') or 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # inbrowser_test_runner_parallel is flaky on 32 bit windows 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # (maybe http://code.google.com/p/chromium/issues/detail?id=120355 ?) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parallel) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if not env.Bit('tests_use_irt'): 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Return() 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exe_list = env['TESTS_TO_RUN_INBROWSER'] 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AddTest(env, 'run_inbrowser_test_runner', exe_list, parallel=False) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AddTest(env, 'run_inbrowser_test_runner_parallel', exe_list, parallel=True) 59