Revert "Write timelines to separate files (#88473)" (#88594)

This reverts commit fa83fefa42aee031adb6866484f70bafedc4311a.
This commit is contained in:
Dan Field 2021-08-20 11:57:32 -07:00 committed by GitHub
parent a7f8687d23
commit d5d8265079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 48 deletions

View File

@ -297,19 +297,12 @@ https://flutter.dev/docs/testing/integration-tests#testing-on-firebase-test-lab
///
/// The `streams` and `retainPriorEvents` parameters are passed as-is to
/// [traceTimeline].
///
/// The `reportKey` must not be `'screenshots'`, which is reserved for
/// screenshots created by
/// [IntegrationTestWidgetsFlutterBinding.takeScreenshot].
Future<void> traceAction(
Future<dynamic> Function() action, {
List<String> streams = const <String>['all'],
bool retainPriorEvents = false,
String reportKey = 'timeline',
}) async {
if (reportKey == 'screenshots') {
throw ArgumentError('The "screenshots" reportKey is reserved.');
}
final vm.Timeline timeline = await traceTimeline(
action,
streams: streams,

View File

@ -24,8 +24,7 @@ String testOutputsDirectory =
typedef ResponseDataCallback = FutureOr<void> Function(Map<String, dynamic>?);
/// Writes a json-serializable data to
/// [testOutputsDirectory]/`testOutputFilename_<key>.json`, where key is the
/// name provided as the report key for the response data.
/// [testOutputsDirectory]/`testOutputFilename.json`.
///
/// This is the default `responseDataCallback` in [integrationDriver].
Future<void> writeResponseData(
@ -33,20 +32,15 @@ Future<void> writeResponseData(
String testOutputFilename = 'integration_response_data',
String? destinationDirectory,
}) async {
if (data == null) {
return;
}
assert(testOutputFilename != null);
destinationDirectory ??= testOutputsDirectory;
await fs.directory(destinationDirectory).create(recursive: true);
for (final String key in data.keys.where((String key) => key != 'screenshots')) {
final File file = fs.file(path.join(
destinationDirectory,
'${testOutputFilename}_$key.json',
));
final String resultString = _encodeJson(data[key], true);
await file.writeAsString(resultString);
}
final File file = fs.file(path.join(
destinationDirectory,
'$testOutputFilename.json',
));
final String resultString = _encodeJson(data, true);
await file.writeAsString(resultString);
}
/// Adaptor to run an integration test using `flutter drive`.
@ -101,6 +95,6 @@ Future<void> integrationDriver({
const JsonEncoder _prettyEncoder = JsonEncoder.withIndent(' ');
String _encodeJson(Object? jsonObject, bool pretty) {
String _encodeJson(Map<String, dynamic>? jsonObject, bool pretty) {
return pretty ? _prettyEncoder.convert(jsonObject) : json.encode(jsonObject);
}

View File

@ -1,27 +0,0 @@
// 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_driver/flutter_driver.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test_driver.dart';
import 'package:path/path.dart' as path;
void main() {
useMemoryFileSystemForTesting();
test('Writes multiple files for each timeline', () async {
final String outDir = fs.systemTempDirectory.path;
await writeResponseData(
<String, dynamic>{
'timeline_a': <String, dynamic>{},
'timeline_b': <String, dynamic>{},
'screenshots': <String, dynamic>{},
},
destinationDirectory: outDir,
);
expect(fs.file(path.join(outDir, 'integration_response_data_timeline_a.json')).existsSync(), true);
expect(fs.file(path.join(outDir, 'integration_response_data_timeline_b.json')).existsSync(), true);
expect(fs.file(path.join(outDir, 'integration_response_data_screenshots.json')).existsSync(), false);
});
}