mirror of
https://github.com/flutter/packages.git
synced 2025-06-07 20:09:23 +08:00

Extracts common logic for running `pub get`, and switches commands to use it. The common logic always uses `flutter pub get` for Flutter packages, rather than `dart pub get`, since the latter will fail if someone has a non-Flutter `dart` in their path before `flutter` (e.g., Dart team members contributing PRs).
105 lines
3.2 KiB
Dart
105 lines
3.2 KiB
Dart
// Copyright 2013 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/memory.dart';
|
|
import 'package:flutter_plugin_tools/src/common/pub_utils.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import '../mocks.dart';
|
|
import '../util.dart';
|
|
|
|
void main() {
|
|
late FileSystem fileSystem;
|
|
late Directory packagesDir;
|
|
late RecordingProcessRunner processRunner;
|
|
|
|
setUp(() {
|
|
fileSystem = MemoryFileSystem();
|
|
packagesDir = createPackagesDirectory(fileSystem: fileSystem);
|
|
processRunner = RecordingProcessRunner();
|
|
});
|
|
|
|
test('runs with Dart for a non-Flutter package by default', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir);
|
|
final MockPlatform platform = MockPlatform();
|
|
|
|
await runPubGet(package, processRunner, platform);
|
|
|
|
expect(
|
|
processRunner.recordedCalls,
|
|
orderedEquals(<ProcessCall>[
|
|
ProcessCall('dart', const <String>['pub', 'get'], package.path),
|
|
]));
|
|
});
|
|
|
|
test('runs with Flutter for a Flutter package by default', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir, isFlutter: true);
|
|
final MockPlatform platform = MockPlatform();
|
|
|
|
await runPubGet(package, processRunner, platform);
|
|
|
|
expect(
|
|
processRunner.recordedCalls,
|
|
orderedEquals(<ProcessCall>[
|
|
ProcessCall('flutter', const <String>['pub', 'get'], package.path),
|
|
]));
|
|
});
|
|
|
|
test('runs with Flutter for a Dart package when requested', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir);
|
|
final MockPlatform platform = MockPlatform();
|
|
|
|
await runPubGet(package, processRunner, platform, alwaysUseFlutter: true);
|
|
|
|
expect(
|
|
processRunner.recordedCalls,
|
|
orderedEquals(<ProcessCall>[
|
|
ProcessCall('flutter', const <String>['pub', 'get'], package.path),
|
|
]));
|
|
});
|
|
|
|
test('uses the correct Flutter command on Windows', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir, isFlutter: true);
|
|
final MockPlatform platform = MockPlatform(isWindows: true);
|
|
|
|
await runPubGet(package, processRunner, platform);
|
|
|
|
expect(
|
|
processRunner.recordedCalls,
|
|
orderedEquals(<ProcessCall>[
|
|
ProcessCall(
|
|
'flutter.bat', const <String>['pub', 'get'], package.path),
|
|
]));
|
|
});
|
|
|
|
test('reports success', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir);
|
|
final MockPlatform platform = MockPlatform();
|
|
|
|
final bool result = await runPubGet(package, processRunner, platform);
|
|
|
|
expect(result, true);
|
|
});
|
|
|
|
test('reports failure', () async {
|
|
final RepositoryPackage package =
|
|
createFakePackage('a_package', packagesDir);
|
|
final MockPlatform platform = MockPlatform();
|
|
|
|
processRunner.mockProcessesForExecutable['dart'] = <FakeProcessInfo>[
|
|
FakeProcessInfo(MockProcess(exitCode: 1), <String>['pub', 'get'])
|
|
];
|
|
|
|
final bool result = await runPubGet(package, processRunner, platform);
|
|
|
|
expect(result, false);
|
|
});
|
|
}
|