1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright 2014 The Flutter 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 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('debugInstrumentAction', () {
late DebugPrintCallback originalDebugPrintCallback;
late StringBuffer printBuffer;
setUp(() {
debugInstrumentationEnabled = true;
printBuffer = StringBuffer();
originalDebugPrintCallback = debugPrint;
debugPrint = (String? message, { int? wrapWidth }) {
printBuffer.writeln(message);
};
});
tearDown(() {
debugInstrumentationEnabled = false;
debugPrint = originalDebugPrintCallback;
});
test('works with non-failing actions', () async {
final int result = await debugInstrumentAction<int>('no-op', () async {
debugPrint('action()');
return 1;
});
expect(result, 1);
expect(
printBuffer.toString(),
matches(RegExp('^action\\(\\)\nAction "no-op" took .+\$', multiLine: true)),
);
});
test('returns failing future if action throws', () async {
await expectLater(
() => debugInstrumentAction<void>('throws', () async {
await Future<void>.delayed(Duration.zero);
throw 'Error';
}),
throwsA('Error'),
);
expect(printBuffer.toString(), matches(r'^Action "throws" took .+'));
});
});
}