// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'dart:async'; import '../base/io.dart' show Process; /// Callbacks for reporting progress while running tests. abstract class TestWatcher { /// Called after a child process starts. /// /// If startPaused was true, the caller needs to resume in Observatory to /// start running the tests. void onStartedProcess(ProcessEvent event) {} /// Called after the tests finish but before the process exits. /// /// The child process won't exit until this method completes. /// Not called if the process died. Future<void> onFinishedTest(ProcessEvent event) async {} /// Called when the test process crashed before connecting to test harness. Future<void> onTestCrashed(ProcessEvent event) async {} /// Called if we timed out waiting for the test process to connect to test /// harness. Future<void> onTestTimedOut(ProcessEvent event) async {} } /// Describes a child process started during testing. class ProcessEvent { ProcessEvent(this.childIndex, this.process, [this.observatoryUri]); /// The index assigned when the child process was launched. /// /// Indexes are assigned consecutively starting from zero. /// When debugging, there should only be one child process so this will /// always be zero. final int childIndex; final Process process; /// The observatory Uri or null if not debugging. final Uri observatoryUri; }