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

@ -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.

@ -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

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

@ -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() {

@ -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)