// 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:file/file.dart'; import 'package:file/local.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:process/process.dart'; import '../src/common.dart'; /// The [FileSystem] for the integration test environment. const FileSystem fileSystem = LocalFileSystem(); /// The [Platform] for the integration test environment. const Platform platform = LocalPlatform(); /// The [ProcessManager] for the integration test environment. const ProcessManager processManager = LocalProcessManager(); /// Creates a temporary directory but resolves any symlinks to return the real /// underlying path to avoid issues with breakpoints/hot reload. /// https://github.com/flutter/flutter/pull/21741 Directory createResolvedTempDirectorySync(String prefix) { assert(prefix.endsWith('.')); final Directory tempDirectory = fileSystem.systemTempDirectory.createTempSync('flutter_$prefix'); return fileSystem.directory(tempDirectory.resolveSymbolicLinksSync()); } void writeFile(String path, String content) { fileSystem.file(path) ..createSync(recursive: true) ..writeAsStringSync(content) ..setLastModifiedSync(DateTime.now().add(const Duration(seconds: 10))); } void writePackages(String folder) { writeFile(fileSystem.path.join(folder, '.packages'), ''' test:${fileSystem.path.join(fileSystem.currentDirectory.path, 'lib')}/ '''); } void writePubspec(String folder) { writeFile(fileSystem.path.join(folder, 'pubspec.yaml'), ''' name: test dependencies: flutter: sdk: flutter '''); } Future<void> getPackages(String folder) async { final List<String> command = <String>[ fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter'), 'pub', 'get', ]; final ProcessResult result = await processManager.run(command, workingDirectory: folder); if (result.exitCode != 0) { throw Exception('flutter pub get failed: ${result.stderr}\n${result.stdout}'); } } const String kLocalEngineEnvironment = 'FLUTTER_LOCAL_ENGINE'; const String kLocalEngineLocation = 'FLUTTER_LOCAL_ENGINE_SRC_PATH'; List<String> getLocalEngineArguments() { return <String>[ if (platform.environment.containsKey(kLocalEngineEnvironment)) '--local-engine=${platform.environment[kLocalEngineEnvironment]}', if (platform.environment.containsKey(kLocalEngineLocation)) '--local-engine-src-path=${platform.environment[kLocalEngineLocation]}', ]; }