diff --git a/metadata/org.flywaydb/flyway-core/10.15.0/index.json b/metadata/org.flywaydb/flyway-core/10.15.0/index.json new file mode 100644 index 000000000..11ac50cc5 --- /dev/null +++ b/metadata/org.flywaydb/flyway-core/10.15.0/index.json @@ -0,0 +1,4 @@ +[ + "reflect-config.json", + "resource-config.json" +] diff --git a/metadata/org.flywaydb/flyway-core/10.15.0/reflect-config.json b/metadata/org.flywaydb/flyway-core/10.15.0/reflect-config.json new file mode 100644 index 000000000..06824810c --- /dev/null +++ b/metadata/org.flywaydb/flyway-core/10.15.0/reflect-config.json @@ -0,0 +1,72 @@ +[ + { + "name": "org.flywaydb.core.api.migration.baseline.BaselineMigrationConfigurationExtension", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicConstructors": true, + "allPublicMethods": true + }, + { + "name": "org.flywaydb.core.extensibility.ConfigurationExtension", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicMethods": true + }, + { + "name": "org.flywaydb.core.extensibility.Plugin", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicMethods": true + }, + { + "name": "org.flywaydb.core.internal.command.clean.CleanModeConfigurationExtension", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicConstructors": true, + "allPublicMethods": true + }, + { + "name": "org.flywaydb.core.internal.logging.slf4j.Slf4jLogCreator", + "condition": { + "typeReachable": "org.slf4j.Logger" + }, + "allPublicConstructors": true + }, + { + "name": "org.flywaydb.core.internal.logging.log4j2.Log4j2LogCreator", + "condition": { + "typeReachable": "org.apache.logging.log4j.Logger" + }, + "allPublicConstructors": true + }, + { + "name": "org.flywaydb.core.internal.logging.apachecommons.ApacheCommonsLogCreator", + "condition": { + "typeReachable": "org.apache.commons.logging.Log" + }, + "allPublicConstructors": true + }, + { + "name": "org.flywaydb.core.internal.publishing.PublishingConfigurationExtension", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicMethods": true + }, + { + "name": "sun.security.provider.SHA2$SHA256", + "condition": { + "typeReachable": "org.flywaydb.core.internal.jdbc.JdbcUtils" + }, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + } +] diff --git a/metadata/org.flywaydb/flyway-core/10.15.0/resource-config.json b/metadata/org.flywaydb/flyway-core/10.15.0/resource-config.json new file mode 100644 index 000000000..01e24d3e1 --- /dev/null +++ b/metadata/org.flywaydb/flyway-core/10.15.0/resource-config.json @@ -0,0 +1,13 @@ +{ + "bundles": [], + "resources": { + "includes": [ + { + "condition": { + "typeReachable": "org.flywaydb.core.internal.license.VersionPrinter" + }, + "pattern": "\\Qorg/flywaydb/core/internal/version.txt\\E" + } + ] + } +} diff --git a/metadata/org.flywaydb/flyway-core/index.json b/metadata/org.flywaydb/flyway-core/index.json index df64b64f4..a88828c66 100644 --- a/metadata/org.flywaydb/flyway-core/index.json +++ b/metadata/org.flywaydb/flyway-core/index.json @@ -1,6 +1,13 @@ [ { "latest": true, + "metadata-version": "10.15.0", + "module": "org.flywaydb:flyway-core", + "tested-versions": [ + "10.15.0" + ] + }, + { "metadata-version": "10.10.0", "module": "org.flywaydb:flyway-core", "tested-versions": [ diff --git a/tests/src/index.json b/tests/src/index.json index 5e05a874a..350013325 100644 --- a/tests/src/index.json +++ b/tests/src/index.json @@ -406,6 +406,12 @@ "name" : "org.flywaydb:flyway-core", "versions" : [ "10.10.0" ] } ] +}, { + "test-project-path" : "org.flywaydb/flyway-core/10.15.0", + "libraries" : [ { + "name" : "org.flywaydb:flyway-core", + "versions" : [ "10.15.0" ] + } ] }, { "test-project-path" : "org.flywaydb/flyway-core/9.0.1", "libraries" : [ { diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/.gitignore b/tests/src/org.flywaydb/flyway-core/10.15.0/.gitignore new file mode 100644 index 000000000..c98c7875b --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/.gitignore @@ -0,0 +1,4 @@ +gradlew.bat +gradlew +gradle/ +build/ diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/build.gradle b/tests/src/org.flywaydb/flyway-core/10.15.0/build.gradle new file mode 100644 index 000000000..1831df6f2 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/build.gradle @@ -0,0 +1,18 @@ +/* + * Copyright and related rights waived via CC0 + * + * You should have received a copy of the CC0 legalcode along with this + * work. If not, see . + */ +plugins { + id "org.graalvm.internal.tck" +} + +String libraryVersion = tck.testedLibraryVersion.get() + +dependencies { + testImplementation "org.flywaydb:flyway-core:$libraryVersion" + testImplementation 'com.h2database:h2:2.1.210' + testImplementation 'org.assertj:assertj-core:3.22.0' + testImplementation 'org.awaitility:awaitility:4.2.0' +} diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/gradle.properties b/tests/src/org.flywaydb/flyway-core/10.15.0/gradle.properties new file mode 100644 index 000000000..814bb1bf6 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/gradle.properties @@ -0,0 +1,2 @@ +library.version = 10.15.0 +metadata.dir = org.flywaydb/flyway-core/10.15.0/ diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/settings.gradle b/tests/src/org.flywaydb/flyway-core/10.15.0/settings.gradle new file mode 100644 index 000000000..d0f559587 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/settings.gradle @@ -0,0 +1,13 @@ +pluginManagement { + def tckPath = Objects.requireNonNullElse( + System.getenv("GVM_TCK_TCKDIR"), + "../../../../tck-build-logic" + ) + includeBuild(tckPath) +} + +plugins { + id "org.graalvm.internal.tck-settings" version "1.0.0-SNAPSHOT" +} + +rootProject.name = 'org.flywaydb.flyway-core_tests' diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/FixedResourceProvider.java b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/FixedResourceProvider.java new file mode 100644 index 000000000..ee92db861 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/FixedResourceProvider.java @@ -0,0 +1,47 @@ +/* + * Copyright and related rights waived via CC0 + * + * You should have received a copy of the CC0 legalcode along with this + * work. If not, see . + */ +package org_flywaydb.flyway_core; + +import org.flywaydb.core.api.ResourceProvider; +import org.flywaydb.core.api.resource.LoadableResource; +import org.flywaydb.core.internal.resource.classpath.ClassPathResource; + +import java.nio.charset.StandardCharsets; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * This is needed as GraalVM doesn't support enumerating resources. It uses a hardcoded list of migrations. + */ +class FixedResourceProvider implements ResourceProvider { + private static final Set MIGRATIONS; + + static { + Set migrations = new HashSet<>(); + migrations.add("db/migration/V1__create_table.sql"); + migrations.add("db/migration/V2__alter_table.sql"); + MIGRATIONS = Collections.unmodifiableSet(migrations); + } + + @Override + public LoadableResource getResource(String name) { + if (!MIGRATIONS.contains(name)) { + return null; + } + return new ClassPathResource(null, name, getClass().getClassLoader(), StandardCharsets.UTF_8); + } + + @Override + public Collection getResources(String prefix, String[] suffixes) { + return MIGRATIONS.stream() + .map(file -> new ClassPathResource(null, file, getClass().getClassLoader(), StandardCharsets.UTF_8)) + .collect(Collectors.toList()); + } +} diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/Flyway_coreTest.java b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/Flyway_coreTest.java new file mode 100644 index 000000000..8d59ca306 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/java/org_flywaydb/flyway_core/Flyway_coreTest.java @@ -0,0 +1,46 @@ +/* + * Copyright and related rights waived via CC0 + * + * You should have received a copy of the CC0 legalcode along with this + * work. If not, see . + */ +package org_flywaydb.flyway_core; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.configuration.Configuration; +import org.flywaydb.core.api.configuration.FluentConfiguration; +import org.flywaydb.core.api.output.MigrateResult; +import org.h2.jdbcx.JdbcDataSource; +import org.junit.jupiter.api.Test; + +import javax.sql.DataSource; +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.Assertions.assertThat; + +public class Flyway_coreTest { + + @Test + void migrate() { + DataSource dataSource = getDataSource(); + + Configuration configuration = new FluentConfiguration() + .dataSource(dataSource) + .encoding(StandardCharsets.UTF_8) + .resourceProvider(new FixedResourceProvider()); + + Flyway flyway = new Flyway(configuration); + MigrateResult migration = flyway.migrate(); + + assertThat(migration.success).isTrue(); + assertThat(migration.migrationsExecuted).isEqualTo(2); + } + + private DataSource getDataSource() { + JdbcDataSource dataSource = new JdbcDataSource(); + dataSource.setUrl("jdbc:h2:mem:test"); + dataSource.setUser("user"); + dataSource.setPassword("password"); + return dataSource; + } +} diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/META-INF/native-image/test/resource-config.json b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/META-INF/native-image/test/resource-config.json new file mode 100644 index 000000000..427b8ed40 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/META-INF/native-image/test/resource-config.json @@ -0,0 +1,13 @@ +{ + "bundles": [], + "resources": { + "includes": [ + { + "pattern": "\\Qdb/migration/V1__create_table.sql\\E" + }, + { + "pattern": "\\Qdb/migration/V2__alter_table.sql\\E" + } + ] + } +} diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V1__create_table.sql b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V1__create_table.sql new file mode 100644 index 000000000..5e35ac71d --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V1__create_table.sql @@ -0,0 +1,5 @@ +CREATE TABLE test +( + id INT PRIMARY KEY, + title VARCHAR NOT NULL +); diff --git a/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V2__alter_table.sql b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V2__alter_table.sql new file mode 100644 index 000000000..ed568f6e7 --- /dev/null +++ b/tests/src/org.flywaydb/flyway-core/10.15.0/src/test/resources/db/migration/V2__alter_table.sql @@ -0,0 +1,2 @@ +ALTER TABLE test + ADD COLUMN name INT NOT NULL DEFAULT 1;