Line data Source code
1 : // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 2 : // for details. All rights reserved. Use of this source code is governed by a 3 : // BSD-style license that can be found in the LICENSE file. 4 : 5 : import 'package:stack_trace/stack_trace.dart'; 6 : 7 : import 'group.dart'; 8 : import 'group_entry.dart'; 9 : import 'live_test.dart'; 10 : import 'metadata.dart'; 11 : import 'suite.dart'; 12 : import 'suite_platform.dart'; 13 : 14 : /// A single test. 15 : /// 16 : /// A test is immutable and stateless, which means that it can't be run 17 : /// directly. To run one, load a live version using [Test.load] and run it using 18 : /// [LiveTest.run]. 19 : abstract class Test implements GroupEntry { 20 : @override 21 : String get name; 22 : 23 : @override 24 : Metadata get metadata; 25 : 26 : @override 27 : Trace? get trace; 28 : 29 : /// Loads a live version of this test, which can be used to run it a single 30 : /// time. 31 : /// 32 : /// [suite] is the suite within which this test is being run. If [groups] is 33 : /// passed, it's the list of groups containing this test; otherwise, it 34 : /// defaults to just containing `suite.group`. 35 : LiveTest load(Suite suite, {Iterable<Group>? groups}); 36 : 37 : @override 38 : Test? forPlatform(SuitePlatform platform); 39 : 40 0 : @override 41 : Test? filter(bool Function(Test) callback) => callback(this) ? this : null; 42 : }