testcontainers / testcontainers/testcontainers-java

Enrich JdbcDatabaseContainer InitScript functionality to be able to read from a folder and not only a single file

Offen
#3,894 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.