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
		
	
		
			
				
	
	
		
			203 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
CONSTANTS_SRC = [
 | 
						|
  'src/main/java/com/google/gerrit/server/documentation/Constants.java',
 | 
						|
]
 | 
						|
 | 
						|
SRCS = glob(
 | 
						|
  ['src/main/java/**/*.java'],
 | 
						|
  excludes = CONSTANTS_SRC,
 | 
						|
)
 | 
						|
RESOURCES =  glob(['src/main/resources/**/*'])
 | 
						|
 | 
						|
java_library(
 | 
						|
  name = 'constants',
 | 
						|
  srcs = CONSTANTS_SRC,
 | 
						|
  visibility = ['PUBLIC'],
 | 
						|
)
 | 
						|
 | 
						|
# TODO(sop) break up gerrit-server java_library(), its too big
 | 
						|
java_library(
 | 
						|
  name = 'server',
 | 
						|
  srcs = SRCS,
 | 
						|
  resources = RESOURCES,
 | 
						|
  deps = [
 | 
						|
    ':constants',
 | 
						|
    '//gerrit-antlr:query_exception',
 | 
						|
    '//gerrit-antlr:query_parser',
 | 
						|
    '//gerrit-common:annotations',
 | 
						|
    '//gerrit-common:server',
 | 
						|
    '//gerrit-extension-api:api',
 | 
						|
    '//gerrit-patch-commonsnet:commons-net',
 | 
						|
    '//gerrit-patch-jgit:server',
 | 
						|
    '//gerrit-prettify:server',
 | 
						|
    '//gerrit-reviewdb:server',
 | 
						|
    '//gerrit-util-cli:cli',
 | 
						|
    '//gerrit-util-ssl:ssl',
 | 
						|
    '//lib:args4j',
 | 
						|
    '//lib:automaton',
 | 
						|
    '//lib:grappa',
 | 
						|
    '//lib:gson',
 | 
						|
    '//lib:guava',
 | 
						|
    '//lib:gwtjsonrpc',
 | 
						|
    '//lib:gwtorm',
 | 
						|
    '//lib:jsch',
 | 
						|
    '//lib:juniversalchardet',
 | 
						|
    '//lib:mime-util',
 | 
						|
    '//lib:pegdown',
 | 
						|
    '//lib:protobuf',
 | 
						|
    '//lib:velocity',
 | 
						|
    '//lib/antlr:java_runtime',
 | 
						|
    '//lib/auto:auto-value',
 | 
						|
    '//lib/commons:codec',
 | 
						|
    '//lib/commons:compress',
 | 
						|
    '//lib/commons:dbcp',
 | 
						|
    '//lib/commons:lang',
 | 
						|
    '//lib/commons:net',
 | 
						|
    '//lib/commons:validator',
 | 
						|
    '//lib/guice:guice',
 | 
						|
    '//lib/guice:guice-assistedinject',
 | 
						|
    '//lib/guice:guice-servlet',
 | 
						|
    '//lib/jgit:jgit',
 | 
						|
    '//lib/jgit:jgit-archive',
 | 
						|
    '//lib/joda:joda-time',
 | 
						|
    '//lib/log:api',
 | 
						|
    '//lib/log:jsonevent-layout',
 | 
						|
    '//lib/log:log4j',
 | 
						|
    '//lib/lucene:analyzers-common',
 | 
						|
    '//lib/lucene:core-and-backward-codecs',
 | 
						|
    '//lib/lucene:queryparser',
 | 
						|
    '//lib/ow2:ow2-asm',
 | 
						|
    '//lib/ow2:ow2-asm-tree',
 | 
						|
    '//lib/ow2:ow2-asm-util',
 | 
						|
    '//lib/prolog:runtime',
 | 
						|
  ],
 | 
						|
  provided_deps = [
 | 
						|
    '//lib:servlet-api-3_1',
 | 
						|
  ],
 | 
						|
  visibility = ['PUBLIC'],
 | 
						|
)
 | 
						|
 | 
						|
java_sources(
 | 
						|
  name = 'server-src',
 | 
						|
  srcs = SRCS + RESOURCES,
 | 
						|
  visibility = ['PUBLIC'],
 | 
						|
)
 | 
						|
 | 
						|
TESTUTIL_DEPS = [
 | 
						|
  ':server',
 | 
						|
  '//gerrit-common:server',
 | 
						|
  '//gerrit-cache-h2:cache-h2',
 | 
						|
  '//gerrit-extension-api:api',
 | 
						|
  '//gerrit-gpg:gpg',
 | 
						|
  '//gerrit-lucene:lucene',
 | 
						|
  '//gerrit-reviewdb:server',
 | 
						|
  '//lib:gwtorm',
 | 
						|
  '//lib:h2',
 | 
						|
  '//lib:truth',
 | 
						|
  '//lib/guice:guice',
 | 
						|
  '//lib/guice:guice-servlet',
 | 
						|
  '//lib/jgit:jgit',
 | 
						|
  '//lib/jgit:junit',
 | 
						|
  '//lib/log:api',
 | 
						|
  '//lib/log:impl_log4j',
 | 
						|
  '//lib/log:log4j',
 | 
						|
]
 | 
						|
 | 
						|
TESTUTIL = glob([
 | 
						|
  'src/test/java/com/google/gerrit/testutil/**/*.java',
 | 
						|
  'src/test/java/com/google/gerrit/server/project/Util.java',
 | 
						|
  ])
 | 
						|
java_library(
 | 
						|
  name = 'testutil',
 | 
						|
  srcs = TESTUTIL,
 | 
						|
  deps = [
 | 
						|
    '//lib/auto:auto-value',
 | 
						|
  ],
 | 
						|
  provided_deps = TESTUTIL_DEPS,
 | 
						|
  exported_deps = [
 | 
						|
    '//lib/easymock:easymock',
 | 
						|
    '//lib/powermock:powermock-api-easymock',
 | 
						|
    '//lib/powermock:powermock-api-support',
 | 
						|
    '//lib/powermock:powermock-core',
 | 
						|
    '//lib/powermock:powermock-module-junit4',
 | 
						|
    '//lib/powermock:powermock-module-junit4-common',
 | 
						|
  ],
 | 
						|
  visibility = ['PUBLIC'],
 | 
						|
)
 | 
						|
 | 
						|
PROLOG_TEST_CASE = [
 | 
						|
  'src/test/java/com/google/gerrit/rules/PrologTestCase.java',
 | 
						|
]
 | 
						|
PROLOG_TESTS = glob(
 | 
						|
  ['src/test/java/com/google/gerrit/rules/**/*.java'],
 | 
						|
  excludes = PROLOG_TEST_CASE,
 | 
						|
)
 | 
						|
 | 
						|
java_library(
 | 
						|
  name = 'prolog_test_case',
 | 
						|
  srcs = PROLOG_TEST_CASE,
 | 
						|
  deps = [
 | 
						|
    ':server',
 | 
						|
    '//gerrit-common:server',
 | 
						|
    '//gerrit-extension-api:api',
 | 
						|
    '//lib:guava',
 | 
						|
    '//lib:junit',
 | 
						|
    '//lib:truth',
 | 
						|
    '//lib/guice:guice',
 | 
						|
    '//lib/prolog:runtime',
 | 
						|
  ],
 | 
						|
)
 | 
						|
 | 
						|
java_test(
 | 
						|
  name = 'prolog_tests',
 | 
						|
  srcs = PROLOG_TESTS,
 | 
						|
  resources = glob(['src/test/resources/com/google/gerrit/rules/**/*']),
 | 
						|
  deps = TESTUTIL_DEPS + [
 | 
						|
    ':prolog_test_case',
 | 
						|
    ':testutil',
 | 
						|
    '//gerrit-server/src/main/prolog:common',
 | 
						|
    '//lib/prolog:runtime',
 | 
						|
  ],
 | 
						|
)
 | 
						|
 | 
						|
QUERY_TESTS = glob(
 | 
						|
  ['src/test/java/com/google/gerrit/server/query/**/*.java'],
 | 
						|
)
 | 
						|
 | 
						|
java_test(
 | 
						|
  name = 'query_tests',
 | 
						|
  srcs = QUERY_TESTS,
 | 
						|
  deps = TESTUTIL_DEPS + [
 | 
						|
    ':testutil',
 | 
						|
    '//gerrit-antlr:query_exception',
 | 
						|
    '//gerrit-antlr:query_parser',
 | 
						|
    '//gerrit-common:annotations',
 | 
						|
    '//gerrit-server/src/main/prolog:common',
 | 
						|
    '//lib/antlr:java_runtime',
 | 
						|
    '//lib/joda:joda-time',
 | 
						|
  ],
 | 
						|
  source_under_test = [':server'],
 | 
						|
)
 | 
						|
 | 
						|
java_test(
 | 
						|
  name = 'server_tests',
 | 
						|
  labels = ['server'],
 | 
						|
  srcs = glob(
 | 
						|
    ['src/test/java/**/*.java'],
 | 
						|
    excludes = TESTUTIL + PROLOG_TESTS + PROLOG_TEST_CASE + QUERY_TESTS
 | 
						|
  ),
 | 
						|
  deps = TESTUTIL_DEPS + [
 | 
						|
    ':testutil',
 | 
						|
    '//gerrit-antlr:query_exception',
 | 
						|
    '//gerrit-common:annotations',
 | 
						|
    '//gerrit-server/src/main/prolog:common',
 | 
						|
    '//lib:args4j',
 | 
						|
    '//lib:grappa',
 | 
						|
    '//lib:guava',
 | 
						|
    '//lib/guice:guice-assistedinject',
 | 
						|
    '//lib/joda:joda-time',
 | 
						|
    '//lib/prolog:runtime',
 | 
						|
  ],
 | 
						|
  source_under_test = [':server'],
 | 
						|
  visibility = ['//tools/eclipse:classpath'],
 | 
						|
)
 |