Fix behaviour of DependencyCustomizer ifAllResourcesPresent

Previously, DependencyCustomizer's ifAllResourcesPresent method
would return a customizer that added modules if any of the resources
were present. This commit corrects this behaviours so that modules are
only added if all resources are present.

Fixes gh-20418
This commit is contained in:
Andy Wilkinson 2020-03-11 13:00:49 +00:00
parent 2b2113714d
commit f251772e17
4 changed files with 44 additions and 3 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -144,7 +144,6 @@ public class DependencyCustomizer {
if (DependencyCustomizer.this.loader.getResource(path) == null) {
return false;
}
return true;
}
catch (Exception ex) {
// swallow exception and continue

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -138,6 +138,48 @@ public class DependencyCustomizerTests {
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).hasSize(1);
}
@Test
public void allResourcesPresentWithAllResourcesPresentPerformsAdd() {
this.dependencyCustomizer.ifAllResourcesPresent("dependency-customizer-tests/resource1.txt",
"dependency-customizer-tests/resource2.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).hasSize(1);
}
@Test
public void allResourcesPresentWithSomeResourcesPresentDoesNotPerformAdd() {
this.dependencyCustomizer.ifAllResourcesPresent("dependency-customizer-tests/resource1.txt",
"dependency-customizer-tests/does-not-exist.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).isEmpty();
}
@Test
public void allResourcesPresentWithNoResourcesPresentDoesNotPerformAdd() {
this.dependencyCustomizer.ifAllResourcesPresent("dependency-customizer-tests/does-not-exist",
"dependency-customizer-tests/does-not-exist-either.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).isEmpty();
}
@Test
public void anyResourcesPresentWithAllResourcesPresentPerformsAdd() {
this.dependencyCustomizer.ifAnyResourcesPresent("dependency-customizer-tests/resource1.txt",
"dependency-customizer-tests/resource2.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).hasSize(1);
}
@Test
public void anyResourcesPresentWithSomeResourcesPresentPerforms() {
this.dependencyCustomizer.ifAnyResourcesPresent("dependency-customizer-tests/resource1.txt",
"dependency-customizer-tests/does-not-exist.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).hasSize(1);
}
@Test
public void anyResourcesPresentWithNoResourcesPresentDoesNotPerformAdd() {
this.dependencyCustomizer.ifAnyResourcesPresent("dependency-customizer-tests/does-not-exist",
"dependency-customizer-tests/does-not-exist-either.txt").add("spring-boot-starter-logging");
assertThat(this.classNode.getAnnotations(new ClassNode(Grab.class))).isEmpty();
}
private void assertGrabAnnotation(AnnotationNode annotationNode, String group, String module, String version,
String classifier, String type, boolean transitive) {
assertThat(getMemberValue(annotationNode, "group")).isEqualTo(group);