blob: eb863858b8b591bf77d0a2e594e54dac87830b9a [file] [log] [blame]
#!/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)