testcontainers / testcontainers/testcontainers-java
Enrich JdbcDatabaseContainer InitScript functionality to be able to read from a folder and not only a single file
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 8.7k
- Fork
- 1.9k
- Merge medio
- 2g 17h
- PR unite (30g)
- 9
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia tracciando la gestione di init-script di JdbcDatabaseContainer e il punto di ingresso JdbcDatabaseContainer, incluso l’utilizzo di JdbcDatabaseDelegate mostrato nell’issue. Verifica come viene risolto il valore di TC_INITSCRIPT, quindi definisci il completamento in modo da mantenere l’esecuzione di un singolo file, accettando al contempo una cartella ed eseguendo i relativi file *.sql nell’ordine numerico specificato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- docker, java, sql
- Ambito
- databases, testing
- Tipo di issue
- Funzionalità
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100