You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2019/05/08 05:05:22 UTC

[netbeans] 03/07: [NETBEANS-2348] Added support for 'Test Package'.

This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch release110-gradle-patch-1
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 152d90d3f2630a98a19476b7b287794ceb525b1c
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 6 10:55:46 2019 -0700

    [NETBEANS-2348] Added support for 'Test Package'.
---
 .../gradle/java/GradleJavaTokenProvider.java       | 32 ++++++++++++++--------
 .../modules/gradle/java/JavaActionProvider.java    | 30 +++++++++++++-------
 .../modules/gradle/java/action-mapping.xml         |  3 ++
 .../modules/gradle/ActionProviderImpl.java         | 19 +++++++++++--
 .../gradle/execute/GradleDaemonExecutor.java       |  4 +--
 5 files changed, 62 insertions(+), 26 deletions(-)

diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
index d396a45..980c122 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/GradleJavaTokenProvider.java
@@ -57,11 +57,12 @@ import org.openide.util.Lookup;
 public class GradleJavaTokenProvider implements ReplaceTokenProvider {
 
     private static final Set<String> SUPPORTED = Collections.unmodifiableSet(new HashSet(Arrays.asList(
-            "selectedClass",
-            "selectedMethod",
-            "affectedBuildTasks"
+            "selectedClass",       //NOI18N
+            "selectedMethod",      //NOI18N
+            "selectedPackage",     //NOI18N
+            "affectedBuildTasks"   //NOI18N
     )));
-    
+
     final Project project;
 
     public GradleJavaTokenProvider(Project project) {
@@ -76,22 +77,29 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
     @Override
     public Map<String, String> createReplacements(String action, Lookup context) {
         Map<String, String> ret = new HashMap<>();
-        processSelectedClass(ret, context);
+        processSelectedPackageAndClass(ret, context);
         processSelectedMethod(ret, context);
         processSourceSets(ret, context);
         return ret;
     }
 
-    private void processSelectedClass(final Map<String, String> map, Lookup context) {
+    private void processSelectedPackageAndClass(final Map<String, String> map, Lookup context) {
         FileObject fo = RunUtils.extractFileObjectfromLookup(context);
         GradleJavaProject gjp = GradleJavaProject.get(project);
         if ((gjp != null) && (fo != null)) {
             File f = FileUtil.toFile(fo);
             GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
-            if (sourceSet != null) {
-                String relPath = sourceSet.relativePath(f);
-                String className = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
-                map.put("selectedClass", className);
+            if (sourceSet != null)  {
+                if (f.isFile()) {
+                    String relPath = sourceSet.relativePath(f);
+                    String className = (relPath.lastIndexOf('.') > 0 ?
+                            relPath.substring(0, relPath.lastIndexOf('.')) :
+                            relPath).replace('/', '.');
+                    map.put("selectedClass", className);  //NOI18N
+                    f = f.getParentFile();
+                }
+                String pkg = sourceSet.relativePath(f).replace('/', '.');
+                map.put("selectedPackage", pkg); //NOI18N
             }
         }
     }
@@ -102,7 +110,7 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
         String methodName = method != null ? method.getMethodName() : null;
         if (fo != null) {
              String selectedMethod = evaluateSingleMethod(fo, methodName);
-             map.put("selectedMethod", selectedMethod);
+             map.put("selectedMethod", selectedMethod); //NOI18N
         }
     }
 
@@ -125,7 +133,7 @@ public class GradleJavaTokenProvider implements ReplaceTokenProvider {
             for (String task : buildTasks) {
                 tasks.append(task).append(' ');
             }
-            map.put("affectedBuildTasks", tasks.toString());
+            map.put("affectedBuildTasks", tasks.toString()); //NOI18N
         }
     }
 
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
index 305c786..3add6f2 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/JavaActionProvider.java
@@ -25,6 +25,7 @@ import org.netbeans.modules.gradle.java.api.GradleJavaProject;
 import org.netbeans.modules.gradle.java.api.GradleJavaSourceSet;
 import org.netbeans.modules.gradle.spi.actions.DefaultGradleActionsProvider;
 import org.netbeans.modules.gradle.spi.actions.GradleActionsProvider;
+import static org.netbeans.modules.gradle.java.api.GradleJavaSourceSet.SourceType.*;
 import java.io.File;
 import static org.netbeans.spi.project.ActionProvider.*;
 import static org.netbeans.api.java.project.JavaProjectConstants.*;
@@ -46,8 +47,9 @@ import org.openide.util.lookup.ServiceProvider;
 @ServiceProvider(service = GradleActionsProvider.class)
 public class JavaActionProvider extends DefaultGradleActionsProvider {
 
-    private static final String GATLING_PLUGIN = "com.github.lkishalmi.gatling";
-    private static final String SIMULATION_POSTFIX = "Simulation.scala";
+    public static final String COMMAND_TEST_SINGLE_PACKAGE = "test.single.package"; //NOI18N
+    private static final String GATLING_PLUGIN = "com.github.lkishalmi.gatling"; //NOI18N
+    private static final String SIMULATION_POSTFIX = "Simulation.scala"; //NOI18N
 
     private static final String[] SUPPORTED = new String[]{
         COMMAND_BUILD,
@@ -64,7 +66,8 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
         COMMAND_DEBUG_FIX,
         COMMAND_RUN_SINGLE,
         COMMAND_DEBUG_SINGLE,
-        COMMAND_COMPILE_SINGLE
+        COMMAND_COMPILE_SINGLE,
+        COMMAND_TEST_SINGLE_PACKAGE
     };
 
     public JavaActionProvider() {
@@ -81,6 +84,8 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                 if (gbp.hasPlugins(GATLING_PLUGIN) && COMMAND_RUN_SINGLE.equals(action)) {
                     ret = fo.getNameExt().endsWith(SIMULATION_POSTFIX);
                 } else {
+                    ret = false;
+                    GradleJavaProject gjp = GradleJavaProject.get(project);
                     switch (action) {
                         case COMMAND_COMPILE_SINGLE:
                             FileBuiltQuery.Status status = FileBuiltQuery.getStatus(fo);
@@ -88,8 +93,6 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                             break;
                         case COMMAND_DEBUG_SINGLE:
                         case COMMAND_RUN_SINGLE: {
-                            ret = false;
-                            GradleJavaProject gjp = GradleJavaProject.get(project);
                             if (RunUtils.isAugmentedBuildEnabled(project) && (gjp != null)) {
                                 File f = FileUtil.toFile(fo);
                                 GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
@@ -98,7 +101,7 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                                     if (relPath != null) {
                                         relPath = relPath.substring(0, relPath.lastIndexOf('.')).replace('/', '.');
                                         ret = SourceUtils.isMainClass(relPath, ClasspathInfo.create(fo), true);
-                                    } 
+                                    }
                                 }
                             }
 
@@ -109,14 +112,21 @@ public class JavaActionProvider extends DefaultGradleActionsProvider {
                         case COMMAND_RUN_SINGLE_METHOD:
                         case COMMAND_DEBUG_SINGLE_METHOD: {
                             if ("text/x-java".equals(fo.getMIMEType())) { //NOI18N
-                                GradleJavaProject gjp = GradleJavaProject.get(project);
-                                if (gjp != null) {
-                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(FileUtil.toFile(fo));
-                                    ret = sourceSet != null && sourceSet.isTestSourceSet();
+                                if ( gjp != null ) {
+                                    File f = FileUtil.toFile(fo);
+                                    GradleJavaSourceSet sourceSet = gjp.containingSourceSet(f);
+                                    ret = sourceSet != null && sourceSet.isTestSourceSet() && sourceSet.getSourceType(f) != RESOURCES;
                                 }
                             }
                             break;
                         }
+                        case COMMAND_TEST_SINGLE_PACKAGE:
+                            if ( (gjp != null) && fo.isFolder() ) {
+                                File dir = FileUtil.toFile(fo);
+                                GradleJavaSourceSet sourceSet = gjp.containingSourceSet(dir);
+                                ret = sourceSet != null && sourceSet.getSourceType(dir) != RESOURCES;
+                            }
+                            break;
                     }
                 }
             }
diff --git a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
index 32d303a..26b9f26 100644
--- a/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
+++ b/groovy/gradle.java/src/org/netbeans/modules/gradle/java/action-mapping.xml
@@ -25,6 +25,9 @@
         <action name="test.single">
             <args>--rerun-tasks test --tests ${selectedClass}</args>
         </action>
+        <action name="test.single.package">
+            <args>--rerun-tasks test --tests ${selectedPackage}*</args>
+        </action>
         <action name="run.single.method">
             <args>--rerun-tasks test --tests ${selectedMethod}</args>
         </action>
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
index 7626954..7527dc9 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/ActionProviderImpl.java
@@ -124,13 +124,28 @@ public class ActionProviderImpl implements ActionProvider {
 
     @Override
     public void invokeAction(String command, Lookup context) throws IllegalArgumentException {
-        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(command, project);
+        String cmd = translateCommand(command, context);
+        ActionMapping mapping = ActionToTaskUtils.getActiveMapping(cmd, project);
         invokeProjectAction(project, mapping, context, false);
     }
 
     @Override
     public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
-        return ActionToTaskUtils.isActionEnabled(command, project, context);
+        String cmd = translateCommand(command, context);
+        return ActionToTaskUtils.isActionEnabled(cmd, project, context);
+    }
+
+    // TODO: Create an SPI for these kind of translations. Maven projects do something similar
+    // Fix for: NETBEANS-2348
+    private String translateCommand(String command, Lookup context) {
+        String ret = command;
+        if ("test.single".equals(command)) { //NOI18N
+            FileObject fo = RunUtils.extractFileObjectfromLookup(context);
+            if (fo.isFolder()) {
+                ret = "test.single.package"; //NOI18N
+            }
+        }
+        return ret;
     }
 
     @NbBundle.Messages({
diff --git a/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java b/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
index 84a75de..d5067a0 100644
--- a/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
+++ b/groovy/gradle/src/org/netbeans/modules/gradle/execute/GradleDaemonExecutor.java
@@ -231,8 +231,8 @@ public final class GradleDaemonExecutor extends AbstractGradleExecutor {
 
         for (String arg : config.getCommandLine().getSupportedCommandLine()) {
             commandLine.append(' ');
-            if (arg.contains(" ")) { //NOI18N
-                commandLine.append('"').append(arg).append('"');
+            if (arg.contains(" ") || arg.contains("*")) { //NOI18N
+                commandLine.append('\'').append(arg).append('\'');
             } else {
                 commandLine.append(arg);
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists