#!/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)