Validation is the process/tools committers use to validate that the artifacts we produce are correct in terms of the ASF and other quality control measures. Validation is not about testing, which is covered by TestPlans and TestIdeas as well as our test framework, etc. Validation is more about checking licenses, correct headers, using RAT, etc.
As of 3.2 and 4.0 (both Lucene and Solr) the test process now checks to see if all libraries are properly licensed, etc. by running the validation code in Lucene/src/utils.
Validation currently scans the specified lib directories and, for every jar file, looks for a corresponding license file, and in certain cases a NOTICE file. It does not currently build out a LICENSE.txt or NOTICE.txt file from these, but see https://issues.apache.org/jira/browse/LUCENE-2971 for a issue to cover that.
All Jar files, therefore must have a corresponding file named using the following convention:
file-name-LICENSE-[LICENSE TYPE].txt where LICENSE TYPE is one of the licenses enumerated in org.apache.lucene.validation.LicenseType (under ./lucene/src/tools). The trunk version is here. The LicenseType enum also specifies whether a NOTICE file is required, so please refer to it for information on whether a NOTICE file is required. (Note, this isn't cast in stone, as it is based on Grant's interpretation of ASF docs)
Other Validation Ideas
- Check for conflicting library versions
- Tools for validating patches similar to Hadoop's precommit tools
- Release validation tools (check the contents of an artifact)