From 34773d9b6bcb3105ded58e1569bc15f3cd3b99d6 Mon Sep 17 00:00:00 2001 From: "henrike@webrtc.org" Date: Mon, 8 Jul 2013 14:55:23 +0000 Subject: [PATCH] Unreverts revert: Makes it possible to find files used by some unit tests when running them as Chrome native tests. TBR=andrew@webrtc.org BUG=N/A Review URL: https://webrtc-codereview.appspot.com/1754005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4303 4adac7df-926f-26a2-2b94-8c16560cd09d --- DEPS | 2 +- webrtc/test/test.gyp | 32 +++++++++++ .../testsupport/android/root_path_android.cc | 2 + webrtc/test/testsupport/fileutils.cc | 55 +++++++++++-------- .../tools/{update.py => update_resources.py} | 21 ++++--- 5 files changed, 79 insertions(+), 33 deletions(-) rename webrtc/tools/{update.py => update_resources.py} (94%) diff --git a/DEPS b/DEPS index 0aa8d434a..ff37b53a6 100644 --- a/DEPS +++ b/DEPS @@ -158,7 +158,7 @@ hooks = [ # If a newer version or no current download exists, it will download # the resources and extract them. "pattern": ".", - "action": ["python", Var("root_dir") + "/webrtc/tools/update.py"], + "action": ["python", Var("root_dir") + "/webrtc/tools/update_resources.py"], }, { # A change to a .gyp, .gypi, or to GYP itself should run the generator. diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp index 7f12a7194..1fdc609b2 100644 --- a/webrtc/test/test.gyp +++ b/webrtc/test/test.gyp @@ -62,6 +62,8 @@ 'sources': [ 'test_suite.cc', 'test_suite.h', + 'testsupport/android/root_path_android.cc', + 'testsupport/android/root_path_android_chromium.cc', 'testsupport/fileutils.cc', 'testsupport/fileutils.h', 'testsupport/frame_reader.cc', @@ -79,6 +81,36 @@ 'testsupport/trace_to_stderr.cc', 'testsupport/trace_to_stderr.h', ], + 'conditions': [ + # TODO(henrike): remove build_with_chromium==1 when the bots are using + # Chromium's buildbots. + ['build_with_chromium==1 and OS=="android" and gtest_target_type=="shared_library"', { + 'dependencies': [ + '<(DEPTH)/base/base.gyp:base', + ], + 'sources!': [ + 'testsupport/android/root_path_android.cc', + ], + # WebRTC tests use resource files for testing. These files are not + # hosted in WebRTC. The script ensures that the needed resources + # are downloaded. In stand alone WebRTC the script is called by + # the DEPS file. In Chromium, i.e. here, the files are pulled down + # only if tests requiring the resources are being built. + 'actions': [ + { + 'action_name': 'get_resources', + 'inputs': ['<(webrtc_root)/tools/update_resources.py'], + 'outputs': ['../../resources'], + 'action': ['python', + '<(webrtc_root)/tools/update_resources.py', + '-p ../../../'], + }], + }, { + 'sources!': [ + 'testsupport/android/root_path_android_chromium.cc', + ], + }], + ], }, { # Depend on this target when you want to have test_support but also the diff --git a/webrtc/test/testsupport/android/root_path_android.cc b/webrtc/test/testsupport/android/root_path_android.cc index d93552eb4..b75a5cc38 100644 --- a/webrtc/test/testsupport/android/root_path_android.cc +++ b/webrtc/test/testsupport/android/root_path_android.cc @@ -8,6 +8,8 @@ * be found in the AUTHORS file in the root of the source tree. */ +#include + namespace webrtc { namespace test { diff --git a/webrtc/test/testsupport/fileutils.cc b/webrtc/test/testsupport/fileutils.cc index 61e4bcf7b..84945ffb5 100644 --- a/webrtc/test/testsupport/fileutils.cc +++ b/webrtc/test/testsupport/fileutils.cc @@ -31,28 +31,33 @@ namespace webrtc { namespace test { +namespace { + #ifdef WIN32 -static const char* kPathDelimiter = "\\"; +const char* kPathDelimiter = "\\"; #else -static const char* kPathDelimiter = "/"; +const char* kPathDelimiter = "/"; #endif #ifdef WEBRTC_ANDROID -static const char* kRootDirName = "/sdcard/"; -static const char* kResourcesDirName = "resources"; +const char* kResourcesDirName = "resources"; #else // The file we're looking for to identify the project root dir. -static const char* kProjectRootFileName = "DEPS"; -static const char* kOutputDirName = "out"; -static const char* kFallbackPath = "./"; -static const char* kResourcesDirName = "resources"; +const char* kProjectRootFileName = "DEPS"; +const char* kResourcesDirName = "resources"; #endif -const char* kCannotFindProjectRootDir = "ERROR_CANNOT_FIND_PROJECT_ROOT_DIR"; -namespace { +const char* kFallbackPath = "./"; +const char* kOutputDirName = "out"; char relative_dir_path[FILENAME_MAX]; bool relative_dir_path_set = false; -} + +} // namespace + +const char* kCannotFindProjectRootDir = "ERROR_CANNOT_FIND_PROJECT_ROOT_DIR"; + +std::string OutputPathAndroid(); +std::string ProjectRoothPathAndroid(); void SetExecutablePath(const std::string& path) { std::string working_dir = WorkingDir(); @@ -73,18 +78,30 @@ bool FileExists(std::string& file_name) { return stat(file_name.c_str(), &file_info) == 0; } +std::string OutputPathImpl() { + std::string path = ProjectRootPath(); + if (path == kCannotFindProjectRootDir) { + return kFallbackPath; + } + path += kOutputDirName; + if (!CreateDirectory(path)) { + return kFallbackPath; + } + return path + kPathDelimiter; +} + #ifdef WEBRTC_ANDROID std::string ProjectRootPath() { - return kRootDirName; + return ProjectRoothPathAndroid(); } std::string OutputPath() { - return kRootDirName; + return OutputPathAndroid(); } std::string WorkingDir() { - return kRootDirName; + return ProjectRootPath(); } #else // WEBRTC_ANDROID @@ -114,15 +131,7 @@ std::string ProjectRootPath() { } std::string OutputPath() { - std::string path = ProjectRootPath(); - if (path == kCannotFindProjectRootDir) { - return kFallbackPath; - } - path += kOutputDirName; - if (!CreateDirectory(path)) { - return kFallbackPath; - } - return path + kPathDelimiter; + return OutputPathImpl(); } std::string WorkingDir() { diff --git a/webrtc/tools/update.py b/webrtc/tools/update_resources.py similarity index 94% rename from webrtc/tools/update.py rename to webrtc/tools/update_resources.py index a1ac085c2..f68d7c6c4 100755 --- a/webrtc/tools/update.py +++ b/webrtc/tools/update_resources.py @@ -23,6 +23,7 @@ REMOTE_URL_BASE = 'http://commondatastorage.googleapis.com/webrtc-resources' VERSION_FILENAME = 'webrtc-resources-version' FILENAME_PREFIX = 'webrtc-resources-' EXTENSION = '.tgz' +RELATIVE_OUTPUT_PATH = '../../' def main(): @@ -41,14 +42,6 @@ def main(): print 'Skipping resources download since WEBRTC_SKIP_RESOURCES_DOWNLOAD set' return - project_root_dir = os.path.normpath(sys.path[0] + '/../../') - downloads_dir = os.path.join(project_root_dir, 'resources') - current_version_file = os.path.join(downloads_dir, VERSION_FILENAME) - - # Ensure the downloads dir is created. - if not os.path.isdir(downloads_dir): - os.mkdir(downloads_dir) - # Define and parse arguments. parser = OptionParser() parser.add_option('-f', '--force', action='store_true', dest='force', @@ -56,7 +49,17 @@ def main(): parser.add_option('-b', '--base_url', dest='base_url', help= 'Overrides the default Base URL (%s) and uses the ' 'supplied URL instead.' % REMOTE_URL_BASE) - (options, unused_args) = parser.parse_args() + parser.add_option('-p', dest='path', help= 'path of resources directory' + 'relative to this script', default=RELATIVE_OUTPUT_PATH) + options = parser.parse_args()[0] + + project_root_dir = os.path.normpath(sys.path[0] + '/' + options.path) + downloads_dir = os.path.join(project_root_dir, 'resources') + current_version_file = os.path.join(downloads_dir, VERSION_FILENAME) + + # Ensure the downloads dir is created. + if not os.path.isdir(downloads_dir): + os.mkdir(downloads_dir) # Download archive if forced or DEPS version is different than our current. current_version = _get_current_version(current_version_file)