void (@NotNull String testName, @NotNull QuickFixTestCase quickFixTestCase) { final String relativePath = ObjectUtils.notNull(quickFixTestCase.getBasePath(), "") + "/" + BEFORE_PREFIX + testName; final String testFullPath = quickFixTestCase.getTestDataPath().replace(File.separatorChar, '/') + relativePath; final File testFile = new File(testFullPath); CommandProcessor.getInstance().executeCommand(quickFixTestCase.getProject(), () -> { try { String contents = StringUtil.convertLineSeparators(FileUtil.loadFile(testFile, StandardCharsets.UTF_8)); quickFixTestCase.configureFromFileText(testFile.getName(), contents); quickFixTestCase.bringRealEditorBack(); final ActionHint actionHint = quickFixTestCase.parseActionHintImpl(quickFixTestCase.getFile(), contents); quickFixTestCase.beforeActionStarted(testName, contents); try { myWrapper = quickFixTestCase; quickFixTestCase.doAction(actionHint, testFullPath, testName); } finally { myWrapper = null; quickFixTestCase.afterActionCompleted(testName, contents); } } catch (RuntimeException | Error e) { throw e; } catch (Throwable e) { throw new AssertionError(testName + " failed", e); } }, "", ""); }