blob: 4ed78edd9a506cd015e1310758f9d0b0244c5327 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2018 Red Hat Inc. and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0s
*
* Contributors:
* Neil Guzman - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.createrepo.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.linuxtools.internal.rpm.createrepo.Createrepo;
import org.eclipse.linuxtools.internal.rpm.createrepo.CreaterepoProject;
import org.eclipse.linuxtools.internal.rpm.createrepo.form.tests.TestCreaterepoProject;
import org.eclipse.ui.console.MessageConsole;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.osgi.service.prefs.BackingStoreException;
/**
* Tests for Createrepo class and general createrepo command
* execution. Assumes system has "createrepo" command.
*/
public class CreaterepoTest {
private static TestCreaterepoProject testProject;
private CreaterepoProject project;
private MessageConsole console;
/**
* Initialize the test project. Will fail immediately if it cannot find
* the createrepo command.
*
* @throws CoreException
*/
@BeforeClass
public static void setUpBeforeClass() throws CoreException {
Assume.assumeTrue(Createrepo.isCorrectVersion().isOK());
testProject = new TestCreaterepoProject();
assertTrue(testProject.getProject().exists());
}
/**
* Delete the project when tests are done.
*
* @throws CoreException
*/
@AfterClass
public static void tearDownAfterClass() throws CoreException {
testProject.dispose();
assertFalse(testProject.getProject().exists());
}
/**
* Get the CreaterepoProject at the beginning of each test, as
* well as create the console.
*
* @throws CoreException
*/
@Before
public void setUp() throws CoreException {
project = testProject.getCreaterepoProject();
assertNotNull(project);
console = new MessageConsole("testConsole", null, null, true); //$NON-NLS-1$
}
/**
* Clear the preferences after each test and destroy the console.
*
* @throws BackingStoreException
*/
@After
public void tearDown() throws BackingStoreException {
IEclipsePreferences pref = project.getEclipsePreferences();
pref.clear();
pref.flush();
assertEquals(0, pref.keys().length);
console.destroy();
}
/**
* Test a simple createrepo execution taking in no extra commands.
*/
@Test
public void testSimpleCreaterepoExecution() {
Createrepo command = new Createrepo();
IStatus status = command.execute(console.newMessageStream(),
project, new ArrayList<String>());
if (status.getCode() == IStatus.ERROR) {
fail("Possibly failed due to system not having the 'createrepo' command, or it cannot be found."); //$NON-NLS-1$
}
assertTrue(status.isOK());
}
}