diff --git a/groovy.support/manifest.mf b/groovy.support/manifest.mf --- a/groovy.support/manifest.mf +++ b/groovy.support/manifest.mf @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.groovy.support OpenIDE-Module-Layer: org/netbeans/modules/groovy/support/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/groovy/support/resources/Bundle.properties -OpenIDE-Module-Specification-Version: 1.28 +OpenIDE-Module-Specification-Version: 1.29 OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker diff --git a/groovy.support/nbproject/project.xml b/groovy.support/nbproject/project.xml --- a/groovy.support/nbproject/project.xml +++ b/groovy.support/nbproject/project.xml @@ -74,7 +74,7 @@ 1 - 1.28 + 1.35 diff --git a/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyDebugMethodDebuggerProvider.java b/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyDebugMethodDebuggerProvider.java --- a/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyDebugMethodDebuggerProvider.java +++ b/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyDebugMethodDebuggerProvider.java @@ -56,6 +56,11 @@ public class GroovyDebugMethodDebuggerProvider extends TestMethodDebuggerProvider { @Override + public boolean isTestClass(Node activatedNode) { + return TestMethodUtil.isTestClass(activatedNode); + } + + @Override public boolean canHandle(Node activatedNode) { return TestMethodUtil.canHandle(activatedNode); } diff --git a/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyTestMethodRunnerProvider.java b/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyTestMethodRunnerProvider.java --- a/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyTestMethodRunnerProvider.java +++ b/groovy.support/src/org/netbeans/modules/groovy/support/actions/GroovyTestMethodRunnerProvider.java @@ -56,6 +56,11 @@ public class GroovyTestMethodRunnerProvider extends TestMethodRunnerProvider { @Override + public boolean isTestClass(Node activatedNode) { + return TestMethodUtil.isTestClass(activatedNode); + } + + @Override public boolean canHandle(Node activatedNode) { return TestMethodUtil.canHandle(activatedNode); } diff --git a/groovy.support/src/org/netbeans/modules/groovy/support/actions/TestMethodUtil.java b/groovy.support/src/org/netbeans/modules/groovy/support/actions/TestMethodUtil.java --- a/groovy.support/src/org/netbeans/modules/groovy/support/actions/TestMethodUtil.java +++ b/groovy.support/src/org/netbeans/modules/groovy/support/actions/TestMethodUtil.java @@ -68,6 +68,17 @@ private static final Logger LOGGER = Logger.getLogger(TestMethodUtil.class.getName()); private Reference resolver; + static boolean isTestClass(Node activatedNode) { + FileObject fo = getFileObjectFromNode(activatedNode); + if (fo != null) { + if (!isGroovyFile(fo)) { + return false; + } + //TODO add more checks here when action gets enabled? + } + return false; + } + static SingleMethod getTestMethod(Document doc, int cursor){ SingleMethod sm = null; if (doc != null){ diff --git a/gsf.testrunner/apichanges.xml b/gsf.testrunner/apichanges.xml --- a/gsf.testrunner/apichanges.xml +++ b/gsf.testrunner/apichanges.xml @@ -73,6 +73,22 @@ + + + Method to determine if a node is a test class. + + + + + + Added new method in order to determine if a selected node is a test class. + Clients can conditionally enable the "Run/Debug Focused Test Method" + popup menu item in a file in editor. + + + + + API to open the configuration dialog when creating tests diff --git a/gsf.testrunner/manifest.mf b/gsf.testrunner/manifest.mf --- a/gsf.testrunner/manifest.mf +++ b/gsf.testrunner/manifest.mf @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.gsf.testrunner/1 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gsf/testrunner/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/gsf/testrunner/layer.xml -OpenIDE-Module-Specification-Version: 1.34 +OpenIDE-Module-Specification-Version: 1.35 diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodDebuggerAction.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodDebuggerAction.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodDebuggerAction.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodDebuggerAction.java @@ -131,11 +131,13 @@ if(debugMethodTask != null && !debugMethodTask.isFinished()) { return false; } - String displayName = activatedNodes[0].getDisplayName(); - if (!displayName.endsWith("Test.java") && !displayName.endsWith("IT.java")) { // NOI18N - return false; + Collection providers = Lookup.getDefault().lookupAll(TestMethodDebuggerProvider.class); + for (TestMethodDebuggerProvider provider : providers) { + if (provider.isTestClass(activatedNodes[0])) { + return true; + } } - return true; + return false; } } diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodRunnerAction.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodRunnerAction.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodRunnerAction.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestMethodRunnerAction.java @@ -127,11 +127,13 @@ if(runMethodTask != null && !runMethodTask.isFinished()) { return false; } - String displayName = activatedNodes[0].getDisplayName(); - if (!displayName.endsWith("Test.java") && !displayName.endsWith("IT.java")) { // NOI18N - return false; + Collection providers = Lookup.getDefault().lookupAll(TestMethodRunnerProvider.class); + for (TestMethodRunnerProvider provider : providers) { + if (provider.isTestClass(activatedNodes[0])) { + return true; + } } - return true; + return false; } } diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodDebuggerProvider.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodDebuggerProvider.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodDebuggerProvider.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodDebuggerProvider.java @@ -75,6 +75,19 @@ public abstract SingleMethod getTestMethod(Document doc, int caret); + /** + * Return true if selected {@link Node} is a test class, enabling + * the "Debug Focused Test Method" popup menu item in editor. It should return fast. + * The default implementation returns true. + * @param activatedNode the selected node. + * @return true if selected {@link Node} is a test class, + * false otherwise. + * @since 1.35 + */ + public boolean isTestClass(Node activatedNode) { + return true; + } + public final void debugTestMethod(Node activatedNode) { final Node activeNode = activatedNode; final Document doc; diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodRunnerProvider.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodRunnerProvider.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodRunnerProvider.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestMethodRunnerProvider.java @@ -74,6 +74,19 @@ public abstract boolean canHandle(Node activatedNode); public abstract SingleMethod getTestMethod(Document doc, int caret); + + /** + * Return true if selected {@link Node} is a test class, enabling + * the "Run Focused Test Method" popup menu item in editor. It should return fast. + * The default implementation returns true. + * @param activatedNode the selected node. + * @return true if selected {@link Node} is a test class, + * false otherwise. + * @since 1.35 + */ + public boolean isTestClass(Node activatedNode) { + return true; + } @NbBundle.Messages({"Search_For_Test_Method=Searching for test method", "No_Test_Method_Found=No test method found"}) diff --git a/junit/manifest.mf b/junit/manifest.mf --- a/junit/manifest.mf +++ b/junit/manifest.mf @@ -2,6 +2,6 @@ OpenIDE-Module: org.netbeans.modules.junit/2 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/junit/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/junit/resources/layer.xml -OpenIDE-Module-Specification-Version: 2.58 +OpenIDE-Module-Specification-Version: 2.59 OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker AutoUpdate-Show-In-Client: false diff --git a/junit/nbproject/project.xml b/junit/nbproject/project.xml --- a/junit/nbproject/project.xml +++ b/junit/nbproject/project.xml @@ -131,7 +131,7 @@ 1 - 1.26 + 1.35 diff --git a/junit/src/org/netbeans/modules/junit/actions/JUnitMethodDebuggerProvider.java b/junit/src/org/netbeans/modules/junit/actions/JUnitMethodDebuggerProvider.java --- a/junit/src/org/netbeans/modules/junit/actions/JUnitMethodDebuggerProvider.java +++ b/junit/src/org/netbeans/modules/junit/actions/JUnitMethodDebuggerProvider.java @@ -66,6 +66,15 @@ public class JUnitMethodDebuggerProvider extends TestMethodDebuggerProvider { private static final Logger LOGGER = Logger.getLogger(JUnitMethodDebuggerProvider.class.getName()); + + @Override + public boolean isTestClass(Node activatedNode) { + String displayName = activatedNode.getDisplayName(); + if (!displayName.endsWith("Test.java") && !displayName.endsWith("IT.java")) { // NOI18N + return false; + } + return true; + } @Override public SingleMethod getTestMethod(Document doc, int cursor){ diff --git a/junit/src/org/netbeans/modules/junit/actions/JUnitMethodRunnerProvider.java b/junit/src/org/netbeans/modules/junit/actions/JUnitMethodRunnerProvider.java --- a/junit/src/org/netbeans/modules/junit/actions/JUnitMethodRunnerProvider.java +++ b/junit/src/org/netbeans/modules/junit/actions/JUnitMethodRunnerProvider.java @@ -66,6 +66,15 @@ public class JUnitMethodRunnerProvider extends TestMethodRunnerProvider { private static final Logger LOGGER = Logger.getLogger(JUnitMethodRunnerProvider.class.getName()); + + @Override + public boolean isTestClass(Node activatedNode) { + String displayName = activatedNode.getDisplayName(); + if (!displayName.endsWith("Test.java") && !displayName.endsWith("IT.java")) { // NOI18N + return false; + } + return true; + } @Override public SingleMethod getTestMethod(Document doc, int cursor){ diff --git a/php.project/manifest.mf b/php.project/manifest.mf --- a/php.project/manifest.mf +++ b/php.project/manifest.mf @@ -1,6 +1,6 @@ Manifest-Version: 1.0 AutoUpdate-Show-In-Client: false -OpenIDE-Module-Specification-Version: 2.87 +OpenIDE-Module-Specification-Version: 2.88 OpenIDE-Module: org.netbeans.modules.php.project OpenIDE-Module-Layer: org/netbeans/modules/php/project/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/project/resources/Bundle.properties diff --git a/php.project/nbproject/project.xml b/php.project/nbproject/project.xml --- a/php.project/nbproject/project.xml +++ b/php.project/nbproject/project.xml @@ -205,7 +205,7 @@ 1 - 1.33 + 1.35 diff --git a/php.project/src/org/netbeans/modules/php/project/ui/actions/support/TestSingleMethodSupport.java b/php.project/src/org/netbeans/modules/php/project/ui/actions/support/TestSingleMethodSupport.java --- a/php.project/src/org/netbeans/modules/php/project/ui/actions/support/TestSingleMethodSupport.java +++ b/php.project/src/org/netbeans/modules/php/project/ui/actions/support/TestSingleMethodSupport.java @@ -64,6 +64,21 @@ private TestSingleMethodSupport() { } + public static boolean isTestClass(Node activatedNode) { + FileObject fileObject = CommandUtils.getFileObject(activatedNode); + if (fileObject == null) { + return false; + } + PhpProject project = PhpProjectUtils.getPhpProject(fileObject); + if (project == null) { + return false; + } + if(CommandUtils.isUnderTests(project, fileObject, false)) { + return true; + } + return false; + } + public static boolean canHandle(Node activatedNode) { FileObject fileObject = CommandUtils.getFileObject(activatedNode); if (fileObject == null) { diff --git a/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodDebuggerProvider.java b/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodDebuggerProvider.java --- a/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodDebuggerProvider.java +++ b/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodDebuggerProvider.java @@ -61,6 +61,11 @@ public class PhpTestMethodDebuggerProvider extends TestMethodDebuggerProvider { @Override + public boolean isTestClass(Node activatedNode) { + return TestSingleMethodSupport.isTestClass(activatedNode); + } + + @Override public boolean canHandle(Node activatedNode) { return TestSingleMethodSupport.canHandle(activatedNode); } diff --git a/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodRunnerProvider.java b/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodRunnerProvider.java --- a/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodRunnerProvider.java +++ b/php.project/src/org/netbeans/modules/php/project/ui/actions/tests/PhpTestMethodRunnerProvider.java @@ -61,6 +61,11 @@ public class PhpTestMethodRunnerProvider extends TestMethodRunnerProvider { @Override + public boolean isTestClass(Node activatedNode) { + return TestSingleMethodSupport.isTestClass(activatedNode); + } + + @Override public boolean canHandle(Node activatedNode) { return TestSingleMethodSupport.canHandle(activatedNode); } diff --git a/testng/manifest.mf b/testng/manifest.mf --- a/testng/manifest.mf +++ b/testng/manifest.mf @@ -3,4 +3,4 @@ OpenIDE-Module: org.netbeans.modules.testng OpenIDE-Module-Layer: org/netbeans/modules/testng/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/testng/Bundle.properties -OpenIDE-Module-Specification-Version: 2.9 +OpenIDE-Module-Specification-Version: 2.10 diff --git a/testng/nbproject/project.xml b/testng/nbproject/project.xml --- a/testng/nbproject/project.xml +++ b/testng/nbproject/project.xml @@ -168,7 +168,7 @@ 1 - 1.31 + 1.35 diff --git a/testng/src/org/netbeans/modules/testng/actions/TestNGMethodDebuggerProvider.java b/testng/src/org/netbeans/modules/testng/actions/TestNGMethodDebuggerProvider.java --- a/testng/src/org/netbeans/modules/testng/actions/TestNGMethodDebuggerProvider.java +++ b/testng/src/org/netbeans/modules/testng/actions/TestNGMethodDebuggerProvider.java @@ -68,6 +68,15 @@ private static final Logger LOGGER = Logger.getLogger(TestNGMethodDebuggerProvider.class.getName()); @Override + public boolean isTestClass(Node activatedNode) { + String displayName = activatedNode.getDisplayName(); + if (!displayName.endsWith("Test.java")) { // NOI18N + return false; + } + return true; + } + + @Override public boolean canHandle(Node activatedNode) { FileObject fileO = CommonTestUtil.getFileObjectFromNode(activatedNode); if (fileO != null) { diff --git a/testng/src/org/netbeans/modules/testng/actions/TestNGMethodRunnerProvider.java b/testng/src/org/netbeans/modules/testng/actions/TestNGMethodRunnerProvider.java --- a/testng/src/org/netbeans/modules/testng/actions/TestNGMethodRunnerProvider.java +++ b/testng/src/org/netbeans/modules/testng/actions/TestNGMethodRunnerProvider.java @@ -68,6 +68,15 @@ private static final Logger LOGGER = Logger.getLogger(TestNGMethodRunnerProvider.class.getName()); @Override + public boolean isTestClass(Node activatedNode) { + String displayName = activatedNode.getDisplayName(); + if (!displayName.endsWith("Test.java")) { // NOI18N + return false; + } + return true; + } + + @Override public boolean canHandle(Node activatedNode) { FileObject fileO = CommonTestUtil.getFileObjectFromNode(activatedNode); if (fileO != null) {