# -*- Python -*-
import os
import sys

import lit.formats

config.name = 'per_test_timeout'

shellType = lit_config.params.get('external', '1')

if shellType == '0':
    lit_config.note('Using internal shell')
    externalShell = False
else:
    lit_config.note('Using external shell')
    externalShell = True

configSetTimeout = lit_config.params.get('set_timeout', '0')

if configSetTimeout != '0':
    # Try setting the max individual test time in the configuration
    lit_config.maxIndividualTestTime = int(configSetTimeout)

config.test_format = lit.formats.ShTest(execute_external=externalShell)
config.suffixes = ['.py']

config.test_source_root = os.path.dirname(__file__)
config.test_exec_root = config.test_source_root
config.target_triple = '(unused)'
src_root = os.path.join(config.test_source_root, '..')
config.environment['PYTHONPATH'] = src_root
config.substitutions.append(('%{python}', '"%s"' % (sys.executable)))
