 947b5e53ac
			
		
	
	947b5e53ac
	
	
	
		
			
			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)
 |