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
This commit is contained in:
henrike@webrtc.org 2013-07-08 14:55:23 +00:00
parent 1932fe1865
commit 34773d9b6b
5 changed files with 79 additions and 33 deletions

2
DEPS
View File

@ -158,7 +158,7 @@ hooks = [
# If a newer version or no current download exists, it will download # If a newer version or no current download exists, it will download
# the resources and extract them. # the resources and extract them.
"pattern": ".", "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. # A change to a .gyp, .gypi, or to GYP itself should run the generator.

View File

@ -62,6 +62,8 @@
'sources': [ 'sources': [
'test_suite.cc', 'test_suite.cc',
'test_suite.h', 'test_suite.h',
'testsupport/android/root_path_android.cc',
'testsupport/android/root_path_android_chromium.cc',
'testsupport/fileutils.cc', 'testsupport/fileutils.cc',
'testsupport/fileutils.h', 'testsupport/fileutils.h',
'testsupport/frame_reader.cc', 'testsupport/frame_reader.cc',
@ -79,6 +81,36 @@
'testsupport/trace_to_stderr.cc', 'testsupport/trace_to_stderr.cc',
'testsupport/trace_to_stderr.h', '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 # Depend on this target when you want to have test_support but also the

View File

@ -8,6 +8,8 @@
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
#include <string>
namespace webrtc { namespace webrtc {
namespace test { namespace test {

View File

@ -31,28 +31,33 @@
namespace webrtc { namespace webrtc {
namespace test { namespace test {
namespace {
#ifdef WIN32 #ifdef WIN32
static const char* kPathDelimiter = "\\"; const char* kPathDelimiter = "\\";
#else #else
static const char* kPathDelimiter = "/"; const char* kPathDelimiter = "/";
#endif #endif
#ifdef WEBRTC_ANDROID #ifdef WEBRTC_ANDROID
static const char* kRootDirName = "/sdcard/"; const char* kResourcesDirName = "resources";
static const char* kResourcesDirName = "resources";
#else #else
// The file we're looking for to identify the project root dir. // The file we're looking for to identify the project root dir.
static const char* kProjectRootFileName = "DEPS"; const char* kProjectRootFileName = "DEPS";
static const char* kOutputDirName = "out"; const char* kResourcesDirName = "resources";
static const char* kFallbackPath = "./";
static const char* kResourcesDirName = "resources";
#endif #endif
const char* kCannotFindProjectRootDir = "ERROR_CANNOT_FIND_PROJECT_ROOT_DIR";
namespace { const char* kFallbackPath = "./";
const char* kOutputDirName = "out";
char relative_dir_path[FILENAME_MAX]; char relative_dir_path[FILENAME_MAX];
bool relative_dir_path_set = false; 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) { void SetExecutablePath(const std::string& path) {
std::string working_dir = WorkingDir(); std::string working_dir = WorkingDir();
@ -73,18 +78,30 @@ bool FileExists(std::string& file_name) {
return stat(file_name.c_str(), &file_info) == 0; 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 #ifdef WEBRTC_ANDROID
std::string ProjectRootPath() { std::string ProjectRootPath() {
return kRootDirName; return ProjectRoothPathAndroid();
} }
std::string OutputPath() { std::string OutputPath() {
return kRootDirName; return OutputPathAndroid();
} }
std::string WorkingDir() { std::string WorkingDir() {
return kRootDirName; return ProjectRootPath();
} }
#else // WEBRTC_ANDROID #else // WEBRTC_ANDROID
@ -114,15 +131,7 @@ std::string ProjectRootPath() {
} }
std::string OutputPath() { std::string OutputPath() {
std::string path = ProjectRootPath(); return OutputPathImpl();
if (path == kCannotFindProjectRootDir) {
return kFallbackPath;
}
path += kOutputDirName;
if (!CreateDirectory(path)) {
return kFallbackPath;
}
return path + kPathDelimiter;
} }
std::string WorkingDir() { std::string WorkingDir() {

View File

@ -23,6 +23,7 @@ REMOTE_URL_BASE = 'http://commondatastorage.googleapis.com/webrtc-resources'
VERSION_FILENAME = 'webrtc-resources-version' VERSION_FILENAME = 'webrtc-resources-version'
FILENAME_PREFIX = 'webrtc-resources-' FILENAME_PREFIX = 'webrtc-resources-'
EXTENSION = '.tgz' EXTENSION = '.tgz'
RELATIVE_OUTPUT_PATH = '../../'
def main(): def main():
@ -41,14 +42,6 @@ def main():
print 'Skipping resources download since WEBRTC_SKIP_RESOURCES_DOWNLOAD set' print 'Skipping resources download since WEBRTC_SKIP_RESOURCES_DOWNLOAD set'
return 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. # Define and parse arguments.
parser = OptionParser() parser = OptionParser()
parser.add_option('-f', '--force', action='store_true', dest='force', 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', parser.add_option('-b', '--base_url', dest='base_url',
help= 'Overrides the default Base URL (%s) and uses the ' help= 'Overrides the default Base URL (%s) and uses the '
'supplied URL instead.' % REMOTE_URL_BASE) '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. # Download archive if forced or DEPS version is different than our current.
current_version = _get_current_version(current_version_file) current_version = _get_current_version(current_version_file)