mirror of https://github.com/google/oss-fuzz.git
more tests
This commit is contained in:
parent
dafddab431
commit
a00890cb73
|
@ -393,93 +393,6 @@ class CheckFuzzerBuildTest(unittest.TestCase):
|
|||
' '.join(mocked_docker_run.call_args[0][0]))
|
||||
|
||||
|
||||
@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
|
||||
'INTEGRATION_TESTS=1 not set')
|
||||
class GetFilesCoveredByTargetTest(unittest.TestCase):
|
||||
"""Tests get_files_covered_by_target."""
|
||||
|
||||
example_cov_json = 'example_curl_cov.json'
|
||||
example_fuzzer_cov_json = 'example_curl_fuzzer_cov.json'
|
||||
example_fuzzer = 'curl_fuzzer'
|
||||
|
||||
def setUp(self):
|
||||
with open(os.path.join(TEST_FILES_PATH,
|
||||
self.example_cov_json)) as file_handle:
|
||||
self.proj_cov_report_example = json.loads(file_handle.read())
|
||||
with open(os.path.join(TEST_FILES_PATH,
|
||||
self.example_fuzzer_cov_json)) as file_handle:
|
||||
self.fuzzer_cov_report_example = json.loads(file_handle.read())
|
||||
|
||||
def test_valid_target(self):
|
||||
"""Tests that covered files can be retrieved from a coverage report."""
|
||||
|
||||
with mock.patch.object(cifuzz,
|
||||
'get_target_coverage_report',
|
||||
return_value=self.fuzzer_cov_report_example):
|
||||
file_list = cifuzz.get_files_covered_by_target(
|
||||
self.proj_cov_report_example, self.example_fuzzer, '/src/curl')
|
||||
|
||||
curl_files_list_path = os.path.join(TEST_FILES_PATH,
|
||||
'example_curl_file_list.json')
|
||||
with open(curl_files_list_path) as file_handle:
|
||||
true_files_list = json.load(file_handle)
|
||||
self.assertCountEqual(file_list, true_files_list)
|
||||
|
||||
def test_invalid_target(self):
|
||||
"""Tests passing invalid fuzz target returns None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
'not-a-fuzzer', '/src/curl'))
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example, '',
|
||||
'/src/curl'))
|
||||
|
||||
def test_invalid_project_build_dir(self):
|
||||
"""Tests passing an invalid build directory returns None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
self.example_fuzzer, '/no/pe'))
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
self.example_fuzzer, ''))
|
||||
|
||||
|
||||
class GetTargetCoverageReportTest(unittest.TestCase):
|
||||
"""Tests get_target_coverage_report."""
|
||||
|
||||
example_cov_json = 'example_curl_cov.json'
|
||||
example_fuzzer = 'curl_fuzzer'
|
||||
|
||||
def setUp(self):
|
||||
with open(os.path.join(TEST_FILES_PATH, self.example_cov_json),
|
||||
'r') as file_handle:
|
||||
self.example_cov = json.loads(file_handle.read())
|
||||
|
||||
def test_valid_target(self):
|
||||
"""Tests that a target's coverage report can be downloaded and parsed."""
|
||||
with mock.patch.object(cifuzz, 'get_json_from_url',
|
||||
return_value='{}') as mock_get_json:
|
||||
cifuzz.get_target_coverage_report(self.example_cov, self.example_fuzzer)
|
||||
(url,), _ = mock_get_json.call_args
|
||||
self.assertEqual(
|
||||
'https://storage.googleapis.com/oss-fuzz-coverage/'
|
||||
'curl/fuzzer_stats/20200226/curl_fuzzer.json', url)
|
||||
|
||||
def test_invalid_target(self):
|
||||
"""Tests that passing an invalid target coverage report returns None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_target_coverage_report(self.example_cov, 'not-valid-target'))
|
||||
self.assertIsNone(cifuzz.get_target_coverage_report(self.example_cov, ''))
|
||||
|
||||
def test_invalid_project_json(self):
|
||||
"""Tests that passing an invalid project json coverage report returns
|
||||
None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_target_coverage_report('not-a-proj', self.example_fuzzer))
|
||||
self.assertIsNone(cifuzz.get_target_coverage_report('',
|
||||
self.example_fuzzer))
|
||||
|
||||
|
||||
@unittest.skip('Test is too long to be run with presubmit.')
|
||||
class BuildSantizerIntegrationTest(unittest.TestCase):
|
||||
"""Integration tests for the build_fuzzers.
|
||||
|
|
|
@ -106,6 +106,7 @@ def _get_latest_cov_report_info(project_name):
|
|||
return None
|
||||
return latest_cov_info
|
||||
|
||||
|
||||
def _get_fuzzer_stats_dir_url(project_name):
|
||||
"""Gets latest coverage report info for a specific OSS-Fuzz project from GCS.
|
||||
|
||||
|
|
|
@ -21,10 +21,10 @@ import coverage
|
|||
|
||||
# pylint: disable=protected-access
|
||||
|
||||
|
||||
TEST_FILES_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||
'test_files')
|
||||
|
||||
|
||||
class GetFuzzerStatsDirUrlTest(unittest.TestCase):
|
||||
"""Tests _get_fuzzer_stats_dir_url."""
|
||||
|
||||
|
@ -45,9 +45,7 @@ class GetFuzzerStatsDirUrlTest(unittest.TestCase):
|
|||
|
||||
def test_get_invalid_project(self):
|
||||
"""Tests that passing a bad project returns None."""
|
||||
import ipdb; ipdb.set_trace()
|
||||
self.assertIsNone(coverage._get_fuzzer_stats_dir_url('not-a-proj'))
|
||||
self.assertIsNone(coverage._get_fuzzer_stats_dir_url(''))
|
||||
|
||||
|
||||
class GetTargetCoverageReportTest(unittest.TestCase):
|
||||
|
@ -70,8 +68,7 @@ class GetTargetCoverageReportTest(unittest.TestCase):
|
|||
@mock.patch('coverage.get_json_from_url', return_value={})
|
||||
def test_valid_target(self, mocked_get_json_from_url):
|
||||
"""Tests that a target's coverage report can be downloaded and parsed."""
|
||||
self.coverage_getter.get_target_coverage_report(
|
||||
self.EXAMPLE_FUZZER)
|
||||
self.coverage_getter.get_target_coverage_report(self.EXAMPLE_FUZZER)
|
||||
(url,), _ = mocked_get_json_from_url.call_args
|
||||
self.assertEqual(
|
||||
'https://storage.googleapis.com/oss-fuzz-coverage/'
|
||||
|
@ -81,34 +78,37 @@ class GetTargetCoverageReportTest(unittest.TestCase):
|
|||
"""Tests that passing an invalid target coverage report returns None."""
|
||||
self.assertIsNone(
|
||||
self.coverage_getter.get_target_coverage_report('not-valid-target'))
|
||||
self.assertIsNone(self.coverage_getter.get_target_coverage_report(''))
|
||||
|
||||
|
||||
@unittest.skipIf(not os.getenv('INTEGRATION_TESTS'),
|
||||
'INTEGRATION_TESTS=1 not set')
|
||||
class GetFilesCoveredByTargetTest(unittest.TestCase):
|
||||
"""Tests get_files_covered_by_target."""
|
||||
|
||||
example_cov_json = 'example_curl_cov.json'
|
||||
example_fuzzer_cov_json = 'example_curl_fuzzer_cov.json'
|
||||
example_fuzzer = 'curl_fuzzer'
|
||||
FUZZER_COV_JSON_FILENAME = 'example_curl_fuzzer_cov.json'
|
||||
EXAMPLE_FUZZER = 'curl_fuzzer'
|
||||
PROJECT_NAME = 'curl'
|
||||
REPO_PATH = '/src/curl'
|
||||
|
||||
def setUp(self):
|
||||
example_cov_json = 'example_curl_cov.json'
|
||||
with open(os.path.join(TEST_FILES_PATH,
|
||||
self.example_cov_json)) as file_handle:
|
||||
self.proj_cov_report_example = json.loads(file_handle.read())
|
||||
example_cov_json)) as file_handle:
|
||||
self.cov_report = json.loads(file_handle.read())
|
||||
|
||||
with mock.patch('coverage._get_latest_cov_report_info',
|
||||
return_value=self.cov_report):
|
||||
self.coverage_getter = coverage.OssFuzzCoverageGetter(
|
||||
self.PROJECT_NAME, self.REPO_PATH)
|
||||
with open(os.path.join(TEST_FILES_PATH,
|
||||
self.example_fuzzer_cov_json)) as file_handle:
|
||||
self.fuzzer_cov_report_example = json.loads(file_handle.read())
|
||||
self.FUZZER_COV_JSON_FILENAME)) as file_handle:
|
||||
self.fuzzer_cov_report = json.loads(file_handle.read())
|
||||
|
||||
def test_valid_target(self):
|
||||
"""Tests that covered files can be retrieved from a coverage report."""
|
||||
|
||||
with mock.patch.object(cifuzz,
|
||||
'get_target_coverage_report',
|
||||
return_value=self.fuzzer_cov_report_example):
|
||||
file_list = cifuzz.get_files_covered_by_target(
|
||||
self.proj_cov_report_example, self.example_fuzzer, '/src/curl')
|
||||
with mock.patch('coverage.OssFuzzCoverageGetter.get_target_coverage_report',
|
||||
return_value=self.fuzzer_cov_report):
|
||||
import ipdb; ipdb.set_trace()
|
||||
file_list = self.coverage_getter.get_files_covered_by_target(
|
||||
self.EXAMPLE_FUZZER)
|
||||
|
||||
curl_files_list_path = os.path.join(TEST_FILES_PATH,
|
||||
'example_curl_file_list.json')
|
||||
|
@ -116,25 +116,6 @@ class GetFilesCoveredByTargetTest(unittest.TestCase):
|
|||
true_files_list = json.load(file_handle)
|
||||
self.assertCountEqual(file_list, true_files_list)
|
||||
|
||||
def test_invalid_target(self):
|
||||
"""Tests passing invalid fuzz target returns None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
'not-a-fuzzer', '/src/curl'))
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example, '',
|
||||
'/src/curl'))
|
||||
|
||||
def test_invalid_project_build_dir(self):
|
||||
"""Tests passing an invalid build directory returns None."""
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
self.example_fuzzer, '/no/pe'))
|
||||
self.assertIsNone(
|
||||
cifuzz.get_files_covered_by_target(self.proj_cov_report_example,
|
||||
self.example_fuzzer, ''))
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue