| #!/usr/bin/env python |
| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Simple script for xvfb_unittest to launch. |
| |
| This script outputs formatted data to stdout for the xvfb unit tests |
| to read and compare with expected output. |
| """ |
| |
| from __future__ import print_function |
| |
| import os |
| import signal |
| import sys |
| import time |
| |
| |
| def print_signal(sig, *_): |
| # print_function does not guarantee its output won't be interleaved |
| # with other logging elsewhere, but it does guarantee its output |
| # will appear intact. Because the tests parse via starts_with, prefix |
| # with a newline. These tests were previously flaky due to output like |
| # > Signal: 1 <other messages>. |
| print('\nSignal :{}'.format(sig)) |
| |
| |
| if __name__ == '__main__': |
| signal.signal(signal.SIGTERM, print_signal) |
| signal.signal(signal.SIGINT, print_signal) |
| |
| # test the subprocess display number. |
| print('\nDisplay :{}'.format(os.environ.get('DISPLAY', 'None'))) |
| |
| if len(sys.argv) > 1 and sys.argv[1] == '--sleep': |
| time.sleep(2) # gives process time to receive signal. |