Skip to content

Commit db94a49

Browse files
author
Jan Diederich
committed
Added tests for StandardFilesMergeTransformer
1 parent b25d16c commit db94a49

File tree

5 files changed

+43
-19
lines changed

5 files changed

+43
-19
lines changed

src/main/groovy/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowCopyAction.groovy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.github.jengelman.gradle.plugins.shadow.relocation.Relocator
88
import com.github.jengelman.gradle.plugins.shadow.transformers.StandardFilesMergeTransformer
99
import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
1010
import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
11+
import groovy.util.logging.Slf4j
1112
import org.apache.commons.io.FilenameUtils
1213
import org.apache.commons.io.IOUtils
1314
import org.apache.tools.zip.UnixStat
@@ -39,17 +40,14 @@ import org.objectweb.asm.ClassReader
3940
import org.objectweb.asm.ClassVisitor
4041
import org.objectweb.asm.ClassWriter
4142
import org.objectweb.asm.commons.ClassRemapper
42-
import org.slf4j.Logger
43-
import org.slf4j.LoggerFactory
4443

4544
import javax.annotation.Nullable
4645
import java.util.zip.ZipException
4746

47+
@Slf4j
4848
class ShadowCopyAction implements CopyAction {
4949
static final long CONSTANT_TIME_FOR_ZIP_ENTRIES = (new GregorianCalendar(1980, 1, 1, 0, 0, 0)).getTimeInMillis()
5050

51-
final static Logger log = LoggerFactory.getLogger(ShadowCopyAction.class);
52-
5351
private final File zipFile
5452
private final ZipCompressor compressor
5553
private final DocumentationRegistry documentationRegistry

src/main/groovy/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowJar.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package com.github.jengelman.gradle.plugins.shadow.tasks;
22

3-
import java.io.File;
4-
import java.lang.reflect.InvocationTargetException;
5-
import java.util.ArrayList;
6-
import java.util.Collections;
7-
import java.util.List;
8-
import java.util.concurrent.Callable;
9-
10-
import javax.annotation.Nonnull;
11-
123
import com.github.jengelman.gradle.plugins.shadow.ShadowStats;
134
import com.github.jengelman.gradle.plugins.shadow.internal.DefaultDependencyFilter;
145
import com.github.jengelman.gradle.plugins.shadow.internal.DependencyFilter;
@@ -27,14 +18,12 @@
2718
import com.github.jengelman.gradle.plugins.shadow.transformers.StandardFilesMergeTransformer;
2819
import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer;
2920
import org.gradle.api.Action;
30-
import org.gradle.api.Task;
3121
import org.gradle.api.file.ConfigurableFileCollection;
3222
import org.gradle.api.file.DuplicatesStrategy;
3323
import org.gradle.api.file.FileCollection;
3424
import org.gradle.api.internal.DocumentationRegistry;
3525
import org.gradle.api.internal.file.FileResolver;
3626
import org.gradle.api.internal.file.copy.CopyAction;
37-
import org.gradle.api.specs.Spec;
3827
import org.gradle.api.tasks.CacheableTask;
3928
import org.gradle.api.tasks.Classpath;
4029
import org.gradle.api.tasks.Input;
@@ -47,9 +36,16 @@
4736
import org.gradle.api.tasks.SourceSet;
4837
import org.gradle.api.tasks.SourceSetContainer;
4938
import org.gradle.api.tasks.TaskAction;
50-
import org.gradle.api.tasks.*;
5139
import org.gradle.api.tasks.bundling.Jar;
5240
import org.gradle.api.tasks.util.PatternSet;
41+
import org.jetbrains.annotations.NotNull;
42+
43+
import java.io.File;
44+
import java.lang.reflect.InvocationTargetException;
45+
import java.util.ArrayList;
46+
import java.util.Collections;
47+
import java.util.List;
48+
import java.util.concurrent.Callable;
5349

5450
@CacheableTask
5551
public class ShadowJar extends Jar implements ShadowSpec {
@@ -139,7 +135,7 @@ public InheritManifest getManifest() {
139135
}
140136

141137
@Override
142-
@Nonnull
138+
@NotNull
143139
protected CopyAction createCopyAction() {
144140
DocumentationRegistry documentationRegistry = getServices().get(DocumentationRegistry.class);
145141
final UnusedTracker unusedTracker = minimizeJar ? UnusedTracker.forProject(getApiJars(),

src/test/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPluginSpec.groovy

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,38 @@ class ShadowPluginSpec extends PluginSpecification {
149149
BuildResult result = run('shadow')
150150
151151
then:
152-
assert result.output =~ /\s*IGNORING Weird-File\.StrangeFormat from test-project-1\.0-SNAPSHOT\.jar, size is different \([0-9]{4} vs [0-9]{2}\)\s+--> origin JAR was Weird-File.StrangeFormat/
152+
assert result.output =~ /\s*IGNORING Weird-File\.StrangeFormat from test-project-1\.0-SNAPSHOT\.jar,/
153+
/ size is different \([0-9]{4} vs [0-9]{2}\)\s+--> origin JAR was Weird-File.StrangeFormat/
154+
155+
/* Shouldn't appear, because the default StandardFileTransformer should've merged it,
156+
instead of just dropping all following licenses. */
157+
assert !result.output.contains('license.txt')
158+
}
159+
160+
def 'Tests the removal of the default transformer'() {
161+
given:
162+
URL artifact = this.class.classLoader.getResource('test-artifact-1.0-SNAPSHOT.jar')
163+
URL project = this.class.classLoader.getResource('test-project-1.0-SNAPSHOT.jar')
164+
165+
buildFile << """
166+
|task shadow(type: ${ShadowJar.name}) {
167+
| destinationDirectory = buildDir
168+
| archiveBaseName = 'shadow'
169+
| removeDefaultTransformers()
170+
| from('${artifact.path}')
171+
| from('${project.path}')
172+
|}
173+
""".stripMargin()
174+
175+
when:
176+
BuildResult result = run('shadow')
177+
178+
then:
179+
assert result.output =~ /\s*IGNORING Weird-File\.StrangeFormat from test-project-1\.0-SNAPSHOT\.jar,/
180+
/ size is different \([0-9]{4} vs [0-9]{2}\)\s+--> origin JAR was Weird-File.StrangeFormat/
181+
/\s+IGNORING test\.json from test-project-1\.0-SNAPSHOT.jar, size is different/
182+
// Without the StandardFileTransformer there should be a warning about multiple license files with the same name.
183+
assert result.output.contains('license.txt')
153184
}
154185
155186
def 'include project sources'() {
@@ -213,7 +244,6 @@ class ShadowPluginSpec extends PluginSpecification {
213244
214245
repositories { maven { url "${repo.uri}" } }
215246
dependencies { implementation project(':client') }
216-
217247
""".stripIndent()
218248
219249
File serverOutput = getFile('server/build/libs/server-all.jar')
181 Bytes
Binary file not shown.
190 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)