blob: 289adbd1cc084767685456972600311d5f4dc229 [file] [log] [blame]
// Copyright 2019 The Chromium 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 'dart:convert';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/build_runner/build_runner.dart';
import 'package:mockito/mockito.dart';
import 'package:process/process.dart';
import '../src/common.dart';
import '../src/context.dart';
void main() {
group('experimentalBuildEnabled', () {
final MockProcessManager mockProcessManager = MockProcessManager();
final MockPlatform mockPlatform = MockPlatform();
final MockFileSystem mockFileSystem = MockFileSystem();
setUp(() {
experimentalBuildEnabled = null;
});
testUsingContext('is enabled if environment variable is enabled and project '
'contains a dependency on flutter_build and build_runner', () async {
final MockDirectory projectDirectory = MockDirectory();
final MockDirectory exampleDirectory = MockDirectory();
final MockFile packagesFile = MockFile();
final MockFile pubspecFile = MockFile();
final MockFile examplePubspecFile = MockFile();
const String packages = r'''
flutter_build:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/flutter_build/lib/
build_runner:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/build_runner/lib/
example:lib/
''';
when(mockPlatform.environment).thenReturn(<String, String>{'FLUTTER_EXPERIMENTAL_BUILD': 'true'});
when(mockFileSystem.currentDirectory).thenReturn(projectDirectory);
when(mockFileSystem.isFileSync(any)).thenReturn(false);
when(projectDirectory.childFile('pubspec.yaml')).thenReturn(pubspecFile);
when(projectDirectory.childFile('.packages')).thenReturn(packagesFile);
when(projectDirectory.childDirectory('example')).thenReturn(exampleDirectory);
when(exampleDirectory.childFile('pubspec.yaml')).thenReturn(examplePubspecFile);
when(packagesFile.path).thenReturn('/test/.packages');
when(pubspecFile.path).thenReturn('/test/pubspec.yaml');
when(examplePubspecFile.path).thenReturn('/test/example/pubspec.yaml');
when(mockFileSystem.file('/test/.packages')).thenReturn(packagesFile);
when(packagesFile.readAsBytesSync()).thenReturn(utf8.encode(packages));
expect(await experimentalBuildEnabled, true);
}, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager,
Platform: () => mockPlatform,
FileSystem: () => mockFileSystem,
});
testUsingContext('is not enabled if environment variable is enabled and project '
'does not contain a dependency on flutter_build', () async {
final MockDirectory projectDirectory = MockDirectory();
final MockDirectory exampleDirectory = MockDirectory();
final MockFile packagesFile = MockFile();
final MockFile pubspecFile = MockFile();
final MockFile examplePubspecFile = MockFile();
const String packages = r'''
build_runner:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/build_runner/lib/
example:lib/
''';
when(mockPlatform.environment).thenReturn(<String, String>{'FLUTTER_EXPERIMENTAL_BUILD': 'true'});
when(mockFileSystem.currentDirectory).thenReturn(projectDirectory);
when(mockFileSystem.isFileSync(any)).thenReturn(false);
when(projectDirectory.childFile('pubspec.yaml')).thenReturn(pubspecFile);
when(projectDirectory.childFile('.packages')).thenReturn(packagesFile);
when(projectDirectory.childDirectory('example')).thenReturn(exampleDirectory);
when(exampleDirectory.childFile('pubspec.yaml')).thenReturn(examplePubspecFile);
when(packagesFile.path).thenReturn('/test/.packages');
when(pubspecFile.path).thenReturn('/test/pubspec.yaml');
when(examplePubspecFile.path).thenReturn('/test/example/pubspec.yaml');
when(mockFileSystem.file('/test/.packages')).thenReturn(packagesFile);
when(packagesFile.readAsBytesSync()).thenReturn(utf8.encode(packages));
expect(await experimentalBuildEnabled, false);
}, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager,
Platform: () => mockPlatform,
FileSystem: () => mockFileSystem,
});
testUsingContext('is not enabed if environment varable is not enabled', () async {
when(mockPlatform.environment).thenReturn(<String, String>{});
expect(await experimentalBuildEnabled, false);
}, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager,
Platform: () => mockPlatform,
FileSystem: () => mockFileSystem,
});
});
}
class MockProcessManager extends Mock implements ProcessManager {}
class MockPlatform extends Mock implements Platform {}
class MockFileSystem extends Mock implements FileSystem {}
class MockDirectory extends Mock implements Directory {}
class MockFile extends Mock implements File {}