android_engine_dependency_proxy_test.dart 2.61 KB
Newer Older
1 2 3 4 5 6 7 8
// Copyright 2014 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 'dart:io';

import 'package:flutter_devicelab/framework/apk_utils.dart';
import 'package:flutter_devicelab/framework/framework.dart';
9
import 'package:flutter_devicelab/framework/task_result.dart';
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
import 'package:flutter_devicelab/framework/utils.dart';
import 'package:path/path.dart' as path;

final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';

/// Tests that we respect storage proxy URLs in gradle dependencies.
Future<void> main() async {
  await task(() async {
    section('Find Java');

    final String javaHome = await findJavaHome();
    if (javaHome == null)
      return TaskResult.failure('Could not find Java');
    print('\nUsing JAVA_HOME=$javaHome');

    section('Create project');
    await runProjectTest((FlutterProject flutterProject) async {
      await inDirectory(path.join(flutterProject.rootPath, 'android'), () async {
        section('Insert gradle testing script');
        final File build = File(path.join(
            flutterProject.rootPath, 'android', 'app', 'build.gradle'));
        build.writeAsStringSync(
          '''
task printEngineMavenUrl() {
    doLast {
        println project.repositories.find { it.name == 'maven' }.url
    }
}
          ''',
          mode: FileMode.append,
          flush: true,
        );

        section('Checking default maven URL');
        String mavenUrl = await eval(
          gradlewExecutable,
          <String>['printEngineMavenUrl', '-q'],
        );

        if (mavenUrl != 'https://storage.googleapis.com/download.flutter.io') {
          throw TaskResult.failure('Expected Android engine maven dependency URL to '
          'resolve to https://storage.googleapis.com/download.flutter.io. Got '
          '$mavenUrl instead');
        }

        section('Checking overriden maven URL');
        mavenUrl = await eval(
          gradlewExecutable,
          <String>['printEngineMavenUrl', '-q'],
          environment: <String, String>{
61
            'FLUTTER_STORAGE_BASE_URL': 'https://my.special.proxy',
62 63 64 65 66 67 68 69 70 71 72 73 74 75
          }
        );

        if (mavenUrl != 'https://my.special.proxy/download.flutter.io') {
          throw TaskResult.failure('Expected overriden Android engine maven '
          'dependency URL to resolve to proxy location '
          'https://my.special.proxy/download.flutter.io. Got '
          '$mavenUrl instead');
        }
      });
    });
    return TaskResult.success(null);
  });
}