# -*- Python -*-

# Configuration file for 'lit' test runner.
# This file contains common config setup rules for unit tests in various
# compiler-rt testsuites.

import os

# Setup test format
build_type = getattr(config, "build_type", "Debug")
config.test_format = lit.formats.GoogleTest(build_type, "Test")

# Setup test suffixes.
config.suffixes = []

# Propagate the temp directory. Windows requires this because it uses \Windows\
# if none of these are present.
if 'TMP' in os.environ:
    config.environment['TMP'] = os.environ['TMP']
if 'TEMP' in os.environ:
    config.environment['TEMP'] = os.environ['TEMP']
