mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:39:48 +00:00
a6e3008ded
See: https://dart-review.googlesource.com/c/sdk/+/196026 TEST=Code cleanup exclusively (sorting imports); no new tests. Change-Id: Ib07a82ff418138c542d6a83cfab9aabbb285f866 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196180 Auto-Submit: Phil Quitslund <pquitslund@google.com> Reviewed-by: Phil Quitslund <pquitslund@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Phil Quitslund <pquitslund@google.com>
120 lines
3.7 KiB
Dart
120 lines
3.7 KiB
Dart
// Copyright (c) 2020, 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.
|
|
|
|
import 'dart:async';
|
|
import 'dart:convert';
|
|
import 'dart:developer';
|
|
import 'dart:io' as io;
|
|
|
|
import 'package:test/test.dart';
|
|
import 'package:vm_service/vm_service.dart';
|
|
|
|
import 'common/test_helper.dart';
|
|
|
|
Future setupFiles() async {
|
|
final dir = await io.Directory.systemTemp.createTemp('file_service');
|
|
var writingFile;
|
|
var readingFile;
|
|
|
|
void closeDown() {
|
|
if (writingFile != null) {
|
|
writingFile.closeSync();
|
|
}
|
|
if (readingFile != null) {
|
|
readingFile.closeSync();
|
|
}
|
|
dir.deleteSync(recursive: true);
|
|
}
|
|
|
|
Future<ServiceExtensionResponse> cleanup(ignored_a, ignored_b) {
|
|
closeDown();
|
|
final result = jsonEncode({'type': 'foobar'});
|
|
return Future.value(ServiceExtensionResponse.result(result));
|
|
}
|
|
|
|
Future<ServiceExtensionResponse> setup(ignored_a, ignored_b) async {
|
|
try {
|
|
final filePath = dir.path + io.Platform.pathSeparator + "file";
|
|
final f = io.File(filePath);
|
|
writingFile = await f.open(mode: io.FileMode.write);
|
|
await writingFile.writeByte(42);
|
|
await writingFile.writeByte(42);
|
|
await writingFile.writeByte(42);
|
|
|
|
final file = io.File.fromUri(io.Platform.script);
|
|
readingFile = await file.open();
|
|
await readingFile.readByte();
|
|
await readingFile.readByte();
|
|
await readingFile.readByte();
|
|
await readingFile.readByte();
|
|
await readingFile.readByte();
|
|
|
|
// The utility functions should close the files after them, so we
|
|
// don't expect the calls below to result in open files.
|
|
final writeTemp = dir.path + io.Platform.pathSeparator + "other_file";
|
|
final utilFile = io.File(writeTemp);
|
|
await utilFile.writeAsString('foobar');
|
|
final readTemp = io.File(writeTemp);
|
|
await readTemp.readAsString();
|
|
} catch (e) {
|
|
closeDown();
|
|
rethrow;
|
|
}
|
|
final result = jsonEncode({'type': 'foobar'});
|
|
return Future.value(ServiceExtensionResponse.result(result));
|
|
}
|
|
|
|
registerExtension('ext.dart.io.cleanup', cleanup);
|
|
registerExtension('ext.dart.io.setup', setup);
|
|
}
|
|
|
|
var fileTests = <IsolateTest>[
|
|
(VmService service, IsolateRef isolate) async {
|
|
final isolateId = isolate.id!;
|
|
await service.callServiceExtension(
|
|
'ext.dart.io.setup',
|
|
isolateId: isolate.id,
|
|
);
|
|
try {
|
|
final result = await service.getOpenFiles(isolateId);
|
|
expect(result, isA<OpenFileList>());
|
|
expect(result.files.length, equals(2));
|
|
final writing = await service.getOpenFileById(
|
|
isolateId,
|
|
result.files[0].id,
|
|
);
|
|
|
|
expect(writing.readBytes, 0);
|
|
expect(writing.readCount, 0);
|
|
expect(writing.writeCount, 3);
|
|
expect(writing.writeBytes, 3);
|
|
expect(writing.lastWriteTime.millisecondsSinceEpoch, greaterThan(0));
|
|
expect(writing.lastReadTime.millisecondsSinceEpoch, 0);
|
|
|
|
final reading = await service.getOpenFileById(
|
|
isolateId,
|
|
result.files[1].id,
|
|
);
|
|
expect(reading.readBytes, 5);
|
|
expect(reading.readCount, 5);
|
|
expect(reading.writeCount, 0);
|
|
expect(reading.writeBytes, 0);
|
|
expect(reading.lastWriteTime.millisecondsSinceEpoch, 0);
|
|
expect(reading.lastReadTime.millisecondsSinceEpoch, greaterThan(0));
|
|
} finally {
|
|
await service.callServiceExtension(
|
|
'ext.dart.io.cleanup',
|
|
isolateId: isolate.id,
|
|
);
|
|
}
|
|
},
|
|
];
|
|
|
|
main([args = const <String>[]]) async => runIsolateTests(
|
|
args,
|
|
fileTests,
|
|
'file_service_test.dart',
|
|
testeeBefore: setupFiles,
|
|
);
|