示例#1
0
    def test_remove_unaffected_fuzz_targets(self, side_effect,
                                            expected_dir_len):
        """Tests that remove_unaffected_fuzzers has the intended effect."""
        config = test_helpers.create_run_config(
            is_github=True,
            oss_fuzz_project_name=EXAMPLE_PROJECT,
            workspace='/workspace')
        workspace = workspace_utils.Workspace(config)
        deployment = clusterfuzz_deployment.get_clusterfuzz_deployment(
            config, workspace)
        # We can't use fakefs in this test because this test executes
        # utils.is_fuzz_target_local. This function relies on the executable bit
        # being set, which doesn't work properly in fakefs.
        with tempfile.TemporaryDirectory() as tmp_dir, mock.patch(
                'get_coverage.OSSFuzzCoverage.get_files_covered_by_target'
        ) as mocked_get_files:
            with mock.patch('get_coverage._get_oss_fuzz_fuzzer_stats_dir_url',
                            return_value=1):
                mocked_get_files.side_effect = side_effect
                shutil.copy(self.TEST_FUZZER_1, tmp_dir)
                shutil.copy(self.TEST_FUZZER_2, tmp_dir)

                affected_fuzz_targets.remove_unaffected_fuzz_targets(
                    deployment, tmp_dir, [EXAMPLE_FILE_CHANGED], '')
                self.assertEqual(expected_dir_len, len(os.listdir(tmp_dir)))
示例#2
0
 def remove_unaffected_fuzz_targets(self):
   """Removes the fuzzers unaffected by the patch."""
   fix_git_repo_for_diff(self.host_repo_path)
   changed_files = self.repo_manager.get_git_diff()
   affected_fuzz_targets.remove_unaffected_fuzz_targets(
       self.project_name, self.out_dir, changed_files, self.image_repo_path)
   return True
示例#3
0
    def remove_unaffected_fuzz_targets(self):
        """Removes the fuzzers unaffected by the patch."""
        if self.config.keep_unaffected_fuzz_targets:
            logging.info('Not removing unaffected fuzz targets.')
            return True

        logging.info('Removing unaffected fuzz targets.')
        changed_files = self.ci_system.get_changed_code_under_test(
            self.repo_manager)
        affected_fuzz_targets.remove_unaffected_fuzz_targets(
            self.config.project_name, self.out_dir, changed_files,
            self.image_repo_path)
        return True
示例#4
0
    def remove_unaffected_fuzz_targets(self):
        """Removes the fuzzers unaffected by the patch."""
        if self.config.keep_unaffected_fuzz_targets:
            logging.info('Not removing unaffected fuzz targets.')
            return True

        logging.info('Removing unaffected fuzz targets.')
        changed_files = self.ci_system.get_changed_code_under_test(
            self.repo_manager)
        affected_fuzz_targets.remove_unaffected_fuzz_targets(
            self.clusterfuzz_deployment, self.workspace.out, changed_files,
            self.image_repo_path)
        return True
 def test_remove_unaffected_fuzz_targets(self, side_effect,
                                         expected_dir_len):
     """Tests that remove_unaffected_fuzzers has the intended effect."""
     with tempfile.TemporaryDirectory() as tmp_dir, mock.patch(
             'coverage._get_fuzzer_stats_dir_url', return_value=1):
         with mock.patch(
                 'coverage.OssFuzzCoverageGetter.get_files_covered_by_target'
         ) as mocked_get_files:
             mocked_get_files.side_effect = side_effect
             shutil.copy(self.TEST_FUZZER_1, tmp_dir)
             shutil.copy(self.TEST_FUZZER_2, tmp_dir)
             affected_fuzz_targets.remove_unaffected_fuzz_targets(
                 EXAMPLE_PROJECT, tmp_dir, [EXAMPLE_FILE_CHANGED], '')
             self.assertEqual(expected_dir_len, len(os.listdir(tmp_dir)))
 def test_remove_unaffected_fuzz_targets(self, side_effect,
                                         expected_dir_len):
     """Tests that remove_unaffected_fuzzers has the intended effect."""
     # We can't use fakefs in this test because this test executes
     # utils.is_fuzz_target_local. This function relies on the executable bit
     # being set, which doesn't work properly in fakefs.
     with tempfile.TemporaryDirectory() as tmp_dir, mock.patch(
             'coverage.OssFuzzCoverageGetter.get_files_covered_by_target'
     ) as mocked_get_files:
         with mock.patch('coverage._get_fuzzer_stats_dir_url',
                         return_value=1):
             mocked_get_files.side_effect = side_effect
             shutil.copy(self.TEST_FUZZER_1, tmp_dir)
             shutil.copy(self.TEST_FUZZER_2, tmp_dir)
             affected_fuzz_targets.remove_unaffected_fuzz_targets(
                 EXAMPLE_PROJECT, tmp_dir, [EXAMPLE_FILE_CHANGED], '')
             self.assertEqual(expected_dir_len, len(os.listdir(tmp_dir)))