IJ-CR-103424 [java-inspections] IDEA-313911 Convert calls with ChronoField and Chrono...
[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.openapi.projectRoots.SdkType;
6 import com.intellij.testFramework.LightProjectDescriptor;
7 import com.intellij.testFramework.builders.ModuleFixtureBuilder;
8 import com.intellij.testFramework.fixtures.impl.IdeaTestFixtureFactoryImpl;
9 import org.jetbrains.annotations.NotNull;
10 import org.jetbrains.annotations.Nullable;
11
12 import java.nio.file.Path;
13 import java.util.function.Predicate;
14
15 /**
16  * This is to be provided by the test framework and not by plugin authors.
17  */
18 public abstract class IdeaTestFixtureFactory {
19   private static final IdeaTestFixtureFactory ourInstance = new IdeaTestFixtureFactoryImpl();
20
21   @NotNull
22   public static IdeaTestFixtureFactory getFixtureFactory() {
23     return ourInstance;
24   }
25
26   /**
27    * @param aClass test fixture builder interface class
28    * @param implClass implementation class, should have a constructor which takes {@link TestFixtureBuilder} as an argument.
29    */
30   public abstract <T extends ModuleFixtureBuilder<?>> void registerFixtureBuilder(@NotNull Class<T> aClass, @NotNull Class<? extends T> implClass);
31
32   public abstract void registerFixtureBuilder(@NotNull Class<? extends ModuleFixtureBuilder<?>> aClass, @NotNull String implClassName);
33
34   @NotNull
35   public TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name) {
36     return createFixtureBuilder(name, false);
37   }
38
39   public abstract @NotNull TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, boolean isDirectoryBasedProject);
40
41   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, @Nullable Path projectPath, boolean isDirectoryBasedProject);
42
43   @NotNull
44   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@NotNull String projectName);
45
46   @NotNull
47   public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@Nullable LightProjectDescriptor projectDescriptor,
48                                                                                        @NotNull String projectName);
49   /**
50    * @deprecated Use {@link #createLightFixtureBuilder(LightProjectDescriptor, String)} instead
51    */
52   @Deprecated(forRemoval = true)
53   public TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@Nullable LightProjectDescriptor projectDescriptor) {
54     String message = "Use createLightFixtureBuilder(LightProjectDescriptor, String) instead";
55     Logger.getInstance(IdeaTestFixtureFactory.class).warn(new RuntimeException(message));
56     return createLightFixtureBuilder(projectDescriptor, message);
57   }
58
59   @NotNull
60   public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture);
61
62   @NotNull
63   public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture, @NotNull TempDirTestFixture tempDirFixture);
64
65   @NotNull
66   public abstract TempDirTestFixture createTempDirTestFixture();
67
68   @NotNull
69   public abstract BareTestFixture createBareFixture();
70
71   @NotNull
72   public abstract SdkTestFixture createSdkFixture(@NotNull SdkType sdkType, @NotNull Predicate<? super String> versionFilter);
73 }