
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
173 lines
3.6 KiB
Python
173 lines
3.6 KiB
Python
SRCS = 'src/main/java/com/google/gerrit/pgm/'
|
|
RSRCS = 'src/main/resources/com/google/gerrit/pgm/'
|
|
|
|
INIT_API_SRCS = glob([SRCS + 'init/api/*.java'])
|
|
|
|
DEPS = [
|
|
'//gerrit-common:server',
|
|
'//gerrit-extension-api:api',
|
|
'//gerrit-gwtexpui:linker_server',
|
|
'//gerrit-gwtexpui:server',
|
|
'//gerrit-httpd:httpd',
|
|
'//gerrit-server:server',
|
|
'//gerrit-sshd:sshd',
|
|
'//gerrit-reviewdb:server',
|
|
'//lib:guava',
|
|
'//lib/guice:guice',
|
|
'//lib/guice:guice-assistedinject',
|
|
'//lib/guice:guice-servlet',
|
|
'//lib/jgit:jgit',
|
|
'//lib/log:api',
|
|
'//lib/log:jsonevent-layout',
|
|
'//lib/log:log4j'
|
|
]
|
|
|
|
java_library(
|
|
name = 'init-api',
|
|
srcs = INIT_API_SRCS,
|
|
deps = DEPS + ['//gerrit-common:annotations'],
|
|
visibility = ['PUBLIC'],
|
|
)
|
|
|
|
java_sources(
|
|
name = 'init-api-src',
|
|
srcs = INIT_API_SRCS,
|
|
visibility = ['PUBLIC'],
|
|
)
|
|
|
|
java_library(
|
|
name = 'init',
|
|
srcs = glob([SRCS + 'init/*.java']),
|
|
resources = glob([RSRCS + 'init/*']),
|
|
deps = DEPS + [
|
|
':init-api',
|
|
':util',
|
|
'//gerrit-common:annotations',
|
|
'//gerrit-lucene:lucene',
|
|
'//lib:args4j',
|
|
'//lib:gwtjsonrpc',
|
|
'//lib:gwtorm',
|
|
'//lib:h2',
|
|
'//lib/commons:validator',
|
|
'//lib/mina:sshd',
|
|
],
|
|
provided_deps = ['//gerrit-launcher:launcher'],
|
|
visibility = [
|
|
'//gerrit-acceptance-framework/...',
|
|
'//gerrit-acceptance-tests/...',
|
|
'//gerrit-war:',
|
|
],
|
|
)
|
|
|
|
REST_UTIL_DEPS = [
|
|
'//gerrit-cache-h2:cache-h2',
|
|
'//gerrit-util-cli:cli',
|
|
'//lib:args4j',
|
|
'//lib:gwtorm',
|
|
'//lib/commons:dbcp',
|
|
]
|
|
|
|
java_library(
|
|
name = 'util',
|
|
deps = DEPS + REST_UTIL_DEPS,
|
|
exported_deps = [':util-nodep'],
|
|
visibility = [
|
|
'//gerrit-acceptance-tests/...',
|
|
'//gerrit-gwtdebug:gwtdebug',
|
|
'//gerrit-war:',
|
|
],
|
|
)
|
|
|
|
java_library(
|
|
name = 'util-nodep',
|
|
srcs = glob([SRCS + 'util/*.java']),
|
|
provided_deps = DEPS + REST_UTIL_DEPS,
|
|
visibility = [
|
|
'//gerrit-acceptance-framework/...',
|
|
],
|
|
)
|
|
|
|
java_library(
|
|
name = 'http',
|
|
srcs = glob([SRCS + 'http/**/*.java']),
|
|
deps = DEPS + [
|
|
'//lib/jetty:jmx',
|
|
'//lib/jetty:server',
|
|
'//lib/jetty:servlet',
|
|
],
|
|
provided_deps = [
|
|
'//gerrit-launcher:launcher',
|
|
'//lib:servlet-api-3_1',
|
|
],
|
|
visibility = ['//gerrit-war:'],
|
|
)
|
|
|
|
REST_PGM_DEPS = [
|
|
':http',
|
|
':init',
|
|
':init-api',
|
|
':util',
|
|
'//gerrit-cache-h2:cache-h2',
|
|
'//gerrit-gpg:gpg',
|
|
'//gerrit-lucene:lucene',
|
|
'//gerrit-oauth:oauth',
|
|
'//gerrit-openid:openid',
|
|
'//lib:args4j',
|
|
'//lib:gwtorm',
|
|
'//lib:protobuf',
|
|
'//lib:servlet-api-3_1',
|
|
'//lib/auto:auto-value',
|
|
'//lib/prolog:cafeteria',
|
|
'//lib/prolog:compiler',
|
|
'//lib/prolog:runtime',
|
|
]
|
|
|
|
java_library(
|
|
name = 'pgm',
|
|
resources = glob([RSRCS + '*']),
|
|
deps = DEPS + REST_PGM_DEPS + [
|
|
':daemon',
|
|
],
|
|
visibility = [
|
|
'//:',
|
|
'//gerrit-acceptance-tests/...',
|
|
'//gerrit-gwtdebug:gwtdebug',
|
|
'//tools/eclipse:classpath',
|
|
'//Documentation:licenses.txt',
|
|
],
|
|
)
|
|
|
|
# no transitive deps, used for gerrit-acceptance-framework
|
|
java_library(
|
|
name = 'daemon',
|
|
srcs = glob([SRCS + '*.java', SRCS + 'rules/*.java']),
|
|
resources = glob([RSRCS + '*']),
|
|
deps = ['//lib/auto:auto-value'],
|
|
provided_deps = DEPS + REST_PGM_DEPS + [
|
|
'//gerrit-launcher:launcher',
|
|
],
|
|
visibility = [
|
|
'//gerrit-acceptance-framework/...',
|
|
'//gerrit-gwtdebug:gwtdebug',
|
|
],
|
|
)
|
|
|
|
java_test(
|
|
name = 'pgm_tests',
|
|
srcs = glob(['src/test/java/**/*.java']),
|
|
deps = [
|
|
':init',
|
|
':init-api',
|
|
':pgm',
|
|
'//gerrit-common:server',
|
|
'//gerrit-server:server',
|
|
'//lib:guava',
|
|
'//lib:junit',
|
|
'//lib/easymock:easymock',
|
|
'//lib/guice:guice',
|
|
'//lib/jgit:jgit',
|
|
'//lib/jgit:junit',
|
|
],
|
|
source_under_test = [':pgm'],
|
|
)
|