package test.bndtools.bndplugins.repo.git; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import junit.framework.TestCase; import aQute.bnd.osgi.Processor; import aQute.bnd.service.RepositoryPlugin; import aQute.bnd.version.Version; import aQute.lib.io.IO; import bndtools.bndplugins.repo.git.GitOBRRepo; public class TestGitOBRRepo extends TestCase { private final File getCheckoutDir = IO.getFile("generated/test-gitcheckout-get-tmp"); private final File putCheckoutDir = IO.getFile("generated/test-gitcheckout-put-tmp"); @Override protected void setUp() throws Exception { IO.delete(getCheckoutDir); IO.delete(putCheckoutDir); getCheckoutDir.mkdirs(); putCheckoutDir.mkdirs(); } @Override protected void tearDown() throws Exception { IO.delete(getCheckoutDir); IO.delete(putCheckoutDir); } public void testGitRepoGet() throws Exception { GitOBRRepo repo = getOBRRepo(getCheckoutDir); File bundleFile = repo.get("osgi.core", new Version("4.2.0"), null); assertNotNull("Repository returned null", bundleFile); assertEquals(IO.getFile(getCheckoutDir, "jars/osgi.core/osgi.core-4.2.0.jar").getAbsoluteFile(), bundleFile); removeOBRRepo(); } public void testGitRepoPut() throws Exception { GitOBRRepo repo = getOBRRepo(putCheckoutDir); repo.put(new BufferedInputStream(new FileInputStream(IO.getFile("testdata/eclipse2/ploogins/javax.servlet_2.5.0.v200806031605.jar"))), new RepositoryPlugin.PutOptions()); File bundleFile = repo.get("javax.servlet", new Version("2.5"), null); assertNotNull("Repository returned null", bundleFile); assertEquals(IO.getFile(putCheckoutDir, "jars/javax.servlet/javax.servlet-2.5.0.jar"), bundleFile); removeOBRRepo(); } private static File getOBRRepoDstDir() { return IO.getFile("testdata/tmp/testrepo.git"); } private static void removeOBRRepo() throws IOException { IO.deleteWithException(getOBRRepoDstDir()); } private GitOBRRepo getOBRRepo(File checkoutDir) throws IOException { File srcDir = IO.getFile("testdata/testrepo.git"); File dstDir = getOBRRepoDstDir(); IO.copy(srcDir, dstDir); String repoUri = dstDir.getAbsoluteFile().toURI().toString(); Map<String,String> properties = new HashMap<String,String>(); properties.put(GitOBRRepo.PROP_GIT_URI, repoUri); properties.put(GitOBRRepo.PROP_GIT_PUSH_URI, repoUri); properties.put(GitOBRRepo.PROP_GIT_BRANCH, "master"); properties.put(GitOBRRepo.PROP_LOCAL_DIR, checkoutDir.getAbsolutePath()); properties.put(GitOBRRepo.PROP_LOCAL_SUB_DIR, "jars"); properties.put(GitOBRRepo.PROP_REPO_TYPE, GitOBRRepo.REPO_TYPE_OBR); GitOBRRepo repo = new GitOBRRepo(); repo.setProperties(properties); Properties props = new Properties(); props.put(Processor.PLUGIN, org.osgi.impl.bundle.bindex.BundleIndexerImpl.class.getName()); Processor processor = new Processor(); processor.setProperties(props); repo.setReporter(processor); repo.setRegistry(processor); return repo; } }