From 57e9cea09936e7a761be7b60bbf229f6b4a1ed1d Mon Sep 17 00:00:00 2001 From: Yabin Cui Date: Wed, 14 Dec 2016 17:45:49 -0800 Subject: [PATCH] libbase: fix the way to find temp dir. Tests running in app context can't access /data/local/tmp, so try current directory if /data/local/tmp is not accessible. Bug: http://b/18790309 Test: run unit test in app context and shell context. Change-Id: If66fe8f0ac3edb3a32a2a2a50a524364f818a58b --- base/test_utils.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/base/test_utils.cpp b/base/test_utils.cpp index 3b3d698cc..636477d36 100644 --- a/base/test_utils.cpp +++ b/base/test_utils.cpp @@ -57,7 +57,13 @@ char* mkdtemp(char* template_name) { static std::string GetSystemTempDir() { #if defined(__ANDROID__) - return "/data/local/tmp"; + const char* tmpdir = "/data/local/tmp"; + if (access(tmpdir, R_OK | W_OK | X_OK) == 0) { + return tmpdir; + } + // Tests running in app context can't access /data/local/tmp, + // so try current directory if /data/local/tmp is not accessible. + return "."; #elif defined(_WIN32) char tmp_dir[MAX_PATH]; DWORD result = GetTempPathA(sizeof(tmp_dir), tmp_dir);