tests speedup: do not wait 300ms in external activities queue in tests
[idea/community.git] / platform / testFramework / src / com / intellij / testFramework / fixtures / IdeaTestFixtureFactory.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.testFramework.fixtures;
3
4 import com.intellij.openapi.diagnostic.Logger;
5 import com.intellij.testFramework.LightProjectDescriptor;
6 import com.intellij.testFramework.builders.ModuleFixtureBuilder;
7 import com.intellij.testFramework.fixtures.impl.IdeaTestFixtureFactoryImpl;
8 import org.jetbrains.annotations.NotNull;
9 import org.jetbrains.annotations.Nullable;
10
11 import java.nio.file.Path;
12
13 /**
14  * This is to be provided by the test framework and not by plugin authors.
15  */
16 public abstract class IdeaTestFixtureFactory {
17   private static final IdeaTestFixtureFactory ourInstance = new IdeaTestFixtureFactoryImpl();
18
19   @NotNull
20   public static IdeaTestFixtureFactory getFixtureFactory() {
21     return ourInstance;
22   }
23
24   /**
25    * @param aClass test fixture builder interface class
26    * @param implClass implementation class, should have a constructor which takes {@link TestFixtureBuilder} as an argument.
27    */
28   public abstract <T extends ModuleFixtureBuilder<?>> void registerFixtureBuilder(@NotNull Class<T> aClass, @NotNull Class<? extends T> implClass);
29
30   public abstract void registerFixtureBuilder(@NotNull Class<? extends ModuleFixtureBuilder<?>> aClass, @NotNull String implClassName);
31
32   @NotNull
33   public TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name) {
34     return createFixtureBuilder(name, false);
35   }
36
37   public abstract @NotNull TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, boolean isDirectoryBasedProject);
38
39   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, @Nullable Path projectPath, boolean isDirectoryBasedProject);
40
41   @NotNull
42   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@NotNull String projectName);
43
44   @NotNull
45   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@Nullable LightProjectDescriptor projectDescriptor,
46                                                                                        @NotNull String projectName);
47
48   @NotNull
49   public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture);
50
51   @NotNull
52   public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture, @NotNull TempDirTestFixture tempDirFixture);
53
54   @NotNull
55   public abstract TempDirTestFixture createTempDirTestFixture();
56
57   @NotNull
58   public abstract BareTestFixture createBareFixture();
59 }