debug test suite action
authorLukas Jungmann <jungi@netbeans.org>
Sun, 01 Jan 2012 18:47:19 +0100
changeset 17721ab0b68a09c6d
parent 17720 495b4b739dd1
child 17722 d8d939eb8204
debug test suite action
testng/src/org/netbeans/modules/contrib/testng/actions/DebugSuiteAction.java
testng/src/org/netbeans/modules/contrib/testng/api/TestNGSupport.java
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/testng/src/org/netbeans/modules/contrib/testng/actions/DebugSuiteAction.java	Sun Jan 01 18:47:19 2012 +0100
     1.3 @@ -0,0 +1,129 @@
     1.4 +/*
     1.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     1.6 + *
     1.7 + * Copyright 2012 Oracle and/or its affiliates. All rights reserved.
     1.8 + *
     1.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    1.10 + * Other names may be trademarks of their respective owners.
    1.11 + *
    1.12 + * The contents of this file are subject to the terms of either the GNU
    1.13 + * General Public License Version 2 only ("GPL") or the Common
    1.14 + * Development and Distribution License("CDDL") (collectively, the
    1.15 + * "License"). You may not use this file except in compliance with the
    1.16 + * License. You can obtain a copy of the License at
    1.17 + * http://www.netbeans.org/cddl-gplv2.html
    1.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    1.19 + * specific language governing permissions and limitations under the
    1.20 + * License.  When distributing the software, include this License Header
    1.21 + * Notice in each file and include the License file at
    1.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    1.23 + * particular file as subject to the "Classpath" exception as provided
    1.24 + * by Oracle in the GPL Version 2 section of the License file that
    1.25 + * accompanied this code. If applicable, add the following below the
    1.26 + * License Header, with the fields enclosed by brackets [] replaced by
    1.27 + * your own identifying information:
    1.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    1.29 + *
    1.30 + * If you wish your version of this file to be governed by only the CDDL
    1.31 + * or only the GPL Version 2, indicate your decision by adding
    1.32 + * "[Contributor] elects to include this software in this distribution
    1.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    1.34 + * single choice of license, a recipient has the option to distribute
    1.35 + * your version of this file under either the CDDL, the GPL Version 2 or
    1.36 + * to extend the choice of license to its licensees as provided above.
    1.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    1.38 + * Version 2 license, then the option applies only if the new code is
    1.39 + * made subject to such option by the copyright holder.
    1.40 + *
    1.41 + * Contributor(s):
    1.42 + *
    1.43 + * Portions Copyrighted 2012 Sun Microsystems, Inc.
    1.44 + */
    1.45 +package org.netbeans.modules.contrib.testng.actions;
    1.46 +
    1.47 +import java.io.IOException;
    1.48 +import java.util.logging.Level;
    1.49 +import java.util.logging.Logger;
    1.50 +import org.netbeans.api.project.FileOwnerQuery;
    1.51 +import org.netbeans.api.project.Project;
    1.52 +import org.netbeans.modules.contrib.testng.api.TestNGSupport;
    1.53 +import org.netbeans.modules.contrib.testng.spi.TestConfig;
    1.54 +import org.netbeans.modules.contrib.testng.spi.TestNGSupportImplementation;
    1.55 +import org.netbeans.spi.project.SingleMethod;
    1.56 +import org.openide.awt.ActionID;
    1.57 +import org.openide.awt.ActionReference;
    1.58 +import org.openide.awt.ActionReferences;
    1.59 +import org.openide.awt.ActionRegistration;
    1.60 +import org.openide.filesystems.FileObject;
    1.61 +import org.openide.loaders.DataObject;
    1.62 +import org.openide.nodes.Node;
    1.63 +import org.openide.util.HelpCtx;
    1.64 +import org.openide.util.Lookup;
    1.65 +import org.openide.util.NbBundle;
    1.66 +import org.openide.util.actions.NodeAction;
    1.67 +
    1.68 +/**
    1.69 + *
    1.70 + * @author lukas
    1.71 + */
    1.72 +@ActionID(id = "org.netbeans.modules.contrib.testng.actions.DebugSuiteAction", category="Build")
    1.73 +@ActionRegistration(displayName = "#CTL_DebugSuiteAction")
    1.74 +@ActionReferences(value = {
    1.75 +    @ActionReference(path = "Loaders/text/x-testng+xml/Actions", position = 270)})
    1.76 +@NbBundle.Messages("CTL_DebugSuiteAction=&Debug")
    1.77 +public class DebugSuiteAction extends NodeAction {
    1.78 +
    1.79 +    private static final Logger LOGGER = Logger.getLogger(org.netbeans.modules.contrib.testng.actions.DebugSuiteAction.class.getName());
    1.80 +
    1.81 +    public DebugSuiteAction() {
    1.82 +    }
    1.83 +
    1.84 +    @Override
    1.85 +    protected boolean enable(Node[] activatedNodes) {
    1.86 +        if (activatedNodes.length != 1) {
    1.87 +            return false;
    1.88 +        }
    1.89 +        Lookup l = activatedNodes[0].getLookup();
    1.90 +        DataObject dataObject = l.lookup(DataObject.class);
    1.91 +        if (dataObject != null) {
    1.92 +            Project p = FileOwnerQuery.getOwner(dataObject.getPrimaryFile());
    1.93 +            return TestNGSupport.isActionSupported(TestNGSupport.Action.DEBUG_TESTSUITE, p);
    1.94 +        }
    1.95 +        SingleMethod sm = l.lookup(SingleMethod.class);
    1.96 +        if (sm != null) {
    1.97 +            Project p = FileOwnerQuery.getOwner(sm.getFile());
    1.98 +            return TestNGSupport.isActionSupported(TestNGSupport.Action.DEBUG_TESTSUITE, p);
    1.99 +        }
   1.100 +        return false;
   1.101 +    }
   1.102 +
   1.103 +    @Override
   1.104 +    protected void performAction(Node[] activatedNodes) {
   1.105 +        Lookup l = activatedNodes[0].getLookup();
   1.106 +        FileObject fo = l.lookup(FileObject.class);
   1.107 +        assert fo != null;
   1.108 +        Project p = FileOwnerQuery.getOwner(fo);
   1.109 +        TestNGSupportImplementation.TestExecutor exec = TestNGSupport.findTestNGSupport(p).createExecutor(p);
   1.110 +        TestConfig conf = TestConfigAccessor.getDefault().createTestConfig(fo, false, null, null, null);
   1.111 +        try {
   1.112 +            exec.execute(TestNGSupport.Action.DEBUG_TESTSUITE, conf);
   1.113 +        } catch (IOException ex) {
   1.114 +            LOGGER.log(Level.SEVERE, null, ex);
   1.115 +        }
   1.116 +    }
   1.117 +
   1.118 +    @Override
   1.119 +    public String getName() {
   1.120 +        return NbBundle.getMessage(DebugSuiteAction.class, "CTL_DebugSuiteAction");
   1.121 +    }
   1.122 +
   1.123 +    @Override
   1.124 +    public HelpCtx getHelpCtx() {
   1.125 +        return HelpCtx.DEFAULT_HELP;
   1.126 +    }
   1.127 +
   1.128 +    @Override
   1.129 +    protected boolean asynchronous() {
   1.130 +        return false;
   1.131 +    }
   1.132 +}
     2.1 --- a/testng/src/org/netbeans/modules/contrib/testng/api/TestNGSupport.java	Sun Jan 01 17:51:00 2012 +0100
     2.2 +++ b/testng/src/org/netbeans/modules/contrib/testng/api/TestNGSupport.java	Sun Jan 01 18:47:19 2012 +0100
     2.3 @@ -62,7 +62,8 @@
     2.4          RUN_TESTMETHOD,
     2.5          RUN_TESTSUITE,
     2.6          DEBUG_TEST,
     2.7 -        DEBUG_TESTMETHOD
     2.8 +        DEBUG_TESTMETHOD,
     2.9 +        DEBUG_TESTSUITE
    2.10      }
    2.11  
    2.12      private TestNGSupport() {