// 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('dart', const ['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('flutter', const ['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('flutter', const ['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( 'flutter.bat', const ['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(MockProcess(exitCode: 1), ['pub', 'get']) ]; final bool result = await runPubGet(package, processRunner, platform); expect(result, false); }); }