Files
mongo/buildscripts/resmokelib/testing/testcases/mql_model_haskell_test.py
2019-04-08 14:08:49 -04:00

43 lines
1.5 KiB
Python

"""The unittest.TestCase for MQL Haskell tests."""
import os
import os.path
from . import interface
from ... import core
from ... import errors
from ... import utils
from ...utils import globstar
class MqlModelHaskellTestCase(interface.ProcessTestCase):
"""A MQL Haskell Model test to execute."""
REGISTERED_NAME = "mql_model_haskell_test"
def __init__(self, logger, json_filename, mql_executable=None):
"""Initialize the MqlModelHaskellTestCase with the executable to run."""
interface.ProcessTestCase.__init__(self, logger, "MQL Haskell Model test", json_filename)
self.json_test_file = json_filename
# Determine the top level directory where we start a search for a mql binary
self.top_level_dirname = os.path.join(os.path.normpath(json_filename).split(os.sep)[0], "")
# Our haskell cabal build produces binaries in an unique directory
# .../dist-sandbox-<some hex hash>/...
# so we use a glob pattern to fish out the binary
mql_executable = utils.default_if_none(mql_executable, "mql-model/dist/dist*/build/mql/mql")
execs = globstar.glob(mql_executable)
if len(execs) != 1:
raise errors.StopExecution("There must be a single mql binary in {}".format(execs))
self.program_executable = execs[0]
def _make_process(self):
return core.programs.make_process(self.logger, [
self.program_executable, "--test", self.json_test_file, "--prefix",
self.top_level_dirname
])