Esempio n. 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)
Esempio n. 2
0
 def mock_run_fuzz_target(_):
     nonlocal call_count
     if call_count == 0:
         testcase = testcase1
     elif call_count == 1:
         testcase = testcase2
     assert call_count != 2
     call_count += 1
     return fuzz_target.FuzzResult(testcase, stacktrace, corpus_dir)
Esempio n. 3
0
 def mock_run_fuzz_target_impl(_):
   nonlocal call_count
   if call_count == 0:
     testcase = self.testcase1
   elif call_count == 1:
     testcase = self.testcase2
   assert call_count != 2
   call_count += 1
   if not os.path.exists(self.CORPUS_DIR):
     self.fs.create_dir(self.CORPUS_DIR)
   return fuzz_target.FuzzResult(testcase, self.STACKTRACE, self.CORPUS_DIR)