#!/usr/bin/env python3 # Copyright (c) 2019, 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. """Kernel specific presubmit script. See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details about the presubmit API built into gcl. """ import imp import os.path import subprocess USE_PYTHON3 = True def runSmokeTest(input_api, output_api): hasChangedFiles = False for git_file in input_api.AffectedTextFiles(): filename = git_file.AbsoluteLocalPath() if filename.endswith(".dart"): hasChangedFiles = True break if hasChangedFiles: local_root = input_api.change.RepositoryRoot() utils = imp.load_source('utils', os.path.join(local_root, 'tools', 'utils.py')) dart = os.path.join(utils.CheckedInSdkPath(), 'bin', 'dart') smoke_test = os.path.join(local_root, 'pkg', 'kernel', 'tool', 'smoke_test_quick.dart') windows = utils.GuessOS() == 'win32' if windows: dart += '.exe' if not os.path.isfile(dart): print('WARNING: dart not found: %s' % dart) return [] if not os.path.isfile(smoke_test): print('WARNING: kernel smoke test not found: %s' % smoke_test) return [] args = [dart, smoke_test] process = subprocess.Popen( args, stdout=subprocess.PIPE, stdin=subprocess.PIPE) outs, _ = process.communicate() if process.returncode != 0: return [output_api.PresubmitError( 'Kernel smoke test failure(s):', long_text=outs)] return [] def CheckChangeOnCommit(input_api, output_api): return runSmokeTest(input_api, output_api) def CheckChangeOnUpload(input_api, output_api): return runSmokeTest(input_api, output_api)