package liquibase.maven; import java.io.IOException; import java.io.File; import liquibase.CatalogAndSchema; import liquibase.structure.core.Schema; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.junit.Test; import liquibase.database.Database; import liquibase.database.DatabaseConnection; import liquibase.database.DatabaseFactory; import liquibase.test.DatabaseTestContext; import org.junit.Before; import static org.junit.Assert.*; /** * Maven integration test. Run an update executing maven as if it was ran by the user * @author lujop */ public class MavenIntegrationTest { private static final String URL="jdbc:hsqldb:file:target/test-classes/maven/liquibase;shutdown=true"; @Test public void nothing() { //tests fail when not running a maven based build. need to figure out how to determine that } // @Before // public void cleanDatabase() throws Exception { // DatabaseConnection connection = DatabaseTestContext.getInstance().getConnection(URL); // assertNotNull(connection); // Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection); // database.dropDatabaseObjects(CatalogAndSchema.DEFAULT); // database.close(); // DatabaseFactory.reset(); // } // // @Test // public void testUpdate() throws Exception{ // Verifier verifier=createVerifier(); // // verifier.executeGoal( "clean" ); // verifier.executeGoal( "install" ); // // //Verify everithing has gone well. // verifier.verifyErrorFreeLog(); // // //Reset the streams before executing the verifier // verifier.resetStreams(); // } // // @Test // public void testRollbackTag() throws Exception { // Verifier verifier= createVerifier(); // // // verifier.executeGoal("clean"); // verifier.executeGoal("liquibase:tag"); // verifier.executeGoal("package"); //runs update that is bound to test phase // verifier.executeGoal("liquibase:rollback"); // //If we can reupdate rollback has succeded // verifier.executeGoal("liquibase:update"); // // //Verify everithing has gone well. // verifier.verifyErrorFreeLog(); // // //Reset the streams before executing the verifier // verifier.resetStreams(); // } private Verifier createVerifier() throws IOException, VerificationException { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/maven" ); //Clear any artifact created by the test project to avoid unstable test results Verifier verifier = new Verifier(testDir.getAbsolutePath()); verifier.setAutoclean(false); //Don't do clean automatically in each executeGoal verifier.deleteArtifact("org.liquibase", "liquibase-maven-integration-tests", "1.0-SNAPSHOT", "jar"); return verifier; } }