GH-345 - Properly handle manually declared entity scan and autoconfiguration packages.

If Spring Modulith packages were explicitly configured as autoconfiguration or entity scan packages, the test autoconfiguration would fail as it previously attempted to manipulate an immutable list. We now create a copy of that list to fix this.
This commit is contained in:
Oliver Drotbohm
2023-11-03 20:16:38 +01:00
parent 4e453885ee
commit e2cc4fe2a4
2 changed files with 62 additions and 2 deletions

View File

@@ -15,6 +15,7 @@
*/
package org.springframework.modulith.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -72,14 +73,15 @@ class ModuleTestAutoConfiguration {
return;
}
var packagesToSet = new ArrayList<>(packages);
var definition = registry.getBeanDefinition(beanName);
var holder = definition.getConstructorArgumentValues().getArgumentValue(0, String[].class);
Arrays.stream((String[]) holder.getValue())
.filter(it -> it.startsWith("org.springframework.modulith"))
.forEach(packages::add);
.forEach(packagesToSet::add);
definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new));
definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packagesToSet.toArray(String[]::new));
}
}
}