package liquibase.integration.ant; import liquibase.configuration.GlobalConfiguration; import liquibase.configuration.LiquibaseConfiguration; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; public abstract class AbstractAntTaskTest { protected static void setProperties() { // Main source root String name = BaseLiquibaseTask.class.getName(); final String resourceName = "/" + name.replace('.', '/') + ".class"; String absoluteFilePath = BaseLiquibaseTask.class.getResource(resourceName).getFile(); try { absoluteFilePath = URLDecoder.decode(absoluteFilePath, LiquibaseConfiguration.getInstance().getConfiguration(GlobalConfiguration.class).getOutputEncoding()); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Missing UTF-8 encoding in JVM.", e); } String classesDir = absoluteFilePath.substring(0, absoluteFilePath.length() - resourceName.length()); System.setProperty("liquibase.test.classes.root", classesDir); // Test source root String testClassName = AbstractAntTaskTest.class.getName(); String testSimpleName = AbstractAntTaskTest.class.getSimpleName() + ".class"; final String testResourceName = "/" + testClassName.replace('.', '/') + ".class"; String testAbsoluteFilePath = AbstractAntTaskTest.class.getResource(testResourceName).getFile(); try { testAbsoluteFilePath = URLDecoder.decode(testAbsoluteFilePath, LiquibaseConfiguration.getInstance().getConfiguration(GlobalConfiguration.class).getOutputEncoding()); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Missing UTF-8 encoding in JVM.", e); } String testClassesDir = testAbsoluteFilePath.substring(0, testAbsoluteFilePath.length() - testResourceName.length()); String testAntBaseDir = testAbsoluteFilePath.substring(0, testAbsoluteFilePath.length() - testSimpleName.length()); System.setProperty("liquibase.test.testclasses.root", testClassesDir); System.setProperty("liquibase.test.ant.basedir", testAntBaseDir); } }