# -*- Python -*-

# Configuration file for the 'lit' test runner.

import re

# name: The name of this test suite.
config.name = 'rs2spirv'

# suffixes: A list of file extensions to treat as test files.
config.suffixes = ['.ll']

# testFormat: The test format to use to interpret tests.
import lit.formats
config.test_format = lit.formats.ShTest()

ANDROID_HOST_OUT = os.getenv("ANDROID_HOST_OUT")

if not ANDROID_HOST_OUT:
    import sys
    sys.exit(1)

# test_source_root: The path where tests are located (default is the test suite
# root).
config.test_source_root = None
# test_exec_root: The root path where tests should be run.
config.test_exec_root = os.path.join(ANDROID_HOST_OUT, 'tests', 'rs2spirv')

tools_dir = os.pathsep.join([os.path.join(ANDROID_HOST_OUT, 'bin'),])
