Test for Gradle project generation.
BUG=webrtc:7608
Review-Url: https://codereview.webrtc.org/2858043006
Cr-Original-Commit-Position: refs/heads/master@{#18063}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 2e3574dd1828aef31b2e5cdaeb3e1376ea8001be
diff --git a/examples/androidtests/gradle_project_test.py b/examples/androidtests/gradle_project_test.py
new file mode 100644
index 0000000..07ae570
--- /dev/null
+++ b/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/examples/androidtests/third_party/.gitignore b/examples/androidtests/third_party/.gitignore
new file mode 100644
index 0000000..52acefb
--- /dev/null
+++ b/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/examples/androidtests/third_party/README.webrtc b/examples/androidtests/third_party/README.webrtc
new file mode 100644
index 0000000..a6ea884
--- /dev/null
+++ b/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).
+
+<Include table of license information here, once it is available>
+