@Override public MyRunProfile getRunProfile() { final TestNGConfiguration configuration = (TestNGConfiguration) getModel().getProperties().getConfiguration(); final List<AbstractTestProxy> failedTests = getFailedTests(configuration.getProject()); return new MyRunProfile(configuration) { @NotNull public Module[] getModules() { return Module.EMPTY_ARRAY; } public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { return new TestNGRunnableState(env, configuration) { @Override protected SearchingForTestsTask createSearchingForTestsTask( ServerSocket serverSocket, final TestNGConfiguration config, final File tempFile) { return new SearchingForTestsTask(serverSocket, config, tempFile, client) { @Override protected void fillTestObjects(final Map<PsiClass, Collection<PsiMethod>> classes) throws CantRunException { for (AbstractTestProxy proxy : failedTests) { final Location location = proxy.getLocation(config.getProject()); if (location != null) { final PsiElement element = location.getPsiElement(); if (element instanceof PsiMethod && element.isValid()) { final PsiMethod psiMethod = (PsiMethod) element; final PsiClass psiClass = psiMethod.getContainingClass(); Collection<PsiMethod> psiMethods = classes.get(psiClass); if (psiMethods == null) { psiMethods = new ArrayList<PsiMethod>(); classes.put(psiClass, psiMethods); } psiMethods.add(psiMethod); } } } } }; } }; } }; }
private boolean configure( TestNGConfiguration configuration, Location location, ConfigurationContext context, Project project, @Nullable PsiClass delegate, @Nullable PsiMethod method) { if (delegate == null) { return false; } setupConfigurationModule(context, configuration); Module originalModule = configuration.getConfigurationModule().getModule(); configuration.setClassConfiguration(delegate); if (method != null) { configuration.setMethodConfiguration(PsiLocation.fromPsiElement(project, method)); } configuration.restoreOriginalModule(originalModule); configuration.setName(configuration.getName()); JavaRunConfigurationExtensionManager.getInstance() .extendCreatedConfiguration(configuration, location); return true; }
@Override protected Set<String> getPatterns(TestNGConfiguration configuration) { return configuration.getPersistantData().getPatterns(); }
@Override protected boolean isPatternBasedConfiguration(TestNGConfiguration configuration) { return TestType.PATTERN.getType().equals(configuration.getPersistantData().TEST_OBJECT); }