Пример #1
0
    def test_run_fuzz_targets_quits(self, mocked_create_fuzz_target_obj,
                                    mocked_run_fuzz_target,
                                    mocked_get_fuzz_targets):
        """Tests that run_fuzz_targets quits on the first crash it finds."""
        workspace = 'workspace'
        out_path = os.path.join(workspace, 'out')
        self.fs.create_dir(out_path)
        config = test_helpers.create_run_config(fuzz_seconds=FUZZ_SECONDS,
                                                workspace=workspace,
                                                project_name=EXAMPLE_PROJECT)
        runner = run_fuzzers.CiFuzzTargetRunner(config)

        mocked_get_fuzz_targets.return_value = ['target1', 'target2']
        runner.initialize()
        testcase = os.path.join(workspace, 'testcase')
        self.fs.create_file(testcase)
        stacktrace = b'stacktrace'
        corpus_dir = 'corpus'
        self.fs.create_dir(corpus_dir)
        mocked_run_fuzz_target.return_value = fuzz_target.FuzzResult(
            testcase, stacktrace, corpus_dir)
        magic_mock = mock.MagicMock()
        magic_mock.target_name = 'target1'
        mocked_create_fuzz_target_obj.return_value = magic_mock
        self.assertTrue(runner.run_fuzz_targets())
        self.assertIn('target1-address-testcase',
                      os.listdir(runner.crashes_dir))
        self.assertEqual(mocked_run_fuzz_target.call_count, 1)
Пример #2
0
    def test_run_fuzz_targets_quits(self, mocked_create_fuzz_target_obj,
                                    mocked_run_fuzz_target):
        """Tests that run_fuzz_targets quits on the first crash it finds."""
        workspace = 'workspace'
        out_path = os.path.join(workspace, 'out')
        self.fs.create_dir(out_path)
        config = _create_config(fuzz_seconds=FUZZ_SECONDS,
                                workspace=workspace,
                                project_name=EXAMPLE_PROJECT)
        runner = run_fuzzers.CiFuzzTargetRunner(config)

        with mock.patch('utils.get_fuzz_targets') as mocked_get_fuzz_targets:
            mocked_get_fuzz_targets.return_value = ['target1', 'target2']
            runner.initialize()
        testcase = os.path.join(workspace, 'testcase')
        self.fs.create_file(testcase)
        stacktrace = b'stacktrace'
        mocked_run_fuzz_target.return_value = (testcase, stacktrace)
        magic_mock = mock.MagicMock()
        magic_mock.target_name = 'target1'
        mocked_create_fuzz_target_obj.return_value = magic_mock
        self.assertTrue(runner.run_fuzz_targets())
        self.assertIn('target1-testcase', os.listdir(runner.artifacts_dir))
        self.assertEqual(mocked_run_fuzz_target.call_count, 1)