SEARCH-1475 Unit test to check declared third party licenses.

This commit is contained in:
Tom Page
2019-02-11 15:04:24 +00:00
parent d8e5565f2e
commit 714b361618
3 changed files with 228 additions and 3 deletions

View File

@@ -28,6 +28,20 @@
<version>${project.version}</version>
<classifier>libs</classifier>
</dependency>
<!-- Test dependencies. -->
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>alfresco-search-services-${project.version}</finalName>

View File

@@ -95,10 +95,9 @@ lucene-memory-6.6.5.jar https://lucene.apache.org/
lucene-codecs-6.6.5.jar https://lucene.apache.org/
lucene-join-6.6.5.jar https://lucene.apache.org/
guessencoding-1.4.jar http://docs.codehaus.org/display/GUESSENC/
xml-apis-2.10.0.jar https://github.com/FasterXML/jackson
jetty-start-9.3.14.v20161028.jar https://www.eclipse.org/jetty/licenses.html
xml-apis-1.4.01.jar https://github.com/FasterXML/jackson
resolver-20050927.jar http://xml.apache.org/commons/
jug-2.0.0.jar http://jug.safehaus.org/
jug-2.0.0-asl.jar http://jug.safehaus.org/
acegi-security-0.8.2_patched.jar http://sourceforge.net/projects/acegisecurity/
@@ -125,3 +124,122 @@ javax.activation-api-1.2.0.jar https://github.com/javaee/activation/blob/master
=== BSD ===
jibx-run-1.2.6.jar http://jibx.sourceforge.net/
=== Part of Apache Solr (Licenses listed separately) ===
antlr4-runtime-4.5.1-1.jar
apache-mime4j-core-0.7.2.jar
apache-mime4j-dom-0.7.2.jar
asm-5.1.jar
asm-commons-5.1.jar
aspectjrt-1.8.0.jar
attributes-binder-1.3.1.jar
avatica-core-1.9.0.jar
bcmail-jdk15-1.45.jar
bcprov-jdk15-1.45.jar
boilerpipe-1.1.0.jar
caffeine-2.4.0.jar
calcite-core-1.11.0.jar
calcite-linq4j-1.11.0.jar
carrot2-guava-18.0.jar
carrot2-mini-3.15.0.jar
commons-cli-1.2.jar
commons-codec-1.10.jar
commons-collections-3.2.2.jar
commons-collections4-4.1.jar
commons-compiler-2.7.6.jar
commons-compress-1.14.jar
commons-configuration-1.6.jar
commons-exec-1.3.jar
commons-fileupload-1.3.2.jar
commons-io-2.5.jar
commons-lang-2.6.jar
commons-math3-3.4.1.jar
curator-client-2.8.0.jar
curator-framework-2.8.0.jar
curator-recipes-2.8.0.jar
curvesapi-1.04.jar
dom4j-1.6.1.jar
eigenbase-properties-1.1.5.jar
fontbox-2.0.6.jar
gmetric4j-1.0.7.jar
guava-14.0.1.jar
hadoop-annotations-2.7.4.jar
hadoop-auth-2.7.4.jar
hadoop-common-2.7.4.jar
hadoop-hdfs-2.7.4.jar
hppc-0.7.1.jar
htrace-core-3.2.0-incubating.jar
httpclient-4.4.1.jar
httpcore-4.4.1.jar
httpmime-4.4.1.jar
icu4j-56.1.jar
isoparser-1.1.18.jar
jackcess-2.1.8.jar
jackson-core-asl-1.9.13.jar
jackson-databind-2.5.4.jar
jackson-dataformat-smile-2.5.4.jar
jackson-mapper-asl-1.9.13.jar
janino-2.7.6.jar
java-libpst-0.8.1.jar
javax.servlet-api-3.1.0.jar
jcl-over-slf4j-1.7.7.jar
jdom-1.0.jar
jempbox-1.8.13.jar
jetty-continuation-9.3.14.v20161028.jar
jetty-deploy-9.3.14.v20161028.jar
jetty-http-9.3.14.v20161028.jar
jetty-io-9.3.14.v20161028.jar
jetty-jmx-9.3.14.v20161028.jar
jetty-rewrite-9.3.14.v20161028.jar
jetty-security-9.3.14.v20161028.jar
jetty-server-9.3.14.v20161028.jar
jetty-servlet-9.3.14.v20161028.jar
jetty-servlets-9.3.14.v20161028.jar
jetty-util-9.3.14.v20161028.jar
jetty-webapp-9.3.14.v20161028.jar
jetty-xml-9.3.14.v20161028.jar
jmatio-1.2.jar
joda-time-2.2.jar
jsonic-1.2.7.jar
juniversalchardet-1.0.3.jar
langdetect-1.1-20120112.jar
log4j-1.2.17.jar
metadata-extractor-2.9.1.jar
metrics-core-3.2.2.jar
metrics-ganglia-3.2.2.jar
metrics-graphite-3.2.2.jar
metrics-jetty9-3.2.2.jar
metrics-jvm-3.2.2.jar
morfologik-fsa-2.1.1.jar
morfologik-polish-2.1.1.jar
morfologik-stemming-2.1.1.jar
noggit-0.6.jar
org.restlet-2.3.0.jar
org.restlet.ext.servlet-2.3.0.jar
pdfbox-2.0.6.jar
pdfbox-tools-2.0.6.jar
poi-3.17-beta1.jar
poi-ooxml-3.17-beta1.jar
poi-ooxml-schemas-3.17-beta1.jar
poi-scratchpad-3.17-beta1.jar
protobuf-java-3.1.0.jar
rome-1.5.1.jar
simple-xml-2.7.1.jar
slf4j-api-1.7.12.jar
slf4j-log4j12-1.7.12.jar
spatial4j-0.6.jar
stax2-api-3.1.4.jar
tagsoup-1.2.1.jar
t-digest-3.1.jar
tika-core-1.16.jar
tika-java7-1.16.jar
tika-parsers-1.16.jar
tika-xmp-1.16.jar
vorbis-java-core-0.8.jar
vorbis-java-tika-0.8.jar
woodstox-core-asl-4.4.1.jar
xmlbeans-2.6.0.jar
xmpcore-5.1.2.jar
xz-1.6.jar
zookeeper-3.4.10.jar

View File

@@ -0,0 +1,93 @@
/*
* Copyright (C) 2014 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.junit.Test;
import org.reflections.Reflections;
import org.reflections.scanners.ResourcesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
/**
* Tests of the declared third party licenses.
*/
public class ThirdPartyLicensesTest
{
/** A list of jars that should be ignored as they will be excluded from the released artifacts. */
private static final List<String> IGNORED = Arrays.asList("net/sf/ehcache/pool/sizeof/sizeof-agent.jar");
/** Libraries produced by Alfresco will start with "alfresco-". */
private static final String ALFRESCO_PREFIX = "alfresco-";
/** Spring Surf is also produced by Alfresco (it lives at https://github.com/Alfresco/surf). */
private static final String SPRING_SURF_PREFIX = "spring-surf-";
/**
* Test that the dependencies in notice.txt match the actual dependencies, to ensure we've included third party
* licenses for all dependencies.
*
* @throws Exception Unexpected
*/
@Test
public void testLicensesDeclared() throws Exception
{
// Get the jar files found on the classpath.
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setUrls(ClasspathHelper.forClassLoader())
.setScanners(new ResourcesScanner()));
List<String> jars = reflections.getResources(Pattern.compile(".*\\.jar")).stream()
.map(path -> path.replace("libs/", ""))
.filter(name -> !name.startsWith(ALFRESCO_PREFIX)) // We don't need a declaration for alfresco libraries.
.filter(name -> !name.startsWith(SPRING_SURF_PREFIX))
.filter(name -> !IGNORED.contains(name))
.sorted()
.collect(Collectors.toList());
// Get the dependencies referenced in notice.txt.
List<String> lines = Files.readAllLines(
new File(this.getClass().getClassLoader().getResource("licenses/notice.txt").getFile())
.toPath());
// Skip the header, which is all lines before the first "=== License Type ===" line.
int headerSize = 0;
for (String line : lines)
{
if (line.startsWith("==="))
{
break;
}
headerSize++;
}
List<String> declared = lines.stream()
.skip(headerSize)
.filter(line -> !line.isEmpty() && !line.startsWith("==="))
.map(line -> line.split(" ")[0])
.sorted()
.collect(Collectors.toList());
assertEquals("Jar files on classpath do not match those declared in notice.txt file.", jars, declared);
}
}