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

Unified Diff: tools/dartium/test.py

Issue 244643006: Migrate dartium_tools from chrome branch to dart repo (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: tools/dartium/test.py
diff --git a/tools/dartium/test.py b/tools/dartium/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..75b85d511e2896e40afcdc6d78fde57790ba3214
--- /dev/null
+++ b/tools/dartium/test.py
@@ -0,0 +1,242 @@
+#!/usr/bin/env python
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+
+import fnmatch
+import optparse
+import os
+import re
+import shutil
+import subprocess
+import sys
+import urllib
+import utils
+
+SCRIPT_TAG = '<script type="application/%s" src="%s"></script>\n'
+
+DART_TEST_DIR = os.path.join('dart')
+
+DART_VM_FLAGS = [
+ ]
+DART_VM_CHECKED_FLAGS = DART_VM_FLAGS + [
+ '--enable_type_checks',
+ '--warning_as_error',
+ ]
+
+TEST_DRT_FLAGS = [
+ '--compiler=none',
+ '--runtime=drt',
+ '--drt=%(drt)s',
+ '--mode=%(mode)s',
+ '--arch=%(arch)s',
+ '--build-directory=%(build_dir)s',
+ '--report',
+ '--time',
+ ]
+
+TEST_DRT_CHECKED_FLAGS = TEST_DRT_FLAGS + [
+ '--checked',
+ ]
+
+TEST_DARTIUM_FLAGS = [
+ '--compiler=none',
+ '--runtime=dartium',
+ '--dartium=%(dartium)s',
+ '--mode=%(mode)s',
+ '--build-directory=%(build_dir)s',
+ '--report',
+ '--time',
+ ]
+
+TEST_DARTIUM_CHECKED_FLAGS = TEST_DARTIUM_FLAGS + [
+ '--checked',
+ ]
+
+TEST_INFO = {
+ 'dartium': {
+ 'core': {
+ 'checked': TEST_DARTIUM_CHECKED_FLAGS,
+ 'unchecked': TEST_DARTIUM_FLAGS,
+ },
+ },
+ 'drt': {
+ 'layout': {
+ 'checked': DART_VM_CHECKED_FLAGS,
+ 'unchecked': DART_VM_FLAGS,
+ },
+ 'core': {
+ 'checked': TEST_DRT_CHECKED_FLAGS,
+ 'unchecked': TEST_DRT_FLAGS,
+ },
+ },
+}
+
+COMPONENTS = TEST_INFO.keys()
+SUITES = [ 'layout', 'core' ]
+
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('--mode', dest='mode',
+ action='store', type='string',
+ help='Test mode (Debug or Release)')
+ parser.add_option('--component', dest='component',
+ default='drt',
+ action='store', type='string',
+ help='Execution mode (dartium, drt or all)')
+ parser.add_option('--suite', dest='suite',
+ default='all',
+ action='store', type='string',
+ help='Test suite (layout, core, or all)')
+ parser.add_option('--arch', dest='arch',
+ default='ia32',
+ action='store', type='string',
+ help='Target architecture')
+ parser.add_option('--no-show-results', action='store_false',
+ default=True, dest='show_results',
+ help='Don\'t launch a browser with results '
+ 'after the tests are done')
+ parser.add_option('--checked', action='store_true',
+ default=False, dest='checked',
+ help='Run Dart code in checked mode')
+ parser.add_option('--unchecked', action='store_true',
+ default=False, dest='unchecked',
+ help='Run Dart code in unchecked mode')
+ parser.add_option('--buildbot', action='store_true',
+ default=False, dest='buildbot',
+ help='Print results in buildbot format')
+ parser.add_option('--layout-test', dest='layout_test',
+ default=None,
+ action='store', type='string',
+ help='Single layout test to run if set')
+ parser.add_option('--test-filter', dest='test_filter',
+ default=None,
+ action='store', type='string',
+ help='Test filter for core tests')
+ parser.add_option('--win-ninja-build', action='store_true',
+ default=False, dest='is_win_ninja',
+ help='We are on windows and use ninja for building.')
+
+ (options, args) = parser.parse_args()
+ mode = options.mode
+ if not (mode in ['Debug', 'Release']):
+ raise Exception('Invalid test mode')
+
+ if options.component == 'all':
+ components = COMPONENTS
+ elif not (options.component in COMPONENTS):
+ raise Exception('Invalid component %s' % options.component)
+ else:
+ components = [ options.component ]
+
+ if options.suite == 'all':
+ suites = SUITES
+ elif not (options.suite in SUITES):
+ raise Exception('Invalid suite %s' % options.suite)
+ else:
+ suites = [ options.suite ]
+
+ # If --checked or --unchecked not present, run with both.
+ checkmodes = ['unchecked', 'checked']
+ if options.checked or options.unchecked:
+ checkmodes = []
+ if options.unchecked: checkmodes.append('unchecked')
+ if options.checked: checkmodes.append('checked')
+
+ pathname = os.path.dirname(sys.argv[0])
+ fullpath = os.path.abspath(pathname)
+ srcpath = os.path.normpath(os.path.join(fullpath, '..'))
+
+ test_mode = ''
+ timeout = 30000
+ if mode == 'Debug':
+ test_mode = '--debug'
+ timeout = 60000
+
+ show_results = ''
+ if not options.show_results:
+ show_results = '--no-show-results'
+
+ host_os = utils.guessOS()
+ if options.is_win_ninja:
+ host_os = 'win-ninja'
+ build_root, drt_path, dartium_path, dart_path = {
+ 'mac': (
+ 'out',
+ os.path.join('Content Shell.app', 'Contents', 'MacOS', 'Content Shell'),
+ os.path.join('Chromium.app', 'Contents', 'MacOS', 'Chromium'),
+ 'dart',
+ ),
+ 'linux': ('out', 'content_shell', 'chrome', 'dart'),
+ 'win': ('out', 'content_shell.exe', 'chrome.exe', 'dart.exe'),
+ 'win-ninja': ('out', 'content_shell.exe', 'chrome.exe', 'dart.exe'),
+ }[host_os]
+
+ build_dir = os.path.join(srcpath, build_root, mode)
+
+ executable_map = {
+ 'mode': mode.lower(),
+ 'build_dir': os.path.relpath(build_dir),
+ 'drt': os.path.join(build_dir, drt_path),
+ 'dartium': os.path.join(build_dir, dartium_path),
+ 'dart': os.path.join(build_dir, dart_path),
+ 'arch': options.arch,
+ }
+
+ test_script = os.path.join(srcpath, 'webkit', 'tools', 'layout_tests',
+ 'run_webkit_tests.py')
+
+ errors = False
+ for component in components:
+ for checkmode in checkmodes:
+ # Capture errors and report at the end.
+ try:
+ if ('layout' in suites and
+ 'layout' in TEST_INFO[component] and
+ checkmode in TEST_INFO[component]['layout']):
+ # Run layout tests in this mode
+ dart_flags = ' '.join(TEST_INFO[component]['layout'][checkmode])
+
+ if options.layout_test:
+ test = os.path.join(DART_TEST_DIR, options.layout_test)
+ else:
+ test = DART_TEST_DIR
+ package_root = os.path.join(build_dir, 'packages')
+ utils.runCommand(['python',
+ test_script,
+ test_mode,
+ show_results,
+ '--time-out-ms', str(timeout),
+ # Temporary hack to fix issue with svn vs. svn.bat.
+ '--builder-name', 'BuildBot',
+ '--additional-env-var',
+ 'DART_FLAGS=%s' % dart_flags,
+ '--additional-env-var',
+ 'DART_PACKAGE_ROOT=file://%s' % package_root,
+ test])
+
+ # Run core dart tests
+ if ('core' in suites and
+ 'core' in TEST_INFO[component] and
+ checkmode in TEST_INFO[component]['core']):
+ core_flags = TEST_INFO[component]['core'][checkmode]
+ core_flags = map(lambda flag: flag % executable_map, core_flags)
+ if options.buildbot:
+ core_flags = ['--progress=buildbot'] + core_flags
+ tester = os.path.join(srcpath, 'dart', 'tools', 'test.py')
+ test_filter = [options.test_filter] if options.test_filter else []
+ utils.runCommand(['python', tester] + core_flags + test_filter)
+ except (StandardError, Exception) as e:
+ print 'Fail: ' + str(e)
+ errors = True
+
+ if errors:
+ return 1
+ else:
+ return 0
+
+if __name__ == '__main__':
+ try:
+ sys.exit(main())
+ except StandardError as e:
+ print 'Fail: ' + str(e)
+ sys.exit(1)

Powered by Google App Engine
This is Rietveld 408576698