Test update_packages for git packages (#61127)

This commit is contained in:
Dan Field 2020-07-08 19:31:02 -07:00 committed by GitHub
parent debb3a5d28
commit c6fd42499a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 1 deletions

View file

@ -662,6 +662,9 @@ class PubspecYaml {
lastDependency._lockIsOverride = section == Section.dependencyOverrides;
do {
index += 1;
if (index == lines.length) {
throw StateError('Invalid pubspec.yaml: a "git" dependency section terminated early.');
}
line = lines[index];
lastDependency._lockLine += '\n$line';
} while (line.startsWith(' '));

View file

@ -30,6 +30,11 @@ dependencies:
sky_engine:
sdk: flutter
gallery:
git:
url: https://github.com/flutter/gallery.git
ref: d00362e6bdd0f9b30bba337c358b9e4a6e4ca950
dev_dependencies:
flutter_test:
sdk: flutter
@ -42,11 +47,35 @@ dev_dependencies:
# PUBSPEC CHECKSUM: 1437
''';
const String kInvalidGitPubspec = '''
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
gallery:
git:
''';
void main() {
testWithoutContext('createTemporaryFlutterSdk creates an unpinned flutter SDK', () {
final FileSystem fileSystem = MemoryFileSystem.test();
// Setup simplified FLutter SDK.
// Setup simplified Flutter SDK.
final Directory flutterSdk = fileSystem.directory('flutter')
..createSync();
// Create version file
@ -63,6 +92,15 @@ void main() {
// Create already parsed pubspecs.
final PubspecYaml flutterPubspec = PubspecYaml(flutter);
final PubspecDependency gitDependency = flutterPubspec.dependencies.whereType<PubspecDependency>().firstWhere((PubspecDependency dep) => dep.kind == DependencyKind.git);
expect(
gitDependency.lockLine,
'''
git:
url: https://github.com/flutter/gallery.git
ref: d00362e6bdd0f9b30bba337c358b9e4a6e4ca950
''',
);
final Directory result = createTemporaryFlutterSdk(
fileSystem,
flutterSdk,
@ -88,4 +126,27 @@ void main() {
expect(outputPubspec.dependencies.first.name, 'collection');
expect(outputPubspec.dependencies.first.version, 'any');
});
testWithoutContext('Throws a StateError on a malformed git: reference', () {
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(kInvalidGitPubspec);
expect(
() => PubspecYaml(flutter),
throwsStateError,
);
});
}