From 3b9eca4585aba0233bf1d8b60577676ba4489787 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 19 Sep 2013 16:38:49 +0400 Subject: [PATCH] new project wizard: preparing test infrastructure --- .../ide/actions/ImportModuleAction.java | 5 ++-- .../AbstractProjectWizard.java | 21 ++++++++++++++ .../newProjectWizard/AddModuleWizard.java | 18 ------------ .../actions/NewModuleAction.java | 3 +- .../projectWizard/ProjectWizardTestCase.java | 29 ++++++++++++------- 5 files changed, 44 insertions(+), 32 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java index e7ec1b050bc5..2faa20bc412d 100644 --- a/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/ImportModuleAction.java @@ -17,6 +17,7 @@ package com.intellij.ide.actions; import com.intellij.ide.impl.NewProjectUtil; import com.intellij.ide.util.PropertiesComponent; +import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard; import com.intellij.ide.util.newProjectWizard.AddModuleWizard; import com.intellij.ide.util.projectWizard.ProjectBuilder; import com.intellij.openapi.actionSystem.AnAction; @@ -68,9 +69,9 @@ public class ImportModuleAction extends AnAction { return createFromWizard(project, wizard); } - public static List createFromWizard(Project project, AddModuleWizard wizard) { + public static List createFromWizard(Project project, AbstractProjectWizard wizard) { if (project == null && wizard.getStepCount() > 0) { - Project newProject = NewProjectUtil.createFromWizard(wizard, project); + Project newProject = NewProjectUtil.createFromWizard(wizard, null); return newProject == null ? Collections.emptyList() : Arrays.asList(ModuleManager.getInstance(newProject).getModules()); } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java index d3ea4cac7ca0..fdfd738b72d8 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.util.newProjectWizard; +import com.intellij.ide.highlighter.ModuleFileType; import com.intellij.ide.highlighter.ProjectFileType; import com.intellij.ide.util.projectWizard.ProjectBuilder; import com.intellij.ide.util.projectWizard.WizardContext; @@ -30,6 +31,7 @@ import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import java.awt.*; import java.io.File; @@ -114,4 +116,23 @@ public abstract class AbstractProjectWizard extends AbstractWiza } return path; } + + public void doNextAction() { + super.doNextAction(); + } + + @TestOnly + public void doOk() { + doOKAction(); + } + + @TestOnly + public boolean isLast() { + return isLastStep(); + } + + @NonNls + public String getModuleFilePath() { + return myWizardContext.getProjectFileDirectory() + File.separator + myWizardContext.getProjectName() + ModuleFileType.DOT_DEFAULT_EXTENSION; + } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddModuleWizard.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddModuleWizard.java index 9569a17edb1f..757d25ebaa9f 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddModuleWizard.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddModuleWizard.java @@ -21,7 +21,6 @@ package com.intellij.ide.util.newProjectWizard; import com.intellij.ide.IdeBundle; -import com.intellij.ide.highlighter.ModuleFileType; import com.intellij.ide.util.newProjectWizard.modes.CreateFromTemplateMode; import com.intellij.ide.util.newProjectWizard.modes.ImportMode; import com.intellij.ide.util.newProjectWizard.modes.WizardMode; @@ -42,14 +41,12 @@ import com.intellij.projectImport.ProjectImportBuilder; import com.intellij.projectImport.ProjectImportProvider; import com.intellij.ui.IdeBorderFactory; import com.intellij.util.Function; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import javax.swing.*; import java.awt.*; -import java.io.File; public class AddModuleWizard extends AbstractProjectWizard { private static final String ADD_MODULE_TITLE = IdeBundle.message("title.add.module"); @@ -303,11 +300,6 @@ public class AddModuleWizard extends AbstractProjectWizard { return myWizardContext; } - @NonNls - public String getModuleFilePath() { - return myWizardContext.getProjectFileDirectory() + File.separator + myWizardContext.getProjectName() + ModuleFileType.DOT_DEFAULT_EXTENSION; - } - @Override protected String getDimensionServiceKey() { return "NewModule_or_Project.wizard"; @@ -335,16 +327,6 @@ public class AddModuleWizard extends AbstractProjectWizard { return false; } - @TestOnly - public void doOk() { - doOKAction(); - } - - @TestOnly - public boolean isLast() { - return isLastStep(); - } - @TestOnly public void commit() { commitStepData(getCurrentStepObject()); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleAction.java index 56ef125bfc09..a0a86e1504e7 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleAction.java @@ -15,6 +15,7 @@ */ package com.intellij.openapi.roots.ui.configuration.actions; +import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard; import com.intellij.ide.util.newProjectWizard.AddModuleWizard; import com.intellij.ide.util.newProjectWizard.AddModuleWizardPro; import com.intellij.ide.util.projectWizard.ModuleBuilder; @@ -68,7 +69,7 @@ public class NewModuleAction extends AnAction implements DumbAware { } @Nullable - public Module createModuleFromWizard(Project project, @Nullable Object dataFromContext, AddModuleWizard wizard) { + public Module createModuleFromWizard(Project project, @Nullable Object dataFromContext, AbstractProjectWizard wizard) { final ProjectBuilder builder = wizard.getProjectBuilder(); if (builder instanceof ModuleBuilder) { final ModuleBuilder moduleBuilder = (ModuleBuilder)builder; diff --git a/java/testFramework/src/com/intellij/ide/projectWizard/ProjectWizardTestCase.java b/java/testFramework/src/com/intellij/ide/projectWizard/ProjectWizardTestCase.java index 9620aa7f27f9..8f68bafc491f 100644 --- a/java/testFramework/src/com/intellij/ide/projectWizard/ProjectWizardTestCase.java +++ b/java/testFramework/src/com/intellij/ide/projectWizard/ProjectWizardTestCase.java @@ -2,10 +2,11 @@ package com.intellij.ide.projectWizard; import com.intellij.ide.actions.ImportModuleAction; import com.intellij.ide.impl.NewProjectUtil; +import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard; import com.intellij.ide.util.newProjectWizard.AddModuleWizard; import com.intellij.ide.util.newProjectWizard.SelectTemplateSettings; import com.intellij.ide.util.newProjectWizard.SelectTemplateStep; -import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.ide.wizard.Step; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -38,14 +39,15 @@ import java.util.List; * @author Dmitry Avdeev * Date: 10/29/12 */ -public abstract class ProjectWizardTestCase extends PlatformTestCase { +@SuppressWarnings("unchecked") +public abstract class ProjectWizardTestCase> extends PlatformTestCase { protected final List mySdks = new ArrayList(); - protected AddModuleWizard myWizard; + protected T myWizard; @Nullable private Project myCreatedProject; - protected Project createProjectFromTemplate(String group, String name, @Nullable Consumer adjuster) throws IOException { + protected Project createProjectFromTemplate(String group, String name, @Nullable Consumer adjuster) throws IOException { runWizard(group, name, null, adjuster); try { myCreatedProject = NewProjectUtil.createFromWizard(myWizard, null); @@ -68,7 +70,7 @@ public abstract class ProjectWizardTestCase extends PlatformTestCase { } @Nullable - protected Module createModuleFromTemplate(String group, String name, @Nullable Consumer adjuster) throws IOException { + protected Module createModuleFromTemplate(String group, String name, @Nullable Consumer adjuster) throws IOException { runWizard(group, name, getProject(), adjuster); return createModuleFromWizard(); } @@ -77,7 +79,7 @@ public abstract class ProjectWizardTestCase extends PlatformTestCase { return new NewModuleAction().createModuleFromWizard(myProject, null, myWizard); } - protected void runWizard(String group, String name, Project project, @Nullable Consumer adjuster) throws IOException { + protected void runWizard(String group, String name, Project project, @Nullable Consumer adjuster) throws IOException { createWizard(project); SelectTemplateStep step = (SelectTemplateStep)myWizard.getCurrentStepObject(); @@ -98,11 +100,15 @@ public abstract class ProjectWizardTestCase extends PlatformTestCase { protected void createWizard(Project project) throws IOException { File directory = FileUtil.createTempDirectory(getName(), "new", false); myFilesToDelete.add(directory); - myWizard = new AddModuleWizard(project, DefaultModulesProvider.createForProject(project), directory.getPath()); + myWizard = createWizard(project, directory); UIUtil.dispatchAllInvocationEvents(); // to make default selection applied } - protected void runWizard(Consumer adjuster) { + protected T createWizard(Project project, File directory) { + return (T)new AddModuleWizard(project, DefaultModulesProvider.createForProject(project), directory.getPath()); + } + + protected void runWizard(Consumer adjuster) { while (!myWizard.isLast()) { myWizard.doNextAction(); if (adjuster != null) { @@ -157,7 +163,7 @@ public abstract class ProjectWizardTestCase extends PlatformTestCase { return importFrom(path, getProject(), null, provider); } - protected Module importProjectFrom(String path, Consumer adjuster, ProjectImportProvider... providers) { + protected Module importProjectFrom(String path, Consumer adjuster, ProjectImportProvider... providers) { Module module = importFrom(path, null, adjuster, providers); if (module != null) { myCreatedProject = module.getProject(); @@ -166,13 +172,14 @@ public abstract class ProjectWizardTestCase extends PlatformTestCase { } private Module importFrom(String path, - @Nullable Project project, Consumer adjuster, + @Nullable Project project, Consumer adjuster, final ProjectImportProvider... providers) { VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByPath(path); assertNotNull("Can't find " + path, file); assertTrue(providers[0].canImport(file, project)); - myWizard = ImportModuleAction.createImportWizard(project, null, file, providers); + myWizard = (T)ImportModuleAction.createImportWizard(project, null, file, providers); + assertNotNull(myWizard); if (myWizard.getStepCount() > 0) { runWizard(adjuster); }