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;
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;
11 import java.nio.file.Path;
14 * This is to be provided by the test framework and not by plugin authors.
16 public abstract class IdeaTestFixtureFactory {
17 private static final IdeaTestFixtureFactory ourInstance = new IdeaTestFixtureFactoryImpl();
20 public static IdeaTestFixtureFactory getFixtureFactory() {
25 * @param aClass test fixture builder interface class
26 * @param implClass implementation class, should have a constructor which takes {@link TestFixtureBuilder} as an argument.
28 public abstract <T extends ModuleFixtureBuilder<?>> void registerFixtureBuilder(@NotNull Class<T> aClass, @NotNull Class<? extends T> implClass);
30 public abstract void registerFixtureBuilder(@NotNull Class<? extends ModuleFixtureBuilder<?>> aClass, @NotNull String implClassName);
33 public TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name) {
34 return createFixtureBuilder(name, false);
37 public abstract @NotNull TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, boolean isDirectoryBasedProject);
39 public abstract TestFixtureBuilder<IdeaProjectTestFixture> createFixtureBuilder(@NotNull String name, @Nullable Path projectPath, boolean isDirectoryBasedProject);
42 public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@NotNull String projectName);
45 public abstract TestFixtureBuilder<IdeaProjectTestFixture> createLightFixtureBuilder(@Nullable LightProjectDescriptor projectDescriptor,
46 @NotNull String projectName);
49 public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture);
52 public abstract CodeInsightTestFixture createCodeInsightFixture(@NotNull IdeaProjectTestFixture projectFixture, @NotNull TempDirTestFixture tempDirFixture);
55 public abstract TempDirTestFixture createTempDirTestFixture();
58 public abstract BareTestFixture createBareFixture();