mongo/buildscripts/tests/test_evergreen_gen_fuzzer_t...

70 lines
2.8 KiB
Python

"""Unit tests for the evergreen_gen_fuzzer_tests.py script."""
import unittest
import mock
from shrub.v2 import BuildVariant, ShrubProject
from buildscripts import evergreen_gen_fuzzer_tests as under_test
# pylint: disable=missing-docstring,protected-access
class TestCreateFuzzerTask(unittest.TestCase):
@staticmethod
def _create_options_mock():
options = mock.Mock
options.num_tasks = 15
options.name = "test_task"
options.use_multiversion = False
options.npm_command = "jstestfuzz"
options.num_files = 314
options.jstestfuzz_vars = "var 1 var 2"
options.resmoke_args = "resmoke args"
options.variant = "build variant"
options.continue_on_failure = "false"
options.resmoke_jobs_max = 0
options.should_shuffle = "false"
options.timeout_secs = "1800"
options.suite = "test_suite"
return options
def test_evg_config_is_created_without_multiversion(self):
build_variant = BuildVariant("build variant")
options = self._create_options_mock()
under_test.create_fuzzer_task(options, build_variant)
shrub_project = ShrubProject.empty().add_build_variant(build_variant)
config = shrub_project.as_dict()
self.assertEqual(options.num_tasks, len(config["tasks"]))
self.assertEqual("setup jstestfuzz", config["tasks"][0]["commands"][1]["func"])
command1 = config["tasks"][0]["commands"][2]
self.assertIn(str(options.num_files), command1["vars"]["jstestfuzz_vars"])
self.assertIn(options.npm_command, command1["vars"]["npm_command"])
self.assertEqual("run jstestfuzz", command1["func"])
buildvariant = config["buildvariants"][0]
self.assertEqual(options.variant, buildvariant["name"])
self.assertEqual(options.num_tasks, len(buildvariant["tasks"]))
self.assertEqual(options.num_tasks + 1,
len(buildvariant["display_tasks"][0]["execution_tasks"]))
self.assertEqual(options.name, buildvariant["display_tasks"][0]["name"])
self.assertIn(options.name + "_gen", buildvariant["display_tasks"][0]["execution_tasks"])
def test_evg_config_is_created_with_multiversion(self):
build_variant = BuildVariant("build variant")
options = self._create_options_mock()
options.use_multiversion = "/data/multiversion"
under_test.create_fuzzer_task(options, build_variant)
shrub_project = ShrubProject.empty().add_build_variant(build_variant)
config = shrub_project.as_dict()
self.assertEqual("do multiversion setup", config["tasks"][0]["commands"][1]["func"])
self.assertEqual("/data/multiversion",
config["tasks"][0]["commands"][4]["vars"]["task_path_suffix"])