Files
mongo/buildscripts/resmokelib/testing/testcases/mql_model_haskell_test.py
Robert Guo 39027673be SERVER-65071 remove resmoke gRPC integration
(cherry picked from commit 9563cadc7d)
2022-04-28 07:49:37 +00:00

43 lines
1.6 KiB
Python

"""The unittest.TestCase for MQL Haskell tests."""
import os
import os.path
from buildscripts.resmokelib import core
from buildscripts.resmokelib import errors
from buildscripts.resmokelib import utils
from buildscripts.resmokelib.testing.testcases import interface
from buildscripts.resmokelib.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
])