from __future__ import absolute_import

import lit.TestRunner
import lit.util

from .base import FileBasedTest


class ShTest(FileBasedTest):
    """ShTest is a format with one file per test.

    This is the primary format for regression tests as described in the LLVM
    testing guide:

        http://llvm.org/docs/TestingGuide.html

    The ShTest files contain some number of shell-like command pipelines, along
    with assertions about what should be in the output.
    """
    def __init__(self, execute_external=False, extra_substitutions=[],
                 preamble_commands=[]):
        self.execute_external = execute_external
        self.extra_substitutions = extra_substitutions
        self.preamble_commands = preamble_commands

    def execute(self, test, litConfig):
        return lit.TestRunner.executeShTest(test, litConfig,
                                            self.execute_external,
                                            self.extra_substitutions,
                                            self.preamble_commands)
