def test_tests_generated_if_a_file_changed( self, create_test_membership_map_mock, find_changed_tests_mock, create_evg_build_variant_map_mock, write_to_file_mock): """ Given a git repository with changes, When burn_in_tags is run, Then some tags are discovered to run. """ create_test_membership_map_mock.return_value = defaultdict( list, CREATE_TEST_MEMBERSHIP_MAP) repos = [MagicMock(working_dir=os.getcwd())] evg_conf = get_evergreen_config() create_evg_build_variant_map_mock.return_value = CREATE_EVG_BUILD_VARIANT_MAP find_changed_tests_mock.return_value.find_changed_tests.return_value = { 'jstests/slow1/large_role_chain.js', 'jstests/aggregation/accumulators/accumulator_js.js' } under_test.burn_in(EXPANSIONS_FILE_DATA, evg_conf, MagicMock(), repos, 'install_dir/bin') write_to_file_mock.assert_called_once() written_config = write_to_file_mock.call_args[0][2] written_config_map = json.loads(written_config) n_tasks = len(written_config_map["tasks"]) # Ensure we are generating at least one task for the test. self.assertGreaterEqual(n_tasks, 1) written_build_variants = written_config_map["buildvariants"] written_build_variants_name = [ variant['name'] for variant in written_build_variants ] self.assertEqual(set(CREATE_EVG_BUILD_VARIANT_MAP.values()), set(written_build_variants_name)) tasks = written_config_map["tasks"] self.assertGreaterEqual(len(tasks), len(CREATE_EVG_BUILD_VARIANT_MAP)) self.assertTrue( all( len(display_tasks) == 1 for display_tasks in [ build_variant["display_tasks"] for build_variant in written_build_variants ]))
def test_no_tests_run_if_none_changed(self, find_changed_tests_mock, create_evg_build_variant_map_mock, write_to_file_mock): """ Given a git repository with no changes, When burn_in_tags is run, Then no tests are discovered to run. """ repos = [MagicMock()] evg_conf_mock = MagicMock() find_changed_tests_mock.return_value = {} create_evg_build_variant_map_mock.return_value = CREATE_EVG_BUILD_VARIANT_MAP under_test.burn_in(EXPANSIONS_FILE_DATA, evg_conf_mock, None, repos) write_to_file_mock.assert_called_once() shrub_config = write_to_file_mock.call_args[0][2] self.assertEqual(EMPTY_PROJECT, json.loads(shrub_config))