mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
6b444c4dd7
Integration tests must only go through the real file system/process manager/platform. The global indirection makes this code harder to understand than if it directly referred to the concrete instances that are being used. Update the integration shard to use a const instance of a LocalFIleSystem, LocalProcessManager, and LocalPlatform. Remove global usage and apply testWithoutContext.
107 lines
2.2 KiB
Dart
107 lines
2.2 KiB
Dart
// 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 '../test_utils.dart';
|
|
import 'project.dart';
|
|
|
|
/// Spawns a background isolate that prints a debug message.
|
|
class BackgroundProject extends Project {
|
|
|
|
@override
|
|
final String pubspec = '''
|
|
name: test
|
|
environment:
|
|
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
''';
|
|
|
|
@override
|
|
final String main = r'''
|
|
import 'dart:async';
|
|
import 'dart:isolate';
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
void main() {
|
|
Isolate.spawn<void>(background, null, debugName: 'background');
|
|
TestMain();
|
|
}
|
|
|
|
void background(void message) {
|
|
TestIsolate();
|
|
}
|
|
|
|
class TestMain {
|
|
TestMain() {
|
|
debugPrint('Main thread');
|
|
}
|
|
}
|
|
|
|
class TestIsolate {
|
|
TestIsolate() {
|
|
debugPrint('Isolate thread');
|
|
}
|
|
}
|
|
''';
|
|
|
|
void updateTestIsolatePhrase(String message) {
|
|
final String newMainContents = main.replaceFirst('Isolate thread', message);
|
|
writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents);
|
|
}
|
|
}
|
|
|
|
// Spawns a background isolate that repeats a message.
|
|
class RepeatingBackgroundProject extends Project {
|
|
|
|
@override
|
|
final String pubspec = '''
|
|
name: test
|
|
environment:
|
|
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
''';
|
|
|
|
@override
|
|
final String main = r'''
|
|
import 'dart:async';
|
|
import 'dart:isolate';
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
void main() {
|
|
Isolate.spawn<void>(background, null, debugName: 'background');
|
|
TestMain();
|
|
}
|
|
|
|
void background(void message) {
|
|
Timer.periodic(const Duration(milliseconds: 500), (Timer timer) => TestIsolate());
|
|
}
|
|
|
|
class TestMain {
|
|
TestMain() {
|
|
debugPrint('Main thread');
|
|
}
|
|
}
|
|
|
|
class TestIsolate {
|
|
TestIsolate() {
|
|
debugPrint('Isolate thread');
|
|
}
|
|
}
|
|
''';
|
|
|
|
void updateTestIsolatePhrase(String message) {
|
|
final String newMainContents = main.replaceFirst('Isolate thread', message);
|
|
writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents);
|
|
}
|
|
}
|