/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.tonicsystems.jarjar.transform;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javax.annotation.Nonnull;
import static org.junit.Assert.*;
/**
*
* @author shevek
*/
public class AbstractJarTransformerTest {
@Nonnull
protected static File newJar(String propertyName) {
return new File(System.getProperty(propertyName));
}
protected final File jar = newJar("jar");
protected final File[] jars = new File[]{
newJar("jar0"),
newJar("jar1"),
newJar("jar2"),
newJar("jar3")
};
@Nonnull
protected Method getMethod(@Nonnull File file, @Nonnull String className, @Nonnull String methodName, @Nonnull Class<?>... parameterTypes) throws Exception {
URLClassLoader loader = new URLClassLoader(new URL[]{file.toURI().toURL()}, getClass().getClassLoader());
Class<?> c = loader.loadClass(className);
return c.getMethod("main", parameterTypes);
}
protected static void assertContains(@Nonnull JarFile jarFile, @Nonnull String resourceName) {
JarEntry jarEntry = jarFile.getJarEntry(resourceName);
assertNotNull("JarFile " + jarFile + " does not contain entry " + resourceName, jarEntry);
}
protected static void assertNotContains(@Nonnull JarFile jarFile, @Nonnull String resourceName) {
JarEntry jarEntry = jarFile.getJarEntry(resourceName);
assertNull("JarFile " + jarFile + " does contains unexpected entry " + resourceName, jarEntry);
}
}