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)))
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
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
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)))