From 853a1e6942c824775cff20142301f9b114853b0f Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Thu, 26 Mar 2020 18:17:53 -0700 Subject: [PATCH] Only add `darwin_log_cmd` lit shell test feature when the log can be queried. Summary: Follow up fix to 445b810fbd4. The `log show` command only works for privileged users so run a quick test of the command during lit config to see if the command works and only add the `darwin_log_cmd` feature if this is the case. Unfortunately this means the `asan/TestCases/Darwin/duplicate_os_log_reports.cpp` test and any other tests in the future that use this feature won't run for unprivileged users which is likely the case in CI. rdar://problem/55986279 Reviewers: kubamracek, yln, dcoughlin Subscribers: Charusso, #sanitizers, llvm-commits Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D76899 --- compiler-rt/test/lit.common.cfg.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler-rt/test/lit.common.cfg.py b/compiler-rt/test/lit.common.cfg.py index d7def93..f0618df 100644 --- a/compiler-rt/test/lit.common.cfg.py +++ b/compiler-rt/test/lit.common.cfg.py @@ -534,7 +534,16 @@ if config.host_os == 'Darwin': config.default_sanitizer_opts += ['abort_on_error=0'] config.default_sanitizer_opts += ['log_to_syslog=0'] if lit.util.which('log'): - config.available_features.add('darwin_log_cmd') + # Querying the log can only done by a privileged user so + # so check if we can query the log. + exit_code = -1 + with open('/dev/null', 'r') as f: + # Run a `log show` command the should finish fairly quickly and produce very little output. + exit_code = subprocess.call(['log', 'show', '--last', '1m', '--predicate', '1 == 0'], stdout=f, stderr=f) + if exit_code == 0: + config.available_features.add('darwin_log_cmd') + else: + lit_config.warning('log command found but cannot queried') else: lit_config.warning('log command not found. Some tests will be skipped.') elif config.android: -- 2.7.4