Exemplo n.º 1
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
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'))
Exemplo n.º 9
0
 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)