Exemplo n.º 1
0
def php_update(filepath, github_account):
    """Wrapper over the PHP release function to standardize parameters."""
    ddocs = discovery_artifact_manager.discovery_documents(
        filepath,
        preferred=True,
        skip=['discovery:v1', 'websecurityscanner:v1'])
    google_api_php_client_services.update(filepath, github_account, ddocs)
def test_update_no_changes(clone_from_github_mock, temporary_directory_mock,
                           listdir_mock, check_output_mock):
    repo_mock = Mock()
    repo_mock.diff_name_status.side_effect = [[], [], []]
    side_effect = common.clone_from_github_mock_side_effect(repo_mock)
    clone_from_github_mock.side_effect = side_effect
    discovery_documents = {'foo:v1': 'foo.v1.json'}
    temporary_directory_mock.return_value.__enter__.return_value = '/tmp2'
    listdir_mock.side_effect = [['Foo', 'Foo.php']]

    manager = Mock()
    manager.attach_mock(clone_from_github_mock, 'clone_from_github')
    manager.attach_mock(check_output_mock, 'check_output')
    manager.attach_mock(repo_mock, 'repo')

    google_api_php_client_services.update('/tmp', common.GITHUB_ACCOUNT,
                                          discovery_documents)
    assert manager.mock_calls == [
        call.clone_from_github('google/google-api-php-client-services',
                               '/tmp/google-api-php-client-services',
                               github_account=common.GITHUB_ACCOUNT),
        call.check_output([
            'virtualenv', '/tmp/google-api-php-client-services/venv', '-p',
            'python2.7'
        ]),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/pip', 'install',
            'google-apis-client-generator==1.4.3'
        ]),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/generate_library',
            '--input=foo.v1.json', '--language=php',
            '--language_variant=1.2.0', '--output_dir=/tmp2'
        ]),
        call.check_output([
            'rm', '-rf',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo.php',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo'
        ]),
        call.check_output([
            'cp', '/tmp2/Foo.php',
            ('/tmp/google-api-php-client-services/src/Google/Service'
             '/Foo.php')
        ]),
        call.check_output([
            'cp', '-r', '/tmp2/Foo',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo'
        ]),
        call.repo.add(['src']),
        call.repo.diff_name_status()
    ]
def test_update(clone_from_github_mock, temporary_directory_mock, listdir_mock,
                check_output_mock, date_mock):
    repo_mock = Mock()
    repo_mock.diff_name_status.side_effect = [
        [('src/Google/Service/Foo.php', _git.Status.ADDED),
         ('src/Google/Service/Foo/FooBar.php', _git.Status.ADDED)],
        [('src/Google/Service/Bar.php', _git.Status.UPDATED),
         ('src/Google/Service/Bar/BarFoo.php', _git.Status.ADDED)],
        []  # No change to "baz:v1".
    ]
    side_effect = common.clone_from_github_mock_side_effect(repo_mock)
    clone_from_github_mock.side_effect = side_effect
    discovery_documents = {
        'foo:v1': 'foo.v1.json',
        'bar:v1': 'bar.v1.json',
        'baz:v1': 'baz.v1.json'
    }
    temporary_directory_mock.return_value.__enter__.return_value = '/tmp2'
    listdir_mock.side_effect = [['Foo', 'Foo.php'], ['Bar.php', 'Bar'],
                                ['Baz.php', 'Baz']]
    date_mock.today.return_value.isoformat.return_value = '2000-01-01'

    manager = Mock()
    manager.attach_mock(clone_from_github_mock, 'clone_from_github')
    manager.attach_mock(check_output_mock, 'check_output')
    manager.attach_mock(repo_mock, 'repo')

    google_api_php_client_services.update('/tmp', common.GITHUB_ACCOUNT,
                                          discovery_documents)
    assert manager.mock_calls == [
        call.clone_from_github('google/google-api-php-client-services',
                               '/tmp/google-api-php-client-services',
                               github_account=common.GITHUB_ACCOUNT),
        call.check_output([
            'virtualenv', '/tmp/google-api-php-client-services/venv', '-p',
            'python2.7'
        ]),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/pip', 'install',
            'google-apis-client-generator==1.4.3'
        ]),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/generate_library',
            '--input=foo.v1.json', '--language=php',
            '--language_variant=1.2.0', '--output_dir=/tmp2'
        ]),
        call.check_output([
            'rm', '-rf',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo.php',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo'
        ]),
        call.check_output([
            'cp', '/tmp2/Foo.php',
            ('/tmp/google-api-php-client-services/src/Google/Service'
             '/Foo.php')
        ]),
        call.check_output([
            'cp', '-r', '/tmp2/Foo',
            '/tmp/google-api-php-client-services/src/Google/Service/Foo'
        ]),
        call.repo.add(['src']),
        call.repo.diff_name_status(),
        call.repo.commit('', '_', '_'),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/generate_library',
            '--input=bar.v1.json', '--language=php',
            '--language_variant=1.2.0', '--output_dir=/tmp2'
        ]),
        call.check_output([
            'rm', '-rf',
            '/tmp/google-api-php-client-services/src/Google/Service/Bar.php',
            '/tmp/google-api-php-client-services/src/Google/Service/Bar'
        ]),
        call.check_output([
            'cp', '/tmp2/Bar.php',
            ('/tmp/google-api-php-client-services/src/Google/Service'
             '/Bar.php')
        ]),
        call.check_output([
            'cp', '-r', '/tmp2/Bar',
            '/tmp/google-api-php-client-services/src/Google/Service/Bar'
        ]),
        call.repo.add(['src']),
        call.repo.diff_name_status(),
        call.repo.commit('', '_', '_'),
        call.check_output([
            '/tmp/google-api-php-client-services/venv/bin/generate_library',
            '--input=baz.v1.json', '--language=php',
            '--language_variant=1.2.0', '--output_dir=/tmp2'
        ]),
        call.check_output([
            'rm', '-rf',
            '/tmp/google-api-php-client-services/src/Google/Service/Baz.php',
            '/tmp/google-api-php-client-services/src/Google/Service/Baz'
        ]),
        call.check_output([
            'cp', '/tmp2/Baz.php',
            ('/tmp/google-api-php-client-services/src/Google/Service'
             '/Baz.php')
        ]),
        call.check_output([
            'cp', '-r', '/tmp2/Baz',
            '/tmp/google-api-php-client-services/src/Google/Service/Baz'
        ]),
        call.repo.add(['src']),
        call.repo.diff_name_status(),
        call.check_output(['composer', 'update'],
                          cwd='/tmp/google-api-php-client-services'),
        call.check_output(['vendor/bin/phpunit', '-c', '.'],
                          cwd='/tmp/google-api-php-client-services'),
        call.repo.soft_reset('HEAD~2'),
        call.repo.commit(('Autogenerated update (2000-01-01)\n'
                          '\nAdd:\n- foo:v1\n'
                          '\nUpdate:\n- bar:v1'), 'Alice', '*****@*****.**'),
        call.repo.push()
    ]