# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:

import site

# Load the custom analyzer test format, which runs the test again with Z3 if it
# is available.
site.addsitedir(os.path.dirname(__file__))
import analyzer_test
config.test_format = analyzer_test.AnalyzerTest(
        config.test_format.execute_external, config.use_z3_solver)

# Filtering command used by Clang Analyzer tests (when comparing .plist files
# with reference output)
config.substitutions.append(('%normalize_plist',
    "grep -Ev '%s|%s|%s'" %
        ('^[[:space:]]*<string>.* version .*</string>[[:space:]]*$',
         '^[[:space:]]*<string>/.*</string>[[:space:]]*$',
         '^[[:space:]]*<string>.:.*</string>[[:space:]]*$')))

# Filtering command for testing SARIF output against reference output.
config.substitutions.append(('%normalize_sarif',
    "grep -Ev '^[[:space:]]*(%s|%s|%s)[[:space:]]*$'" %
        ('"uri": "file:.*%basename_t"',
         '"version": ".* version .*"',
         '"version": "2.1.0"')))

if not config.root.clang_staticanalyzer:
    config.unsupported = True
