Package org.netbeans.gradle.project.api.entry

Source Code of org.netbeans.gradle.project.api.entry.EmptyProjectTest

package org.netbeans.gradle.project.api.entry;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.swing.Action;
import javax.swing.SwingUtilities;
import org.gradle.tooling.model.eclipse.EclipseProject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.gradle.project.NbGradleProject;
import org.netbeans.gradle.project.java.nodes.JavaDependenciesNode;
import org.netbeans.gradle.project.java.query.GradleClassPathProvider;
import org.netbeans.gradle.project.properties.GlobalGradleSettings;
import org.netbeans.junit.MockServices;
import org.netbeans.spi.project.ui.LogicalViewProvider;
import org.openide.nodes.Node;

import static org.junit.Assert.*;

public final class EmptyProjectTest {
    private static SampleGradleProject sampleProject;
    private NbGradleProject rootProject;

    public static SampleGradleProject createEmptyProject() throws IOException {
        return SampleGradleProject.createProject("empty-project.zip");
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
        MockServices.setServices(SingleModelExtensionQuery.class);

        GlobalGradleSettings.setCleanMemoryPreference();
        GlobalGradleSettings.getGradleHome().setValue(SampleGradleProject.DEFAULT_GRADLE_TARGET);
        GlobalGradleSettings.getGradleJdk().setValue(JavaPlatform.getDefault());

        sampleProject = createEmptyProject();
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
        GlobalGradleSettings.setDefaultPreference();

        SampleGradleProject toClose = sampleProject;
        sampleProject = null;

        if (toClose != null) {
            toClose.close();
        }
    }

    @Before
    public void setUp() throws Exception {
        Thread.interrupted();

        rootProject = sampleProject.loadProject("empty-project");

        JavaDisablerExtension ext = rootProject.getLookup().lookup(JavaDisablerExtension.class);
        assertNotNull(ext);

        if (!rootProject.tryWaitForLoadedProject(3, TimeUnit.MINUTES)) {
            throw new TimeoutException("Project was not loaded until the timeout elapsed.");
        }
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testOldAPIFetchedModel() throws Exception {
        SingleModelExtension extension = rootProject.getLookup().lookup(SingleModelExtension.class);
        assertNotNull(extension);

        Object model = extension.getModel(60, TimeUnit.SECONDS);
        assertTrue("Must have retrieved the eclipse project model.", model instanceof EclipseProject);
    }

    @Test
    public void testDisabledJavaExtension() throws Exception {
        GradleClassPathProvider cpProvider = rootProject.getLookup().lookup(GradleClassPathProvider.class);
        assertNull("JavaExtension must be disabled and its lookup must not be visible.", cpProvider);
    }

    @Test
    public void testNoDependenciesNode() throws Exception {
        final NbGradleProject project = rootProject;

        SwingUtilities.invokeAndWait(new Runnable() {
            @Override
            public void run() {
                LogicalViewProvider view = project.getLookup().lookup(LogicalViewProvider.class);
                Node root = view.createLogicalView();

                Node[] children = root.getChildren().getNodes();
                for (Node child: children) {
                    if (child instanceof JavaDependenciesNode) {
                        fail("Dependencies node must not be present.");
                    }
                }
            }
        });
    }

    private static void verifyNoJavaActions(Action[] actions) {
        for (Action action: actions) {
            if (action == null) continue;

            Object name = action.getValue("Name");
            if (name == null) continue;

            assertFalse("Must not contain the javadoc command.",
                    "projectCommand:javadoc".equals(name.toString()));
        }
    }

    @Test
    public void testNoJavaActionsAreAdded() throws Exception {
        final NbGradleProject project = rootProject;

        SwingUtilities.invokeAndWait(new Runnable() {
            @Override
            public void run() {
                LogicalViewProvider view = project.getLookup().lookup(LogicalViewProvider.class);
                Node root = view.createLogicalView();

                verifyNoJavaActions(root.getActions(false));
                verifyNoJavaActions(root.getActions(true));
            }
        });
    }
}
TOP

Related Classes of org.netbeans.gradle.project.api.entry.EmptyProjectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.