Package org.jboss.forge.furnace

Source Code of org.jboss.forge.furnace.AddonRepositoryImplTest

/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.jboss.forge.furnace;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.impl.FurnaceImpl;
import org.jboss.forge.furnace.impl.addons.AddonRepositoryImpl;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.furnace.repositories.MutableAddonRepository;
import org.jboss.forge.furnace.versions.SingleVersion;
import org.junit.Assert;
import org.junit.Test;

public class AddonRepositoryImplTest
{

   @Test
   public void testMinorVersionCompatible() throws Exception
   {
      AddonId entry = AddonId.fromCoordinates("com.example.plugin,40,1.0.0-SNAPSHOT");
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2000.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2-SNAPSHOT"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1000-SNAPSHOT"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1000-adsfasfsd"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.1.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.1.1.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.2.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.2.1.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("2.0.0.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("s1.0.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(null, entry));
   }

   @Test
   public void testMinorVersionCompatibleBackwards() throws Exception
   {
      AddonId entry = AddonId.fromCoordinates("com.example.plugin,20.0i,1.1.0-SNAPSHOT");
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2000.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.2-SNAPSHOT"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1000-SNAPSHOT"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.0.1000-adsfasfsd"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.1.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.1.1.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.2.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion("1.2.1.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("2.0.0.Final"), entry));
      Assert.assertFalse(AddonRepositoryImpl.isApiCompatible(new SingleVersion("s1.0.0.Final"), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(new SingleVersion(""), entry));
      Assert.assertTrue(AddonRepositoryImpl.isApiCompatible(null, entry));
   }

   @Test
   public void testAddonDirNaming() throws Exception
   {
      File temp = File.createTempFile("addonDir", "test");
      temp.deleteOnExit();
      MutableAddonRepository repository = AddonRepositoryImpl.forDirectory(new FurnaceImpl(), temp);

      File dir = repository.getAddonBaseDir(AddonId.from("123#$%456", "!@#789*-0"));
      Assert.assertEquals("123-456-789-0", dir.getName());
   }

   @Test
   public void testDeployAddonEntryNoDependencies() throws Exception
   {
      File temp = File.createTempFile("addonDir", "test");
      temp.deleteOnExit();
      MutableAddonRepository repository = AddonRepositoryImpl.forDirectory(new FurnaceImpl(), temp);

      AddonId addon = AddonId.from("1", "2");
      ArrayList<File> resourceJars = new ArrayList<File>();
      File tempJar = File.createTempFile("addon" + addon.getName(), ".jar");
      tempJar.createNewFile();
      resourceJars.add(tempJar);

      Assert.assertFalse(repository.isDeployed(addon));
      repository.deploy(addon, new ArrayList<AddonDependencyEntry>(), resourceJars);
      Assert.assertTrue(repository.isDeployed(addon));

      Assert.assertFalse(repository.isEnabled(addon));
      repository.enable(addon);
      Assert.assertTrue(repository.isEnabled(addon));

      Assert.assertEquals(0, repository.getAddonDependencies(addon).size());
   }

   @Test
   public void testDeployAddonEntryNoDependenciesOrResources() throws Exception
   {
      File temp = File.createTempFile("addonDir", "test");
      temp.deleteOnExit();
      MutableAddonRepository repository = AddonRepositoryImpl.forDirectory(new FurnaceImpl(), temp);

      AddonId addon = AddonId.from("1", "2");

      Assert.assertFalse(repository.isDeployed(addon));
      repository.deploy(addon, new ArrayList<AddonDependencyEntry>(), new ArrayList<File>());
      Assert.assertTrue(repository.isDeployed(addon));

      Assert.assertFalse(repository.isEnabled(addon));
      repository.enable(addon);
      Assert.assertTrue(repository.isEnabled(addon));

      Assert.assertEquals(0, repository.getAddonDependencies(addon).size());
   }

   @Test
   public void testDeployAddonEntrySingleDependency() throws Exception
   {
      File temp = File.createTempFile("addonDir", "test");
      temp.deleteOnExit();
      MutableAddonRepository repository = AddonRepositoryImpl.forDirectory(new FurnaceImpl(), temp);

      AddonId addon = AddonId.from("1", "2");
      AddonDependencyEntry dependency = AddonDependencyEntry.create("nm", "ver", false, true);
      repository.deploy(addon, Arrays.asList(dependency), new ArrayList<File>());

      Assert.assertEquals(1, repository.getAddonDependencies(addon).size());
      Assert.assertTrue(repository.getAddonDependencies(addon).contains(dependency));
   }

   @Test
   public void testDeployAddonEntryMultipleDependencies() throws Exception
   {
      File temp = File.createTempFile("addonDir", "test");
      temp.deleteOnExit();
      MutableAddonRepository repository = AddonRepositoryImpl.forDirectory(new FurnaceImpl(), temp);

      AddonId addon = AddonId.from("1", "2");
      AddonDependencyEntry dependency0 = AddonDependencyEntry.create("nm1", "ver", true, false);
      AddonDependencyEntry dependency1 = AddonDependencyEntry.create("nm2", "ver");

      repository.deploy(addon, Arrays.asList(dependency0, dependency1), new ArrayList<File>());

      Assert.assertEquals(2, repository.getAddonDependencies(addon).size());
      Assert.assertTrue(repository.getAddonDependencies(addon).contains(dependency0));
      Assert.assertTrue(repository.getAddonDependencies(addon).contains(dependency1));
   }
}
TOP

Related Classes of org.jboss.forge.furnace.AddonRepositoryImplTest

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.