@@ -413,109 +413,6 @@ def _get_project_language(project):
413413 return ''
414414
415415
416- def _autogenerate_run_tests_script (project , container_output ):
417- """Autogenerate `run_tests.sh` for a project."""
418- project_path = os .path .join ('projects' , project )
419- run_tests_script = os .path .join (project_path , 'run_tests.sh' )
420-
421- for run_test_script in RUN_TESTS_TO_TRY :
422- with open (run_tests_script , 'w' , encoding = 'utf-8' ) as f :
423- f .write ('#!/bin/bash\n ' )
424- f .write ('set -eux\n ' )
425- f .write (run_test_script + '\n ' )
426- f .write (f'echo "Running tests for project: { project } "\n ' )
427- # Add more commands as needed to run tests
428- os .chmod (run_tests_script , 0o755 )
429- logger .info ('Created run_tests.sh for %s' , project )
430-
431- # Adjust the Dockerfile to copy it in
432- dockerfile_path = os .path .join (project_path , 'Dockerfile' )
433-
434- add_run_tests = False
435- with open (dockerfile_path , 'r' , encoding = 'utf-8' ) as f :
436- if 'COPY run_tests.sh' not in f .read ():
437- add_run_tests = True
438- if add_run_tests :
439- with open (dockerfile_path , 'a' , encoding = 'utf-8' ) as f :
440- f .write ('\n # Copy the autogenerated run_tests.sh script\n ' )
441- f .write ('COPY run_tests.sh $SRC/run_tests.sh\n ' )
442- f .write ('RUN chmod +x $SRC/run_tests.sh\n ' )
443-
444- succeeded = check_test (project , container_output = container_output )
445-
446- # If it succeeded initially, then make sure that it actually succeeds
447- # to generate a coverage report. if it does not, then it means the
448- # generation actually failed.
449- coverage_success = extract_test_coverage (project )
450- if not coverage_success :
451- logger .error ('Coverage generation failed for %s' , project )
452- succeeded = False
453-
454- success_file = os .path .join (project_path , 'run_tests.succeeded' )
455- with open (success_file , 'a' , encoding = 'utf-8' ) as f :
456- f .write (f'Auto-generation succeeded: { succeeded } \n ' )
457- if succeeded :
458- logger .info ('Autogenerated run_tests.sh for %s successfully.' , project )
459- break
460-
461-
462- def autogen_projects (apply_filtering = False ,
463- max_projects_to_try = 1 ,
464- container_output = 'stdout' ,
465- projects_to_target = []):
466- """Autogenerate `run_tests.sh` for all projects."""
467- if projects_to_target :
468- projects = projects_to_target
469- else :
470- projects = os .listdir ('projects' )
471- projects_tries = 0
472- for project in projects :
473- if projects_tries >= max_projects_to_try :
474- logger .info ('Reached maximum number of projects to try: %d' ,
475- max_projects_to_try )
476- break
477-
478- project_path = os .path .join ('projects' , project )
479- if not os .path .isdir (project_path ):
480- continue
481-
482- # Ensure the project language is C or C++
483- if _get_project_language (project ).lower () not in ['c' , 'c++' ]:
484- continue
485-
486- run_tests_script = os .path .join (project_path , 'run_tests.sh' )
487- if os .path .exists (run_tests_script ):
488- logger .info ('Skipping %s, run_tests.sh already exists.' , project )
489- continue
490-
491- if apply_filtering :
492- # Apply filtering logic to increase performance
493- build_script = os .path .join (project_path , 'build.sh' )
494- if not os .path .exists (build_script ):
495- logger .warning ('Skipping %s, build.sh does not exist.' , project )
496- continue
497- with open (build_script , 'r' , encoding = 'utf-8' ) as f :
498- lines = f .readlines ()
499- # Filter out lines that are not relevant for the test script
500- filtered_lines = [line for line in lines if 'make' in line ]
501- if not filtered_lines :
502- logger .warning ('Skipping %s, no relevant lines found in build.sh.' ,
503- project )
504- continue
505-
506- # It only makes sense to autogenerate if the project actually builds, so
507- # query OSS-Fuzz to make sure the most recent build was successful.
508-
509- if not _get_oss_fuzz_build_status (project ):
510- logger .warning ('Skipping %s, most recent build was not successful.' ,
511- project )
512- continue
513-
514- projects_tries += 1
515- logger .info ('Autogenerating run_tests.sh for %s' , project )
516- _autogenerate_run_tests_script (project , container_output )
517-
518-
519416def extract_test_coverage (project ):
520417 """Extract code coverage report from run_tests.sh script."""
521418 build_project_image (project )
@@ -569,11 +466,6 @@ def _cmd_dispatcher_build_cached_image(args):
569466 build_cached_project (args .project , sanitizer = args .sanitizer )
570467
571468
572- def _cmd_dispatcher_autogen_tests (args ):
573- autogen_projects (args .apply_filtering , args .max_projects_to_try ,
574- args .projects )
575-
576-
577469def _cmd_dispatcher_extract_coverage (args ):
578470 extract_test_coverage (args .project )
579471
@@ -670,31 +562,6 @@ def parse_args():
670562 default = 'stdout' ,
671563 help = 'How to handle output from the container. ' )
672564
673- autogen_tests_parser = subparsers .add_parser (
674- 'autogen-tests' ,
675- help = 'Tries to autogenerate `run_tests.sh` for projects.' )
676- autogen_tests_parser .add_argument (
677- '--apply-filtering' ,
678- action = 'store_true' ,
679- help = ('If set, applies filtering to increase performance but '
680- 'tests on fewer projects that are more likely to succeed.' ))
681- autogen_tests_parser .add_argument (
682- '--max-projects-to-try' ,
683- type = int ,
684- default = 1 ,
685- help = 'Maximum number of projects to try (default: 1).' )
686- autogen_tests_parser .add_argument (
687- '--container-output' ,
688- choices = ['silent' , 'file' , 'stdout' ],
689- default = 'stdout' ,
690- help = 'How to handle output from the container. ' )
691- autogen_tests_parser .add_argument (
692- '--projects' ,
693- default = '' ,
694- nargs = '+' ,
695- help = ('The name of the projects to autogenerate tests for. '
696- 'If not specified, all projects will be considered.' ))
697-
698565 extract_coverage_parser = subparsers .add_parser (
699566 'extract-test-coverage' ,
700567 help = 'Extract code coverage reports from run_tests.sh script' )
@@ -714,7 +581,6 @@ def main():
714581 'check-test' : _cmd_dispatcher_check_test ,
715582 'check-replay' : _cmd_dispatcher_check_replay ,
716583 'build-cached-image' : _cmd_dispatcher_build_cached_image ,
717- 'autogen-tests' : _cmd_dispatcher_autogen_tests ,
718584 'extract-test-coverage' : _cmd_dispatcher_extract_coverage ,
719585 'check-run-tests-script' : _cmd_check_run_tests_script
720586 }
0 commit comments