Exemple #1
0
    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))