mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
91 lines
4.6 KiB
Dart
91 lines
4.6 KiB
Dart
// Copyright 2017 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 'package:flutter_tools/src/android/gradle.dart';
|
|
import 'package:flutter_tools/src/base/file_system.dart';
|
|
import 'package:flutter_tools/src/build_info.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
|
|
const String _kBuildDirectory = '/build/app/outputs';
|
|
|
|
void main() {
|
|
group('gradle project', () {
|
|
GradleProject projectFrom(String properties) => new GradleProject.fromAppProperties(properties);
|
|
|
|
test('should extract build directory from app properties', () {
|
|
final GradleProject project = projectFrom('''
|
|
someProperty: someValue
|
|
buildDir: /Users/some/apps/hello/build/app
|
|
someOtherProperty: someOtherValue
|
|
''');
|
|
expect(project.apkDirectory, fs.path.normalize('/Users/some/apps/hello/build/app/outputs/apk'));
|
|
});
|
|
test('should extract default build variants from app properties', () {
|
|
final GradleProject project = projectFrom('''
|
|
someProperty: someValue
|
|
assemble: task ':app:assemble'
|
|
assembleAndroidTest: task ':app:assembleAndroidTest'
|
|
assembleDebug: task ':app:assembleDebug'
|
|
assembleProfile: task ':app:assembleProfile'
|
|
assembleRelease: task ':app:assembleRelease'
|
|
buildDir: /Users/some/apps/hello/build/app
|
|
someOtherProperty: someOtherValue
|
|
''');
|
|
expect(project.buildTypes, <String>['debug', 'profile', 'release']);
|
|
expect(project.productFlavors, isEmpty);
|
|
});
|
|
test('should extract custom build variants from app properties', () {
|
|
final GradleProject project = projectFrom('''
|
|
someProperty: someValue
|
|
assemble: task ':app:assemble'
|
|
assembleAndroidTest: task ':app:assembleAndroidTest'
|
|
assembleDebug: task ':app:assembleDebug'
|
|
assembleFree: task ':app:assembleFree'
|
|
assembleFreeAndroidTest: task ':app:assembleFreeAndroidTest'
|
|
assembleFreeDebug: task ':app:assembleFreeDebug'
|
|
assembleFreeProfile: task ':app:assembleFreeProfile'
|
|
assembleFreeRelease: task ':app:assembleFreeRelease'
|
|
assemblePaid: task ':app:assemblePaid'
|
|
assemblePaidAndroidTest: task ':app:assemblePaidAndroidTest'
|
|
assemblePaidDebug: task ':app:assemblePaidDebug'
|
|
assemblePaidProfile: task ':app:assemblePaidProfile'
|
|
assemblePaidRelease: task ':app:assemblePaidRelease'
|
|
assembleProfile: task ':app:assembleProfile'
|
|
assembleRelease: task ':app:assembleRelease'
|
|
buildDir: /Users/some/apps/hello/build/app
|
|
someOtherProperty: someOtherValue
|
|
''');
|
|
expect(project.buildTypes, <String>['debug', 'profile', 'release']);
|
|
expect(project.productFlavors, <String>['free', 'paid']);
|
|
});
|
|
test('should provide apk file name for default build types', () {
|
|
final GradleProject project = new GradleProject(<String>['debug', 'profile', 'release'], <String>[], '/some/dir');
|
|
expect(project.apkFileFor(BuildInfo.debug), 'app-debug.apk');
|
|
expect(project.apkFileFor(BuildInfo.profile), 'app-profile.apk');
|
|
expect(project.apkFileFor(BuildInfo.release), 'app-release.apk');
|
|
expect(project.apkFileFor(const BuildInfo(BuildMode.release, 'unknown')), isNull);
|
|
});
|
|
test('should provide apk file name for flavored build types', () {
|
|
final GradleProject project = new GradleProject(<String>['debug', 'profile', 'release'], <String>['free', 'paid'], '/some/dir');
|
|
expect(project.apkFileFor(const BuildInfo(BuildMode.debug, 'free')), 'app-free-debug.apk');
|
|
expect(project.apkFileFor(const BuildInfo(BuildMode.release, 'paid')), 'app-paid-release.apk');
|
|
expect(project.apkFileFor(const BuildInfo(BuildMode.release, 'unknown')), isNull);
|
|
});
|
|
test('should provide assemble task name for default build types', () {
|
|
final GradleProject project = new GradleProject(<String>['debug', 'profile', 'release'], <String>[], '/some/dir');
|
|
expect(project.assembleTaskFor(BuildInfo.debug), 'assembleDebug');
|
|
expect(project.assembleTaskFor(BuildInfo.profile), 'assembleProfile');
|
|
expect(project.assembleTaskFor(BuildInfo.release), 'assembleRelease');
|
|
expect(project.assembleTaskFor(const BuildInfo(BuildMode.release, 'unknown')), isNull);
|
|
});
|
|
test('should provide assemble task name for flavored build types', () {
|
|
final GradleProject project = new GradleProject(<String>['debug', 'profile', 'release'], <String>['free', 'paid'], '/some/dir');
|
|
expect(project.assembleTaskFor(const BuildInfo(BuildMode.debug, 'free')), 'assembleFreeDebug');
|
|
expect(project.assembleTaskFor(const BuildInfo(BuildMode.release, 'paid')), 'assemblePaidRelease');
|
|
expect(project.assembleTaskFor(const BuildInfo(BuildMode.release, 'unknown')), isNull);
|
|
});
|
|
});
|
|
}
|