219 beforeActions.forEach(a -> ThrowingConsumer.toConsumer(a).accept( 220 testInstance)); 221 try { 222 if (!dryRun) { 223 Files.createDirectories(workDir); 224 testBody.accept(testInstance); 225 } 226 } finally { 227 afterActions.forEach(a -> TKit.ignoreExceptions(() -> a.accept( 228 testInstance))); 229 } 230 status = Status.Passed; 231 } finally { 232 if (skippedTestException != null) { 233 status = Status.Skipped; 234 } else if (status == null) { 235 status = Status.Failed; 236 } 237 238 if (!KEEP_WORK_DIR.contains(status)) { 239 TKit.deleteDirectoryRecursive(workDir); 240 } 241 242 TKit.log(String.format("%s %s; checks=%d", status, fullName, 243 assertCount)); 244 } 245 } 246 247 private static Class enclosingMainMethodClass() { 248 StackTraceElement st[] = Thread.currentThread().getStackTrace(); 249 for (StackTraceElement ste : st) { 250 if ("main".equals(ste.getMethodName())) { 251 return Functional.ThrowingSupplier.toSupplier(() -> Class.forName( 252 ste.getClassName())).get(); 253 } 254 } 255 return null; 256 } 257 258 private static boolean isCalledByJavatest() { 259 StackTraceElement st[] = Thread.currentThread().getStackTrace(); | 219 beforeActions.forEach(a -> ThrowingConsumer.toConsumer(a).accept( 220 testInstance)); 221 try { 222 if (!dryRun) { 223 Files.createDirectories(workDir); 224 testBody.accept(testInstance); 225 } 226 } finally { 227 afterActions.forEach(a -> TKit.ignoreExceptions(() -> a.accept( 228 testInstance))); 229 } 230 status = Status.Passed; 231 } finally { 232 if (skippedTestException != null) { 233 status = Status.Skipped; 234 } else if (status == null) { 235 status = Status.Failed; 236 } 237 238 if (!KEEP_WORK_DIR.contains(status)) { 239 if (Files.isSameFile(workDir, Path.of("."))) { 240 // 1. If the work directory is the current directory, don't 241 // delete it, just clean as deleting it would be confusing. 242 TKit.deleteDirectoryContentsRecursive(workDir); 243 } else { 244 TKit.deleteDirectoryRecursive(workDir); 245 } 246 } 247 248 TKit.log(String.format("%s %s; checks=%d", status, fullName, 249 assertCount)); 250 } 251 } 252 253 private static Class enclosingMainMethodClass() { 254 StackTraceElement st[] = Thread.currentThread().getStackTrace(); 255 for (StackTraceElement ste : st) { 256 if ("main".equals(ste.getMethodName())) { 257 return Functional.ThrowingSupplier.toSupplier(() -> Class.forName( 258 ste.getClassName())).get(); 259 } 260 } 261 return null; 262 } 263 264 private static boolean isCalledByJavatest() { 265 StackTraceElement st[] = Thread.currentThread().getStackTrace(); |