blob: 3ed31f5e12be10236de295afa554e412ff2f7f70 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jesper Steen Moller - Enhancement 254677 - filter getters/setters
*******************************************************************************/
package org.eclipse.jdt.debug.tests;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
/**
* Test to close the workbench, since debug tests do not run in the UI thread.
*/
public class ProjectCreationDecorator extends AbstractDebugTest {
/**
* Constructor
*/
public ProjectCreationDecorator() {
super("Project creation decorator tests");
}
/* (non-Javadoc)
* @see org.eclipse.jdt.debug.tests.AbstractDebugTest#getProjectContext()
*/
@Override
protected IJavaProject getProjectContext() {
return get14Project();
}
/**
*
*/
public void testPerspectiveSwtich() {
DebugUIPlugin.getStandardDisplay().syncExec(new Runnable() {
@Override
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IPerspectiveDescriptor descriptor = workbench.getPerspectiveRegistry().findPerspectiveWithId(IDebugUIConstants.ID_DEBUG_PERSPECTIVE);
IWorkbenchPage activePage = workbench.getActiveWorkbenchWindow().getActivePage();
activePage.setPerspective(descriptor);
// hide variables and breakpoints view to reduce simultaneous conflicting requests on debug targets
IViewReference ref = activePage.findViewReference(IDebugUIConstants.ID_VARIABLE_VIEW);
activePage.hideView(ref);
ref = activePage.findViewReference(IDebugUIConstants.ID_BREAKPOINT_VIEW);
activePage.hideView(ref);
}
});
}
/**
* test if builds completed successfully and output directory contains class
* files.
* @throws Exception
*/
public void testOutputFolderNotEmpty() throws Exception {
waitForBuild();
IPath outputLocation = get14Project().getOutputLocation();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IResource resource = root.findMember(outputLocation);
assertNotNull("Project output location is null", resource);
assertTrue("Project output location does not exist", resource.exists());
assertEquals("Project output is not a folder", IResource.FOLDER, resource.getType());
IFolder folder = (IFolder) resource;
IResource[] children = folder.members();
assertTrue("output folder is empty", children.length > 0);
}
/**
* @throws Exception
*/
public void testForUnexpectedErrorsInProject() throws Exception {
waitForBuild();
IProject project = get14Project().getProject();
IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
int errors = 0;
for (int i = 0; i < markers.length; i++) {
IMarker marker = markers[i];
Integer severity = (Integer) marker.getAttribute(IMarker.SEVERITY);
if (severity != null && severity.intValue() >= IMarker.SEVERITY_ERROR) {
System.err.println("Found problem in 1.4 test project: "+marker.getResource().getFullPath().toString()+" "+ marker.getAttribute(IMarker.MESSAGE));
errors++;
}
}
assertEquals("Unexpected compile errors in project. Expected 0 found " + markers.length, 0, errors);
}
/**
* @throws Exception
*/
public void testClassFilesGenerated() throws Exception {
waitForBuild();
IPath outputLocation = get14Project().getOutputLocation();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IFolder folder = (IFolder) root.findMember(outputLocation);
IResource[] children = folder.members();
int classFiles = 0;
for (int i = 0; i < children.length; i++) {
IResource child = children[i];
if (child.getType() == IResource.FILE) {
IFile file = (IFile) child;
String fileExtension = file.getFileExtension();
if (fileExtension.equals("class")) {
classFiles++;
}
}
}
assertTrue("No class files exist", (classFiles > 0));
}
}