// 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/memory.dart'; import 'package:file_testing/file_testing.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/commands/update_packages.dart'; import '../src/common.dart'; // An example pubspec.yaml from flutter, not necessary for it to be up to date. const String kFlutterPubspecYaml = r''' name: flutter author: Flutter Authors <flutter-dev@googlegroups.com> description: A framework for writing Flutter applications homepage: http://flutter.dev environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. sdk: ">=2.2.2 <3.0.0" dependencies: # To update these, use "flutter update-packages --force-upgrade". collection: 1.14.11 meta: 1.1.8 typed_data: 1.1.6 vector_math: 2.0.8 sky_engine: sdk: flutter dev_dependencies: flutter_test: sdk: flutter flutter_goldens: sdk: flutter mockito: 4.1.1 archive: 2.0.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" # PUBSPEC CHECKSUM: 1437 '''; void main() { testWithoutContext('createTemporaryFlutterSdk creates an unpinned flutter SDK', () { final FileSystem fileSystem = MemoryFileSystem.test(); // Setup simplified FLutter SDK. final Directory flutterSdk = fileSystem.directory('flutter') ..createSync(); // Create version file flutterSdk.childFile('version').writeAsStringSync('1.2.3'); // Create a pubspec file final Directory flutter = flutterSdk .childDirectory('packages') .childDirectory('flutter') ..createSync(recursive: true); flutter .childFile('pubspec.yaml') .writeAsStringSync(kFlutterPubspecYaml); // Create already parsed pubspecs. final PubspecYaml flutterPubspec = PubspecYaml(flutter); final Directory result = createTemporaryFlutterSdk( fileSystem, flutterSdk, <PubspecYaml>[flutterPubspec], ); expect(result, exists); // The version file exists. expect(result.childFile('version'), exists); expect(result.childFile('version').readAsStringSync(), '1.2.3'); // The sky_engine package exists expect(fileSystem.directory('${result.path}/bin/cache/pkg/sky_engine'), exists); // The flutter pubspec exists final File pubspecFile = fileSystem.file('${result.path}/packages/flutter/pubspec.yaml'); expect(pubspecFile, exists); // The flutter pubspec contains `any` dependencies. final PubspecYaml outputPubspec = PubspecYaml(pubspecFile.parent); expect(outputPubspec.name, 'flutter'); expect(outputPubspec.dependencies.first.name, 'collection'); expect(outputPubspec.dependencies.first.version, 'any'); }); }