@@ -41,41 +41,62 @@ public AotIntegrationTest() {
4141 public void testIfAllRequiredClassesAreRegisteredForAot () throws IOException {
4242 String artifactId = System .getProperty ("test.projectArtifactId" , "default" );
4343
44- Stream <String > providedReflectionConfigStreamOfNames = readAotConfigToStreamOfClassNames (
45- "./target/classes/META-INF/native-image/org.kohsuke/" + artifactId + "/reflect-config.json" );
46- Stream <String > providedNoReflectStreamOfNames = Files
47- .lines (Path .of ("./target/test-classes/no-reflect-and-serialization-list" ));
48- Stream <String > providedSerializationStreamOfNames = readAotConfigToStreamOfClassNames (
49- "./target/classes/META-INF/native-image/org.kohsuke/" + artifactId + "/serialization-config.json" );
50- Stream <String > providedAotConfigClassNamesPart = Stream
51- .concat (providedSerializationStreamOfNames ,
52- Stream .concat (providedReflectionConfigStreamOfNames , providedNoReflectStreamOfNames ))
53- .distinct ();
54- List <String > providedReflectionAndNoReflectionConfigNames = providedAotConfigClassNamesPart
44+ String reflectConfigPath = "./target/classes/META-INF/native-image/org.kohsuke/" + artifactId
45+ + "/reflect-config.json" ;
46+ String noReflectPath = "./target/test-classes/no-reflect-and-serialization-list" ;
47+ String serializationConfigPath = "./target/classes/META-INF/native-image/org.kohsuke/" + artifactId
48+ + "/serialization-config.json" ;
49+ String generatedReflectConfigPath = "./target/spring-aot/test/resources/META-INF/native-image/org.kohsuke/"
50+ + artifactId + "/reflect-config.json" ;
51+ String generatedSerializationConfigPath = "./target/spring-aot/test/resources/META-INF/native-image/org.kohsuke/"
52+ + artifactId + "/serialization-config.json" ;
53+
54+ Stream <String > reflectConfigNames = readAotConfigToStreamOfClassNames (reflectConfigPath );
55+ Stream <String > noReflectNames = Files .lines (Path .of (noReflectPath ));
56+ Stream <String > serializationNames = readAotConfigToStreamOfClassNames (serializationConfigPath );
57+ List <String > allConfigClassNames = Stream
58+ .concat (serializationNames , Stream .concat (reflectConfigNames , noReflectNames ))
59+ .distinct ()
60+ .sorted ()
61+ .collect (Collectors .toList ());
62+
63+ Stream <String > generatedReflectConfigNames = readAotConfigToStreamOfClassNames (generatedReflectConfigPath );
64+ Stream <String > generatedSerializationNames = readAotConfigToStreamOfClassNames (
65+ generatedSerializationConfigPath );
66+ List <String > allGeneratedConfigClassNames = Stream
67+ .concat (generatedReflectConfigNames , generatedSerializationNames )
68+ .distinct ()
69+ .sorted ()
5570 .collect (Collectors .toList ());
5671
57- Stream <String > generatedReflectConfigStreamOfClassNames = readAotConfigToStreamOfClassNames (
58- "./target/spring-aot/test/resources/META-INF/native-image/org.kohsuke/" + artifactId
59- + "/reflect-config.json" );
60- Stream <String > generatedSerializationStreamOfNames = readAotConfigToStreamOfClassNames (
61- "./target/spring-aot/test/resources/META-INF/native-image/org.kohsuke/" + artifactId
62- + "/serialization-config.json" );
63- Stream <String > generatedAotConfigClassNames = Stream .concat (generatedReflectConfigStreamOfClassNames ,
64- generatedSerializationStreamOfNames );
72+ StringBuilder failures = new StringBuilder ();
6573
66- generatedAotConfigClassNames .forEach (generatedReflectionConfigClassName -> {
74+ allGeneratedConfigClassNames .forEach (generatedReflectionConfigClassName -> {
6775 try {
68- if (!providedReflectionAndNoReflectionConfigNames .contains (generatedReflectionConfigClassName )) {
69- fail (String .format (
76+ if (!allConfigClassNames .contains (generatedReflectionConfigClassName )) {
77+ failures . append (String .format (
7078 Files .readString (
7179 Path .of ("./target/test-classes/reflection-and-serialization-test-error-message" )),
72- generatedReflectionConfigClassName ));
80+ generatedReflectionConfigClassName )). append ( '\n' ) ;
7381 }
7482 } catch (IOException e ) {
7583 throw new RuntimeException (e );
7684 }
7785 });
7886
87+ // Future cleanup
88+ // allConfigClassNames.forEach(reflectionConfigClassName -> {
89+ // if (!allGeneratedConfigClassNames.contains(reflectionConfigClassName)) {
90+ // failures.append(
91+ // String.format("Extra class name found in config files: %1$s\n", reflectionConfigClassName));
92+ // }
93+ // });
94+
95+ // Report all failures at once rather than one at a time
96+ String failureString = failures .toString ();
97+ if (!failureString .isEmpty ()) {
98+ fail ("\n " + failureString );
99+ }
79100 }
80101
81102 private Stream <String > readAotConfigToStreamOfClassNames (String reflectionConfig ) throws IOException {
0 commit comments