package jetbrains.mps.testbench.junit.suites; /*Generated by MPS */ import org.junit.runner.RunWith; import jetbrains.mps.testbench.junit.runners.TeamCityParameterizedRunner; import jetbrains.mps.tool.environment.Environment; import jetbrains.mps.project.Project; import org.junit.runners.Parameterized; import java.util.List; import java.lang.reflect.InvocationTargetException; import jetbrains.mps.tool.environment.EnvironmentConfig; import jetbrains.mps.tool.environment.IdeaEnvironment; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.LocalFileSystem; import java.util.ArrayList; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.util.Processor; import org.junit.Before; import java.io.File; import org.junit.After; @RunWith(value = TeamCityParameterizedRunner.class) public class BaseProjectsTest { public static final String MIGRATION_PLUGIN = "migrationAssistant"; public static final String MIGRATION_PLUGIN_ID = "jetbrains.mps.ide.migration.assistant"; private static Environment ourEnv; private String myProjectDir; private Project myProject; public BaseProjectsTest(String projectDir) { myProjectDir = projectDir; } @Parameterized.Parameters public static List<Object[]> testParameters() throws InvocationTargetException, InterruptedException { EnvironmentConfig defaultConfig = EnvironmentConfig.defaultConfig().withJavaPlugin(); // todo generalize it when there are more tests defaultConfig.addPlugin(MIGRATION_PLUGIN, MIGRATION_PLUGIN_ID); ourEnv = IdeaEnvironment.getOrCreate(defaultConfig); String projectsDir = System.getProperty("projects_dir"); VirtualFile projectsRoot = LocalFileSystem.getInstance().findFileByPath(projectsDir); final List<Object[]> projects = new ArrayList<Object[]>(); VfsUtil.processFilesRecursively(projectsRoot, new Processor<VirtualFile>() { public boolean process(VirtualFile file) { if (!(file.isValid()) || !(file.isDirectory())) { return true; } // is a project dir? if (!(file.getName().equals(com.intellij.openapi.project.Project.DIRECTORY_STORE_FOLDER))) { return true; } projects.add(new String[]{file.getParent().getPath()}); return true; } }); return projects; } @Before public void openProject() { myProject = ourEnv.openProject(new File(myProjectDir)); TestMakeUtil.make(myProject); } @After public void closeProject() { myProject.dispose(); } public Project getContextProject() { return myProject; } public String getProjectDir() { return myProjectDir; } }