/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.eclipse.functional.test; import static org.junit.Assume.assumeTrue; import java.io.File; import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil; import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil; import org.eclipse.core.internal.resources.ResourceException; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IWorkbenchPage; import org.junit.After; import org.junit.Before; public abstract class AbstractTestCase { /** * @throws java.lang.Exception */ @Before public void setUpBeforeClass() throws Exception { cleanupWorkspace(); } /** * @throws java.lang.Exception */ @After public void tearDownAfterClass() throws Exception { cleanupWorkspace(); } public void assumeFalse(boolean value) { assumeTrue(!value); } protected void cleanupWorkspace() throws CoreException { closeEditors(); IWorkspaceRoot root = WorkspaceUtil.getWorkspaceRoot(); try { root.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); root.delete(true, true, new NullProgressMonitor()); } catch (ResourceException ex) { //Fix EBoxTypeLib.setup() to use friendlier deletion. //If we get the exception we ignore it, seems to only handle on Windows. //This is due to the deletion of files in the EBoxTypeLib.Setup() method //This should eventually be addressed. } root.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); } protected static void ensureClean(String dir){ File testDir = new File(dir); if(testDir.isDirectory()){ File [] fileList = testDir.listFiles(); for(File file:fileList){ if(file.isDirectory()){ ensureClean(file.getAbsolutePath()); file.delete(); } file.delete(); } } } protected void closeEditors() { IWorkbenchPage page = UIUtil.getActivePage(); IEditorReference[] reference = page.getEditorReferences(); if (reference != null && reference.length > 0) { for(IEditorReference eref : reference) { IEditorPart editor = eref.getEditor(false); if (editor != null) { page.closeEditor(editor, false); } } } } }