From 2e3574dd1828aef31b2e5cdaeb3e1376ea8001be Mon Sep 17 00:00:00 2001 From: sakal Date: Tue, 9 May 2017 02:10:57 -0700 Subject: [PATCH] Test for Gradle project generation. BUG=webrtc:7608 Review-Url: https://codereview.webrtc.org/2858043006 Cr-Commit-Position: refs/heads/master@{#18063} --- DEPS | 5 ++ .../androidtests/gradle_project_test.py | 74 +++++++++++++++++++ .../androidtests/third_party/.gitignore | 3 + .../androidtests/third_party/README.webrtc | 10 +++ 4 files changed, 92 insertions(+) create mode 100644 webrtc/examples/androidtests/gradle_project_test.py create mode 100644 webrtc/examples/androidtests/third_party/.gitignore create mode 100644 webrtc/examples/androidtests/third_party/README.webrtc diff --git a/DEPS b/DEPS index 7d22dc560b..98381c8192 100644 --- a/DEPS +++ b/DEPS @@ -114,6 +114,11 @@ deps_os = { Var('chromium_git') + '/external/robolectric.git' + '@' + '2a0b6ba221c14f3371813a676ce06143353e448d', 'src/third_party/ub-uiautomator/lib': Var('chromium_git') + '/chromium/third_party/ub-uiautomator.git' + '@' + '00270549ce3161ae72ceb24712618ea28b4f9434', + + # Gradle 3.5.0. Used for testing Android Studio project generation for WebRTC. + 'src/webrtc/examples/androidtests/third_party/gradle': + Var('chromium_git') + '/external/github.com/gradle/gradle.git' + '@' + + 'b762622a185d59ce0cfc9cbc6ab5dd22469e18a6', }, 'ios': { 'src/ios': diff --git a/webrtc/examples/androidtests/gradle_project_test.py b/webrtc/examples/androidtests/gradle_project_test.py new file mode 100644 index 0000000000..07ae570367 --- /dev/null +++ b/webrtc/examples/androidtests/gradle_project_test.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +""" +This scripts tests creating an Android Studio project using the +generate_gradle.py script and making a debug build using it. + +It expect to be given the webrtc output build directory as the first argument +all other arguments are optional. +""" + +import argparse +import logging +import os +import shutil +import subprocess +import sys +import tempfile + + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir, + os.pardir)) +GENERATE_GRADLE_SCRIPT = os.path.join(SRC_DIR, + 'build/android/gradle/generate_gradle.py') +GRADLEW_BIN = os.path.join(SCRIPT_DIR, 'third_party/gradle/gradlew') + + +def _RunCommand(argv, cwd=SRC_DIR, **kwargs): + logging.info('Running %r', argv) + subprocess.check_call(argv, cwd=cwd, **kwargs) + + +def _ParseArgs(): + parser = argparse.ArgumentParser( + description='Test generating Android gradle project.') + parser.add_argument('build_dir_android', + help='The path to the build directory for Android.') + parser.add_argument('--project_dir', + help='A temporary directory to put the output.') + + args = parser.parse_args() + return args + + +def main(): + logging.basicConfig(level=logging.INFO) + args = _ParseArgs() + + project_dir = args.project_dir + if not project_dir: + project_dir = tempfile.mkdtemp() + + output_dir = os.path.abspath(args.build_dir_android) + project_dir = os.path.abspath(project_dir) + + try: + _RunCommand([GENERATE_GRADLE_SCRIPT, '--output-directory', output_dir, + '--target', '//webrtc/examples:AppRTCMobile', + '--project-dir', project_dir, + '--use-gradle-process-resources', '--split-projects']) + _RunCommand([GRADLEW_BIN, 'assembleDebug'], project_dir) + finally: + shutil.rmtree(project_dir, True) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/webrtc/examples/androidtests/third_party/.gitignore b/webrtc/examples/androidtests/third_party/.gitignore new file mode 100644 index 0000000000..52acefb2ec --- /dev/null +++ b/webrtc/examples/androidtests/third_party/.gitignore @@ -0,0 +1,3 @@ +# This file is needed for projects that has this directory as a separate Git +# mirror in DEPS. Without it, a lot is wiped and re-downloaded for each sync. +/gradle diff --git a/webrtc/examples/androidtests/third_party/README.webrtc b/webrtc/examples/androidtests/third_party/README.webrtc new file mode 100644 index 0000000000..a6ea884923 --- /dev/null +++ b/webrtc/examples/androidtests/third_party/README.webrtc @@ -0,0 +1,10 @@ +The third_party directory contains sources from other projects. + +Code in third_party must document the license under which the source is being +used. If the source itself does not include a license header or file, create +an entry in this file that refers to reliable documentation of the project's +license terms on the web (and add a note pointing here in the README file in +that directory). + + +