[CIFuzz] Go support (#3352)

* Add go support to detecting the main repo

* Go support test update

* Format

* Format

* Removing debug statment

* Format
This commit is contained in:
Leo Neat 2020-02-06 15:35:42 -08:00 committed by GitHub
parent 460661c700
commit b96d2186ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 5 deletions

View File

@ -30,6 +30,8 @@ import logging
import os
import subprocess
GO_PATH = '/root/go/src/'
def main():
"""Function to get a git repo's url and name referenced by OSS-Fuzz
@ -55,7 +57,7 @@ def main():
else:
src_dir = os.environ.get('SRC', '/src')
for single_dir in os.listdir(src_dir):
for single_dir in get_dirs_to_search(src_dir, args.repo_name):
full_path = os.path.join(src_dir, single_dir)
if not os.path.isdir(full_path):
continue
@ -69,6 +71,25 @@ def main():
args.example_commit, src_dir)
def get_dirs_to_search(src_dir, repo_name):
"""Gets a list of directories to search for the main git repo.
Args:
src_dir: The location set for the projects SRC.
repo_name: The name of the repo you are searching for.
Returns:
A list of directorys to search.
"""
dirs_to_search = os.listdir(src_dir)
if os.path.exists(GO_PATH) and repo_name:
for root, dirs, _ in os.walk(GO_PATH):
for test_dir in dirs:
if repo_name in test_dir:
dirs_to_search.append(os.path.join(root, test_dir))
return dirs_to_search
def get_repo(repo_path):
"""Gets a git repo link from a specific directory in a docker image.

View File

@ -88,8 +88,9 @@ class BuildImageIntegrationTests(unittest.TestCase):
repo_origin, repo_name = build_specified_commit.detect_main_repo(
example_repo.project_name, repo_name=example_repo.git_repo_name)
self.assertEqual(repo_origin, example_repo.git_url)
self.assertEqual(repo_name,
os.path.join('/src', example_repo.oss_repo_name))
self.assertEqual(
repo_name,
os.path.join(example_repo.image_location, example_repo.oss_repo_name))
repo_origin, repo_name = build_specified_commit.detect_main_repo(
test_repos.INVALID_REPO.project_name,

View File

@ -25,8 +25,9 @@ import collections
import os
ExampleRepo = collections.namedtuple('ExampleRepo', [
'project_name', 'oss_repo_name', 'git_repo_name', 'git_url', 'new_commit',
'old_commit', 'intro_commit', 'fuzz_target', 'test_case_path'
'project_name', 'oss_repo_name', 'git_repo_name', 'image_location',
'git_url', 'new_commit', 'old_commit', 'intro_commit', 'fuzz_target',
'test_case_path'
])
TEST_DIR_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)),
@ -38,6 +39,7 @@ TEST_REPOS = [
ExampleRepo(project_name='usrsctp',
oss_repo_name='usrsctp',
git_repo_name='usrsctp',
image_location='/src',
git_url='https://github.com/weinrank/usrsctp',
old_commit='4886aaa49fb90e479226fcfc3241d74208908232',
new_commit='c710749b1053978179a027973a3ea3bccf20ee5c',
@ -48,6 +50,7 @@ TEST_REPOS = [
ExampleRepo(project_name='curl',
oss_repo_name='curl',
git_repo_name='curl',
image_location='/src',
git_url='https://github.com/curl/curl.git',
old_commit='df26f5f9c36e19cd503c0e462e9f72ad37b84c82',
new_commit='dda418266c99ceab368d723facb52069cbb9c8d5',
@ -57,6 +60,7 @@ TEST_REPOS = [
ExampleRepo(project_name='libarchive',
oss_repo_name='libarchive',
git_repo_name='libarchive',
image_location='/src',
git_url='https://github.com/libarchive/libarchive.git',
old_commit='5bd2a9b6658a3a6efa20bb9ad75bd39a44d71da6',
new_commit='458e49358f17ec58d65ab1c45cf299baaf3c98d1',
@ -67,6 +71,7 @@ TEST_REPOS = [
ExampleRepo(project_name='gonids',
oss_repo_name='gonids',
git_repo_name='gonids',
image_location='/root/go/src/github.com/google/',
git_url='https://github.com/google/gonids',
old_commit='',
new_commit='',
@ -79,6 +84,7 @@ INVALID_REPO = ExampleRepo(project_name='notaproj',
oss_repo_name='notarepo',
git_repo_name='notarepo',
git_url='invalid.git',
image_location='/src',
old_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
new_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
intro_commit='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',