diff --git a/platform/testRunner/src/com/intellij/execution/testframework/SourceScope.java b/platform/testRunner/src/com/intellij/execution/testframework/SourceScope.java index 9c5224e5bc98..17028ad1d40c 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/SourceScope.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/SourceScope.java @@ -97,20 +97,30 @@ public abstract class SourceScope { public static SourceScope modulesWithDependencies(final Module[] modules) { if (modules == null || modules.length == 0) return null; return new ModuleSourceScope(modules[0].getProject()) { + + private GlobalSearchScope myGlobalSearchScope; + private GlobalSearchScope myLibScope; + public GlobalSearchScope getGlobalSearchScope() { - return evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { - public GlobalSearchScope evaluate(final Module module) { - return GlobalSearchScope.moduleWithDependenciesScope(module); - } - }); + if (myGlobalSearchScope == null) { + myGlobalSearchScope = evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { + public GlobalSearchScope evaluate(final Module module) { + return GlobalSearchScope.moduleWithDependenciesScope(module); + } + }); + } + return myGlobalSearchScope; } public GlobalSearchScope getLibrariesScope() { - return evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { - public GlobalSearchScope evaluate(final Module module) { - return new ModuleWithDependenciesAndLibsDependencies(module); - } - }); + if (myLibScope == null) { + myLibScope = evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { + public GlobalSearchScope evaluate(final Module module) { + return new ModuleWithDependenciesAndLibsDependencies(module); + } + }); + } + return myLibScope; } public Module[] getModulesToCompile() { @@ -135,20 +145,30 @@ public abstract class SourceScope { public static SourceScope modules(final Module[] modules) { if (modules == null || modules.length == 0) return null; return new ModuleSourceScope(modules[0].getProject()) { + + private GlobalSearchScope myLibScope; + private GlobalSearchScope myGlobalSearchScope; + public GlobalSearchScope getGlobalSearchScope() { - return evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { - public GlobalSearchScope evaluate(final Module module) { - return GlobalSearchScope.moduleScope(module); - } - }); + if (myGlobalSearchScope == null) { + myGlobalSearchScope = evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { + public GlobalSearchScope evaluate(final Module module) { + return GlobalSearchScope.moduleScope(module); + } + }); + } + return myGlobalSearchScope; } public GlobalSearchScope getLibrariesScope() { - return evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { - public GlobalSearchScope evaluate(final Module module) { - return GlobalSearchScope.moduleWithLibrariesScope(module); - } - }); + if (myLibScope == null) { + myLibScope = evaluateScopesAndUnite(modules, new ScopeForModuleEvaluator() { + public GlobalSearchScope evaluate(final Module module) { + return GlobalSearchScope.moduleWithLibrariesScope(module); + } + }); + } + return myLibScope; } public Module[] getModulesToCompile() {