From a319cc895c76a86959f33f7fa34b868326d9ada5 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 14 Dec 2018 14:54:56 -0800 Subject: [PATCH 1/2] Remove dead code. Test: ./run_tests.py --bitness 32 Test: ./run_tests.py --bitness 64 Bug: None Change-Id: Iba4ed7bedf092bf642ba135230c405b29f082e05 --- utils/libcxx/android/test/format.py | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/utils/libcxx/android/test/format.py b/utils/libcxx/android/test/format.py index 228272c18..e5252a8a1 100644 --- a/utils/libcxx/android/test/format.py +++ b/utils/libcxx/android/test/format.py @@ -52,32 +52,6 @@ class TestFormat(HostTestFormat): def _wd_path(self, test_name, file_name): return os.path.join(self._working_directory(test_name), file_name) - def _build(self, exec_path, source_path, compile_only=False, - use_verify=False): - # pylint: disable=protected-access - cmd, report, rc = libcxx.test.format.LibcxxTestFormat._build( - self, exec_path, source_path, compile_only, use_verify) - if rc != 0: - return cmd, report, rc - - try: - exec_file = os.path.basename(exec_path) - - adb.mkdir(self._working_directory(exec_file)) - adb.push(exec_path, self._wd_path(exec_file, exec_file)) - - # Push any .dat files in the same directory as the source to the - # working directory. - src_dir = os.path.dirname(source_path) - data_files = [f for f in os.listdir(src_dir) if f.endswith('.dat')] - for data_file in data_files: - df_path = os.path.join(src_dir, data_file) - df_dev_path = self._wd_path(exec_file, data_file) - adb.push(df_path, df_dev_path) - return cmd, report, rc - except adb.AdbError as ex: - return self._make_report(ex.cmd, ex.out, ex.err, ex.exit_code) - def _clean(self, exec_path): exec_file = os.path.basename(exec_path) cmd = ['adb', 'shell', 'rm', '-rf', self._working_directory(exec_file)] From 35cb7a0541337a71c113f7836b3a12f572398d05 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 14 Dec 2018 14:59:57 -0800 Subject: [PATCH 2/2] Run device tests as the shell user. A handful of the std::filesystem tests assume non-root (such as checking readability of a file that has mode 000). We probably shouldn't be running as root for these tests anyway. Test: ./run_tests.py --bitness 32 Test: ./run_tests.py --bitness 64 Bug: None Change-Id: Ifc661bd245c3d802d8816d1c098b0e47d011c4fa --- run_tests.py | 11 +++++++++++ utils/libcxx/android/executors.py | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/run_tests.py b/run_tests.py index f510c41bc..ebbce0586 100755 --- a/run_tests.py +++ b/run_tests.py @@ -142,6 +142,14 @@ def get_build_cmds(bitness, host): return extract_build_cmds(commands, os.path.basename(target)) +def setup_test_directory(): + """Prepares a device test directory for use by the shell user.""" + device_dir = '/data/local/tmp/libcxx' + check_call(['adb', 'shell', 'rm', '-rf', device_dir]) + check_call(['adb', 'shell', 'mkdir', '-p', device_dir]) + check_call(['adb', 'shell', 'chown', '-R', 'shell:shell', device_dir]) + + def main(): """Program entry point.""" logging.basicConfig(level=logging.INFO) @@ -176,6 +184,9 @@ def main(): have_filter_args = True break # No need to keep scanning. + if not args.host: + setup_test_directory() + lit_args = [ '-sv', android_mode_arg, cxx_under_test_arg, cxx_template_arg, link_template_arg, libcxx_site_cfg_arg, libcxxabi_site_cfg_arg diff --git a/utils/libcxx/android/executors.py b/utils/libcxx/android/executors.py index 7bf3413d1..d3c5d6875 100644 --- a/utils/libcxx/android/executors.py +++ b/utils/libcxx/android/executors.py @@ -16,7 +16,7 @@ class AdbExecutor(libcxx.test.executor.RemoteExecutor): def _remote_temp(self, is_dir): dir_arg = '-d' if is_dir else '' - cmd = 'mktemp -q {} /data/local/tmp/libcxx.XXXXXXXXXX'.format(dir_arg) + cmd = 'mktemp -q {} /data/local/tmp/libcxx/temp.XXXXXX'.format(dir_arg) _, temp_path, err, exitCode = self._execute_command_remote([cmd]) temp_path = temp_path.strip() if exitCode != 0: @@ -32,7 +32,7 @@ class AdbExecutor(libcxx.test.executor.RemoteExecutor): adb_cmd.extend(['-s', self.serial]) delimiter = 'x' - probe_cmd = ' '.join(cmd) + '; echo {}$?'.format(delimiter) + probe_cmd = 'su shell {}; echo {}$?'.format(' '.join(cmd), delimiter) env_cmd = [] if env is not None: