This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release110 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit ab050e858d20ba6eb3f7567aab913eff41a12599 Author: Laszlo Kishalmi <laszlo.kisha...@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-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists