1616import java .io .IOException ;
1717import java .util .List ;
1818import java .util .Locale ;
19+ import java .util .regex .Pattern ;
1920import javax .tools .Diagnostic ;
2021import javax .tools .JavaFileObject ;
2122import org .junit .jupiter .api .Test ;
@@ -2317,6 +2318,18 @@ private void assertCompilationError(
23172318 }
23182319
23192320 private void assertLoggerGenerates (String loggedClassContent , String loggerClassContent ) {
2321+ // Extract the expected logger file name from the class declaration so we can find the correct
2322+ // generated file.
2323+ var pattern =
2324+ Pattern .compile (".*public class (.*) extends ClassSpecificLogger.*" , Pattern .DOTALL );
2325+ var matcher = pattern .matcher (loggerClassContent );
2326+ var className = "ExampleLogger" ;
2327+ if (matcher .matches ()) {
2328+ var result = matcher .toMatchResult ();
2329+ className = result .group (1 );
2330+ }
2331+ var loggerFileName = "/" + className + ".java" ;
2332+
23202333 Compilation compilation =
23212334 javac ()
23222335 .withOptions (kJavaVersionOptions )
@@ -2329,7 +2342,7 @@ private void assertLoggerGenerates(String loggedClassContent, String loggerClass
23292342 var generatedFiles = compilation .generatedSourceFiles ();
23302343 var generatedFile =
23312344 generatedFiles .stream ()
2332- .filter (jfo -> jfo .getName ().contains ( "Example" ))
2345+ .filter (jfo -> jfo .toUri ().getPath (). endsWith ( loggerFileName ))
23332346 .findFirst ()
23342347 .orElseThrow (() -> new IllegalStateException ("Logger file was not generated!" ));
23352348 try {
0 commit comments