junit 5 tags support (IDEA-163481)
[idea/community.git] / plugins / junit / src / com / intellij / execution / junit2 / configuration / JUnitConfigurable.java
index 2e90fba0ae888274bd2117199643797593be5ad2..f7acd7c57fe4f5d8517d01b89750062f8867f79c 100644 (file)
@@ -115,6 +115,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
   private JTextField myRepeatCountField;
   private LabeledComponent<JComboBox<String>> myChangeListLabeledComponent;
   private LabeledComponent<RawCommandLineEditor> myUniqueIdField;
+  private LabeledComponent<RawCommandLineEditor> myTagsField;
   private Project myProject;
   private JComponent anchor;
 
@@ -172,6 +173,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     aModel.addElement(JUnitConfigurationModel.METHOD);
     aModel.addElement(JUnitConfigurationModel.CATEGORY);
     aModel.addElement(JUnitConfigurationModel.UNIQUE_ID);
+    aModel.addElement(JUnitConfigurationModel.TAGS);
     if (Registry.is("testDiscovery.enabled")) {
       aModel.addElement(JUnitConfigurationModel.BY_SOURCE_POSITION);
       aModel.addElement(JUnitConfigurationModel.BY_SOURCE_CHANGES);
@@ -202,6 +204,9 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
           case JUnitConfigurationModel.UNIQUE_ID:
             setText("UniqueId");
             break;
+          case JUnitConfigurationModel.TAGS:
+            setText("Tags (JUnit 5)");
+            break;
           case JUnitConfigurationModel.BY_SOURCE_POSITION:
             setText("Through source location");
             break;
@@ -306,9 +311,10 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     catch (NumberFormatException e) {
       configuration.setRepeatCount(1);
     }
-    myModel.apply(getModuleSelector().getModule(), configuration);
     configuration.getPersistentData().setUniqueIds(myUniqueIdField.getComponent().getText().split(" "));
+    configuration.getPersistentData().setTags(myTagsField.getComponent().getText().split(" "));
     configuration.getPersistentData().setChangeList((String)myChangeListLabeledComponent.getComponent().getSelectedItem());
+    myModel.apply(getModuleSelector().getModule(), configuration);
     applyHelpersTo(configuration);
     final JUnitConfiguration.Data data = configuration.getPersistentData();
     if (myWholeProjectScope.isSelected()) {
@@ -338,6 +344,10 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     myChangeListLabeledComponent.getComponent().setSelectedItem(configuration.getPersistentData().getChangeList());
     String[] ids = configuration.getPersistentData().getUniqueIds();
     myUniqueIdField.getComponent().setText(ids != null ? StringUtil.join(ids, " ") : null);
+
+    String[] tags = configuration.getPersistentData().getTags();
+    myTagsField.getComponent().setText(tags != null ? StringUtil.join(tags, " ") : null);
+
     myCommonJavaParameters.reset(configuration);
     getModuleSelector().reset(configuration);
     final TestSearchScope scope = configuration.getPersistentData().getScope();
@@ -369,6 +379,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myMethod.setVisible(false);
       myDir.setVisible(false);
       myChangeListLabeledComponent.setVisible(false);
@@ -383,6 +394,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myChangeListLabeledComponent.setVisible(false);
       myMethod.setVisible(false);
       myForkCb.setEnabled(true);
@@ -397,6 +409,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(true);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myChangeListLabeledComponent.setVisible(false);
       myMethod.setVisible(false);
       myForkCb.setEnabled(true);
@@ -411,6 +424,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(true);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myMethod.setVisible(true);
       myChangeListLabeledComponent.setVisible(false);
       myForkCb.setEnabled(false);
@@ -423,6 +437,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(true);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myMethod.setVisible(false);
       myChangeListLabeledComponent.setVisible(false);
       myForkCb.setEnabled(true);
@@ -437,6 +452,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myMethod.setVisible(false);
       myChangeListLabeledComponent.setVisible(true);
       myForkCb.setEnabled(true);
@@ -451,6 +467,22 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(true);
+      myTagsField.setVisible(false);
+      myMethod.setVisible(false);
+      myChangeListLabeledComponent.setVisible(false);
+      myForkCb.setEnabled(true);
+      myForkCb.setModel(new DefaultComboBoxModel(FORK_MODE_ALL));
+      myForkCb.setSelectedItem(selectedItem);
+    }
+    else if (selectedType == JUnitConfigurationModel.TAGS) {
+      myPackagePanel.setVisible(false);
+      myScopesPanel.setVisible(false);
+      myDir.setVisible(false);
+      myPattern.setVisible(false);
+      myClass.setVisible(false);
+      myCategory.setVisible(false);
+      myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(true);
       myMethod.setVisible(false);
       myChangeListLabeledComponent.setVisible(false);
       myForkCb.setEnabled(true);
@@ -465,6 +497,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
       myClass.setVisible(false);
       myCategory.setVisible(false);
       myUniqueIdField.setVisible(false);
+      myTagsField.setVisible(false);
       myMethod.setVisible(true);
       myChangeListLabeledComponent.setVisible(false);
       myForkCb.setEnabled(true);
@@ -577,6 +610,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     myPackage.setAnchor(anchor);
     myCategory.setAnchor(anchor);
     myUniqueIdField.setAnchor(anchor);
+    myTagsField.setAnchor(anchor);
     myChangeListLabeledComponent.setAnchor(anchor);
   }
 
@@ -590,6 +624,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     } else */if (newType != JUnitConfigurationModel.ALL_IN_PACKAGE &&
                  newType != JUnitConfigurationModel.PATTERN &&
                  newType != JUnitConfigurationModel.CATEGORY &&
+                 newType != JUnitConfigurationModel.TAGS &&
                  newType != JUnitConfigurationModel.UNIQUE_ID) {
       myModule.setEnabled(true);
     }
@@ -603,6 +638,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
     final boolean allInPackageAllInProject = (selectedItem == JUnitConfigurationModel.ALL_IN_PACKAGE ||
                                               selectedItem == JUnitConfigurationModel.PATTERN ||
                                               selectedItem == JUnitConfigurationModel.CATEGORY ||
+                                              selectedItem == JUnitConfigurationModel.TAGS ||
                                               selectedItem == JUnitConfigurationModel.UNIQUE_ID ) && myWholeProjectScope.isSelected();
     myModule.setEnabled(!allInPackageAllInProject);
     if (allInPackageAllInProject) {