// 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'; import 'package:flutter_devicelab/framework/task_result.dart'; 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 overridden maven URL'); mavenUrl = await eval( gradlewExecutable, <String>['printEngineMavenUrl', '-q'], environment: <String, String>{ 'FLUTTER_STORAGE_BASE_URL': 'https://my.special.proxy', } ); if (mavenUrl != 'https://my.special.proxy/download.flutter.io') { throw TaskResult.failure('Expected overridden Android engine maven ' 'dependency URL to resolve to proxy location ' 'https://my.special.proxy/download.flutter.io. Got ' '$mavenUrl instead'); } }); }); return TaskResult.success(null); }); }