From 80be1cf406ad5368299097ce0370475bb2e2ac83 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 6 Apr 2015 14:49:24 +0200 Subject: [PATCH] read access --- .../execution/junit/TestClassFilter.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java b/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java index 2631df75d0ac..7007fd656bf2 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java @@ -74,15 +74,32 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope { return new TestClassFilter(myBase, myScope.intersectWith(scope)); } - public static TestClassFilter create(final SourceScope sourceScope, Module module) throws JUnitUtil.NoJUnitException { - if (sourceScope == null) throw new JUnitUtil.NoJUnitException(); - PsiClass testCase = module == null ? JUnitUtil.getTestCaseClass(sourceScope) : JUnitUtil.getTestCaseClass(module); + public static TestClassFilter create(final SourceScope sourceScope, final Module module) throws JUnitUtil.NoJUnitException { + final PsiClass testCase = getTestCase(sourceScope, module); return new TestClassFilter(testCase, sourceScope.getGlobalSearchScope()); } - public static TestClassFilter create(final SourceScope sourceScope, Module module, final String pattern) throws JUnitUtil.NoJUnitException { + private static PsiClass getTestCase(final SourceScope sourceScope, final Module module) throws JUnitUtil.NoJUnitException { if (sourceScope == null) throw new JUnitUtil.NoJUnitException(); - PsiClass testCase = module == null ? JUnitUtil.getTestCaseClass(sourceScope) : JUnitUtil.getTestCaseClass(module); + final JUnitUtil.NoJUnitException[] ex = new JUnitUtil.NoJUnitException[1]; + final PsiClass testCase = ApplicationManager.getApplication().runReadAction(new Computable() { + @Override + public PsiClass compute() { + try { + return module == null ? JUnitUtil.getTestCaseClass(sourceScope) : JUnitUtil.getTestCaseClass(module); + } + catch (JUnitUtil.NoJUnitException e) { + ex[0] = e; + return null; + } + } + }); + if (ex[0] != null) throw ex[0]; + return testCase; + } + + public static TestClassFilter create(final SourceScope sourceScope, Module module, final String pattern) throws JUnitUtil.NoJUnitException { + final PsiClass testCase = getTestCase(sourceScope, module); final String[] patterns = pattern.split("\\|\\|"); final List compilePatterns = new ArrayList(); for (String p : patterns) {