/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.module.artifact.util; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.core.IsCollectionContaining.hasItem; import org.mule.runtime.core.util.FileUtils; import org.mule.tck.ZipUtils; import org.mule.tck.ZipUtils.ZipResource; import org.mule.tck.junit4.AbstractMuleTestCase; import java.io.File; import java.util.Set; import org.junit.Test; public class FileJarExplorerTestCase extends AbstractMuleTestCase { private final FileJarExplorer packageExplorer = new FileJarExplorer(); @Test public void readsPackagesFromJar() throws Exception { final ZipResource fooClass = new ZipResource("EchoTest.clazz", "org/foo/Foo.class"); final ZipResource barClass = new ZipResource("EchoTest.clazz", "org/bar/Bar.class"); final ZipResource[] zipResources = {fooClass, barClass}; final File jarFile = File.createTempFile("test", ".jar"); jarFile.delete(); ZipUtils.compress(jarFile, zipResources); final Set<String> packages = packageExplorer.explore(jarFile.toURI().toURL()).getPackages(); assertThat(packages.size(), equalTo(2)); assertThat(packages, hasItem("org.foo")); assertThat(packages, hasItem("org.bar")); } @Test public void readsPackagesFromFolder() throws Exception { final File folder = File.createTempFile("test", ""); folder.delete(); folder.mkdirs(); final File orgFolder = new File(folder, "org"); final File orgFooFolder = new File(orgFolder, "foo"); final File orgFooBarFolder = new File(orgFolder, "bar"); FileUtils.writeStringToFile(new File(orgFooFolder, "Foo.class"), "foo"); FileUtils.writeStringToFile(new File(orgFooBarFolder, "Bar.class"), "bar"); final Set<String> packages = packageExplorer.explore(folder.toURI().toURL()).getPackages(); assertThat(packages.size(), equalTo(2)); assertThat(packages, hasItem("org.foo")); assertThat(packages, hasItem("org.bar")); } }