testcontainers / testcontainers/testcontainers-java
Enrich JdbcDatabaseContainer InitScript functionality to be able to read from a folder and not only a single file
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
We have a particular use case in our company, we need to test create scripts and also update scripts, apart from Liquibase, initScript is nice but I would like to execute multiple scripts in a particular order like we can do in MySQL Docker with
volumes:
- "./scripts/schema.sql:/docker-entrypoint-initdb.d/1.sql"
- "./scripts/data.sql:/docker-entrypoint-initdb.d/2.sql"
- "./scripts/update.sql:/docker-entrypoint-initdb.d/3.sql"
We have it now working with
var containerDelegate = new JdbcDatabaseDelegate(postgreSQLContainer, "");
ScriptUtils.runInitScript(containerDelegate, "some/location/on/classpath/1.sql");
ScriptUtils.runInitScript(containerDelegate, "some/location/on/classpath/2,sql");
ScriptUtils.runInitScript(containerDelegate, "ssome/location/on/classpath/3.sql");
But it would be a nice addition if we allow InitScript point to a folder instead of a file, so both:
jdbc:tc:mysql:5.7.22:///databasename?TC_INITSCRIPT=somepath/init_mysql.sql
jdbc:tc:mysql:5.7.22:///databasename?TC_INITSCRIPT=somepath/somefolder
Work properly. This is useful if you have a set of SQL migration scripts, in that case all the *.sql files under that directory will be executed one by one in order. To specify the order the format expected is [0-9]-name.sql
├── somefolder
│ └── 01-create.sql
│ └── 02-data.sql
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit der Nachverfolgung der init-script-Behandlung von JdbcDatabaseContainer und des Einstiegspunkts JdbcDatabaseContainer, einschließlich der im Issue gezeigten Verwendung von JdbcDatabaseDelegate. Bestätigen Sie, wie der Wert TC_INITSCRIPT aufgelöst wird, und definieren Sie anschließend den Abschluss so, dass die Ausführung einzelner Dateien erhalten bleibt, während ein Ordner akzeptiert und dessen *.sql-Dateien in der angegebenen numerischen Reihenfolge ausgeführt werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java, sql
- Bereich
- databases, testing
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100