(db-schema-version-table "schema-info") (define test-db "/tmp/migrations-test.db") (migration-directory "./migrations/without-irreversible") (database-credentials test-db) (debug #f) (define (wipe-table table-name) ((db-with-connection) test-db (lambda (db) (exec (sql db (sprintf "DROP TABLE IF EXISTS \"~A\"" table-name)))))) (define (fetch-versions) (flatten ((db-with-connection) test-db (lambda (db) (query fetch-all (sql db "SELECT version FROM tests")))))) (define (reset-db) ((db-with-connection) test-db (lambda (db) (exec (sql db "DELETE FROM tests")) (exec (sql db (sprintf "DELETE FROM \"~A\"" (db-schema-version-table))))))) (define (initialize-test-db) ((db-with-connection) test-db (lambda (db) (exec (sql db "CREATE TABLE IF NOT EXISTS tests (version INTEGER)"))))) (define (latest-version) ((db-with-connection) test-db (lambda (db) (db-latest-version db)))) (define (test-migration to #!key (reset #f) (callback (lambda args #t))) (initialize-test-db) (if reset (reset-db)) (migrate version: to callback: callback) (latest-version) (cons (latest-version) (fetch-versions)))