| # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Return True if on Linux; else False.""" |
| return sys.platform.startswith('linux') |
| """Class to start and stop Xvfb if relevant. Nop if not Linux.""" |
| """Start Xvfb and set an appropriate DISPLAY environment. Linux only. |
| Copied from tools/code_coverage/coverage_posix.py |
| proc = subprocess.Popen(['Xvfb', ':9', '-screen', '0', '1024x768x24', |
| stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
| raise Exception('Could not start Xvfb') |
| os.environ['DISPLAY'] = ':9' |
| # Now confirm, giving a chance for it to start if needed. |
| proc = subprocess.Popen('xdpyinfo >/dev/null', shell=True) |
| _, retcode = os.waitpid(proc.pid, 0) |
| raise Exception('Could not confirm Xvfb happiness') |
| """Stop Xvfb if needed. Linux only.""" |
| os.kill(self._pid, signal.SIGKILL) |
| del os.environ['DISPLAY'] |