#!/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.
