mirror of
https://github.com/Alfresco/SearchServices.git
synced 2025-09-10 14:11:25 +00:00
SEARCH-1475 Unit test to check declared third party licenses.
This commit is contained in:
@@ -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>
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user