def api_information(auth_token, repo_name, issue_number): """Comments the api information on the pr""" gradle.run('apiInformation', '--continue', check=False) dir_suffix = 'build/apiinfo' comment_string = "" for filename in os.listdir(dir_suffix): subproject = filename formatted_output_lines = [] with open(os.path.join(dir_suffix, filename), 'r') as f: outputlines = f.readlines() for line in outputlines: if 'error' in line: formatted_output_lines.append(line[line.find('error:'):]) elif 'warning' in line: formatted_output_lines.append(line[line.find('warning:'):]) if formatted_output_lines: comment_string += 'The public api surface has changed for the subproject {}:\n'.format( subproject) comment_string += ''.join(formatted_output_lines) comment_string += '\n\n' if comment_string: comment_string += ( 'Please update the api.txt files for the subprojects being affected by this change ' 'by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.\n' ) # Comment to github. github_client = github.Github(auth_token) repo = github_client.get_repo(repo_name) pr = repo.get_pull(int(issue_number)) pr.create_issue_comment(comment_string) exit(1)
def fireperf_e2e_test(target_environment, plugin_repo_dir): """Run Firebase Performance end to end test.""" _logger.info('Building fireperf plugin ...') with chdir(plugin_repo_dir): build_plugin_task = ':firebase-performance:perf-plugin:publishToMavenLocal' gradle.run(build_plugin_task, gradle.P('publishMode', 'SNAPSHOT')) version = _find_fireperf_plugin_version() _logger.info( f'Setting environment variable: FIREBASE_PERF_PLUGIN_VERSION={version} ...' ) os.environ['FIREBASE_PERF_PLUGIN_VERSION'] = version fireperf_e2e_test_gradle_command = [ '--build-cache', '--parallel', '--continue', ':firebase-perf:e2e-app:deviceCheck' ] if target_environment == 'autopush': fireperf_e2e_test_gradle_command += [ gradle.P('fireperfBuildForAutopush', 'true') ] _logger.info( f'Running fireperf e2e test with target environment: {target_environment} ...' ) gradle.run(*fireperf_e2e_test_gradle_command)
def coverage(gradle_task, log, metrics_service_url, access_token): """Produces and uploads code coverage reports.""" gradle.run(gradle_task, '--continue') test_results = parse_xml_reports() test_report = {'metric': 'Coverage', 'results': test_results, 'log': log} post_report(metrics_service_url, access_token, test_report)
def coverage(pull_request, log, metrics_service_url, access_token): """Produces and uploads code coverage reports.""" coverage_task = 'checkCoverageChanged' if pull_request else 'checkCoverage' gradle.run(coverage_task, '--continue', check=False) test_results = _parse_xml_reports() test_report = {'metric': 'Coverage', 'results': test_results, 'log': log} uploader.post_report(test_report, metrics_service_url, access_token)
def coverage(pull_request, log, metrics_service_url, access_token): """Produces and uploads code coverage reports.""" coverage_task = 'checkCoverageChanged' if pull_request else 'checkCoverage' gradle.run(coverage_task, '--continue', check=False) test_results = _parse_xml_reports() test_report = {'metric': 'Coverage', 'results': test_results, 'log': log} note = ''' HTML coverage reports can be produced locally with `./gradlew <product>:checkCoverage`. Report files are located at `<product-build-dir>/reports/jacoco/`. ''' uploader.post_report(test_report, metrics_service_url, access_token, note)
def binary_size(pull_request, log, metrics_service_url, access_token): """Produces and uploads binary size reports.""" gradle.run('assembleAllForSmokeTests') affected_artifacts, all_artifacts = _parse_artifacts() artifacts = affected_artifacts if pull_request else all_artifacts sdks = ','.join(artifacts) gradle.run('assemble', '--continue', gradle.P('sdks', sdks), workdir='apk-size', check=False) test_results = _measure_aar_sizes(artifacts) + _measure_apk_sizes() test_report = {'metric': 'BinarySize', 'results': test_results, 'log': log} uploader.post_report(test_report, metrics_service_url, access_token)
def test_gradle_passes_arguments_to_gradlew(self): args = ['--foo', '-Pbar=baz', 'task1', 'task2'] gradle_opts = '--some --Dgradle_opts=foo' create_artifacts( Artifact( 'gradlew', content=scripts.with_expected_arguments( ['./gradlew'] + args, { 'GRADLE_OPTS': gradle_opts, 'ADB_INSTALL_TIMEOUT': gradle.ADB_INSTALL_TIMEOUT }), mode=0o744, )) self.assertEqual(gradle.run(*args, gradle_opts=gradle_opts), 0)
def test_when_gradle_suceeds_should_not_throw(self): create_artifacts( Artifact('gradlew', content=scripts.with_exit(1), mode=0o744)) self.assertRaises(subprocess.CalledProcessError, lambda: gradle.run('tasks'))
def test_when_gradle_suceeds_should_not_throw(self): create_artifacts( Artifact('gradlew', content=scripts.with_exit(0), mode=0o744)) self.assertEqual(gradle.run('tasks'), 0)