![David Ostrovsky](/assets/img/avatar_default.png)
Split the current gerrit-acceptance-tests in two parts: * framework + some needed deps, that is exposed as additional plugin artifact * rest of the gerrit-acceptance-test project To implement the split and not to pull in too many dependencies, some refactoring was needed. Particularly, gerrit-server:testutil depends on gerrit-server:server, that depends on almost everything. Similar problem was with gerrit-pgm:pgm, that is needed for AbstractDaemonTest to work. Split the rules in gerrit-pgm to break transitive dependency chain. We shouldn't ship artifacts twice, in plugin-api and in acceptance-framework. This change also partially reverts Ie9e63de622, where //gerrit-acceptance-tests:lib with all its transitive dependencies was included in plugin-api artifact. Expose gerrit-acceptance-framework as new plugin artifact. This allows us to support unit tests in plugins in three different build modes: * Buck in tree build mode * Buck standalone build mode * Maven build To install gerrit-acceptance-framework locally, the following command is used: buck build api_install To deploy gerrit-acceptance-framework to Maven Central, the following command is used: buck build api_deploy To support unit tests in tree build mode, the following Buck variable is exposed: GERRIT_TESTS and can be used, e.g.: java_test( name = 'cookbook_tests', srcs = glob(['src/test/java/**/*IT.java']), labels = ['cookbook-plugin'], source_under_test = [':cookbook-plugin__plugin'], deps = GERRIT_PLUGIN_API + GERRIT_TESTS + [ ':cookbook-plugin__plugin', ], ) To support unit tests in standalone build mode, acceptance-framework maven jar is defined in lib/gerrit/BUCK file: maven_jar( name = 'acceptance-framework', id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER, license = 'Apache2.0', attach_source = False, repository = REPO, ) bucklets/gerrit_plugin.bucklet is extended with the same variable that points to the new maven_jar artifact, so that the same Buck java_test() rule can be used in both modes. Test plan: 1. run tests in gerrit tree 2. apply corresponding change to cookbook-plugin and run tests in gerrit tree mode 3. apply corresponding change to bucklets, and run tests for cookbook-plugin in standalone build mode Change-Id: I4cadf6616de36ca24712f8b07d282b7a50911105
61 lines
2.0 KiB
Python
Executable File
61 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright (C) 2014 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from __future__ import print_function
|
|
from optparse import OptionParser
|
|
import os.path
|
|
import re
|
|
import sys
|
|
|
|
parser = OptionParser()
|
|
opts, args = parser.parse_args()
|
|
|
|
if not len(args):
|
|
parser.error('not enough arguments')
|
|
elif len(args) > 1:
|
|
parser.error('too many arguments')
|
|
|
|
DEST_PATTERN = r'\g<1>%s\g<3>' % args[0]
|
|
|
|
|
|
def replace_in_file(filename, src_pattern):
|
|
try:
|
|
f = open(filename, "r")
|
|
s = f.read()
|
|
f.close()
|
|
s = re.sub(src_pattern, DEST_PATTERN, s)
|
|
f = open(filename, "w")
|
|
f.write(s)
|
|
f.close()
|
|
except IOError as err:
|
|
print('error updating %s: %s' % (filename, err), file=sys.stderr)
|
|
|
|
|
|
src_pattern = re.compile(r'^(\s*<version>)([-.\w]+)(</version>\s*)$',
|
|
re.MULTILINE)
|
|
for project in ['gerrit-acceptance-framework', 'gerrit-extension-api',
|
|
'gerrit-plugin-api', 'gerrit-plugin-archetype',
|
|
'gerrit-plugin-gwt-archetype', 'gerrit-plugin-gwtui',
|
|
'gerrit-plugin-js-archetype', 'gerrit-war']:
|
|
pom = os.path.join(project, 'pom.xml')
|
|
replace_in_file(pom, src_pattern)
|
|
|
|
src_pattern = re.compile(r"^(GERRIT_VERSION = ')([-.\w]+)(')$", re.MULTILINE)
|
|
replace_in_file('VERSION', src_pattern)
|
|
|
|
src_pattern = re.compile(r'^(\s*-DarchetypeVersion=)([-.\w]+)(\s*\\)$',
|
|
re.MULTILINE)
|
|
replace_in_file(os.path.join('Documentation', 'dev-plugins.txt'), src_pattern)
|