new project wizard: preparing test infrastructure

This commit is contained in:
Dmitry Avdeev
2013-09-19 16:42:23 +04:00
parent 327ddb06a3
commit 3b9eca4585
5 changed files with 44 additions and 32 deletions
@@ -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<Module> createFromWizard(Project project, AddModuleWizard wizard) {
public static List<Module> 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.<Module>emptyList() : Arrays.asList(ModuleManager.getInstance(newProject).getModules());
}
@@ -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<T extends Step> 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;
}
}
@@ -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<ModuleWizardStep> {
private static final String ADD_MODULE_TITLE = IdeBundle.message("title.add.module");
@@ -303,11 +300,6 @@ public class AddModuleWizard extends AbstractProjectWizard<ModuleWizardStep> {
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<ModuleWizardStep> {
return false;
}
@TestOnly
public void doOk() {
doOKAction();
}
@TestOnly
public boolean isLast() {
return isLastStep();
}
@TestOnly
public void commit() {
commitStepData(getCurrentStepObject());
@@ -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;
@@ -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<T extends AbstractProjectWizard<? extends Step>> extends PlatformTestCase {
protected final List<Sdk> mySdks = new ArrayList<Sdk>();
protected AddModuleWizard myWizard;
protected T myWizard;
@Nullable
private Project myCreatedProject;
protected Project createProjectFromTemplate(String group, String name, @Nullable Consumer<ModuleWizardStep> adjuster) throws IOException {
protected Project createProjectFromTemplate(String group, String name, @Nullable Consumer<Step> 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<ModuleWizardStep> adjuster) throws IOException {
protected Module createModuleFromTemplate(String group, String name, @Nullable Consumer<Step> 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<ModuleWizardStep> adjuster) throws IOException {
protected void runWizard(String group, String name, Project project, @Nullable Consumer<Step> 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<ModuleWizardStep> adjuster) {
protected T createWizard(Project project, File directory) {
return (T)new AddModuleWizard(project, DefaultModulesProvider.createForProject(project), directory.getPath());
}
protected void runWizard(Consumer<Step> 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<ModuleWizardStep> adjuster, ProjectImportProvider... providers) {
protected Module importProjectFrom(String path, Consumer<Step> 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<ModuleWizardStep> adjuster,
@Nullable Project project, Consumer<Step> 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);
}