|  | #!/usr/bin/python | 
|  |  | 
|  | # Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  | """ | 
|  | Buildbot steps for testing dart2js with --dump-info turned on | 
|  | """ | 
|  | import os | 
|  | import shutil | 
|  | import sys | 
|  | import bot | 
|  | import bot_utils | 
|  |  | 
|  | utils = bot_utils.GetUtils() | 
|  | HOST_OS = utils.GuessOS() | 
|  |  | 
|  |  | 
|  | def DumpConfig(name, is_buildbot): | 
|  | """Returns info for the current buildbot. | 
|  | We only run this bot on linux, so all of this is just hard coded. | 
|  | """ | 
|  | return bot.BuildInfo('none', 'none', 'release', 'linux') | 
|  |  | 
|  |  | 
|  | def Run(args): | 
|  | print "Running: %s" % ' '.join(args) | 
|  | sys.stdout.flush() | 
|  | bot.RunProcess(args) | 
|  |  | 
|  |  | 
|  | def DumpSteps(build_info): | 
|  | build_root = utils.GetBuildRoot(HOST_OS, mode='release', arch='ia32') | 
|  | compilations_dir = os.path.join(bot_utils.DART_DIR, build_root, | 
|  | 'generated_compilations') | 
|  | tests = ['html', 'samples'] | 
|  |  | 
|  | with bot.BuildStep('Cleaning out old compilations'): | 
|  | print "Cleaning out %s" % compilations_dir | 
|  | shutil.rmtree(compilations_dir, ignore_errors=True) | 
|  |  | 
|  | with utils.TempDir() as temp_dir: | 
|  | normal_compilations = os.path.join(temp_dir, 'normal') | 
|  | dump_compilations = os.path.join(temp_dir, 'dump') | 
|  | normal_compilation_command = [ | 
|  | sys.executable, './tools/test.py', '--arch=ia32', | 
|  | '--mode=%s' % build_info.mode, '-cdart2js', '-rnone', '--time', | 
|  | '--use-sdk', '--report', '--progress=buildbot', '-v' | 
|  | ] + tests | 
|  | with bot.BuildStep('Compiling without dump info'): | 
|  | Run(normal_compilation_command) | 
|  | pass | 
|  |  | 
|  | with bot.BuildStep('Store normal compilation artifacts'): | 
|  | args = ['mv', compilations_dir, normal_compilations] | 
|  | Run(args) | 
|  |  | 
|  | with bot.BuildStep('Compiling with dump info'): | 
|  | args = normal_compilation_command + [ | 
|  | '--dart2js-options=--dump-info' | 
|  | ] | 
|  | Run(args) | 
|  |  | 
|  | with bot.BuildStep('Store normal compilation artifacts'): | 
|  | args = ['mv', compilations_dir, dump_compilations] | 
|  | Run(args) | 
|  |  | 
|  | with bot.BuildStep('Compare outputs'): | 
|  | args = [ | 
|  | 'diff', '-rq', '-x', '*\.json', normal_compilations, | 
|  | dump_compilations | 
|  | ] | 
|  | # Diff will return non zero and we will throw if there are any differences | 
|  | Run(args) | 
|  |  | 
|  | with bot.BuildStep('Validate dump files'): | 
|  | # Do whatever you like :-), files are in dump_compilations | 
|  | pass | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | bot.RunBot(DumpConfig, DumpSteps) |