@@ -9,7 +9,7 @@ mod mysql {
9
9
use predicates:: str:: contains;
10
10
use refinery:: {
11
11
config:: { migrate_from_config, Config , ConfigDbType } ,
12
- Error , Migrate , Migration ,
12
+ Error , Migrate , Migration , Target ,
13
13
} ;
14
14
use refinery_core:: mysql;
15
15
use std:: process:: Command ;
@@ -288,7 +288,7 @@ mod mysql {
288
288
let pool =
289
289
mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
290
290
let mut conn = pool. get_conn ( ) . unwrap ( ) ;
291
- mod_migrations:: migrations :: runner ( ) . run ( & mut conn) . unwrap ( ) ;
291
+ mod_migrations:: runner ( ) . run ( & mut conn) . unwrap ( ) ;
292
292
for row in conn
293
293
. query (
294
294
"SELECT table_name FROM information_schema.tables WHERE table_name='refinery_schema_history'"
@@ -308,7 +308,7 @@ mod mysql {
308
308
mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
309
309
let mut conn = pool. get_conn ( ) . unwrap ( ) ;
310
310
311
- mod_migrations:: migrations :: runner ( ) . run ( & mut conn) . unwrap ( ) ;
311
+ mod_migrations:: runner ( ) . run ( & mut conn) . unwrap ( ) ;
312
312
conn. prep_exec (
313
313
"INSERT INTO persons (name, city) VALUES (:a, :b)" ,
314
314
( & "John Legend" , & "New York" ) ,
@@ -331,7 +331,7 @@ mod mysql {
331
331
mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
332
332
let mut conn = pool. get_conn ( ) . unwrap ( ) ;
333
333
334
- mod_migrations:: migrations :: runner ( ) . run ( & mut conn) . unwrap ( ) ;
334
+ mod_migrations:: runner ( ) . run ( & mut conn) . unwrap ( ) ;
335
335
336
336
for _row in conn
337
337
. query ( "SELECT MAX(version) FROM refinery_schema_history" )
@@ -365,7 +365,8 @@ mod mysql {
365
365
let migrations = get_migrations ( ) ;
366
366
367
367
let mchecksum = migrations[ 4 ] . checksum ( ) ;
368
- conn. migrate ( & migrations, true , true , false ) . unwrap ( ) ;
368
+ conn. migrate ( & migrations, true , true , false , Target :: Latest )
369
+ . unwrap ( ) ;
369
370
370
371
for _row in conn
371
372
. query ( "SELECT version, checksum FROM refinery_schema_history where version = (SELECT MAX(version) from refinery_schema_history)" )
@@ -380,21 +381,70 @@ mod mysql {
380
381
} ) ;
381
382
}
382
383
384
+ #[ test]
385
+ fn migrates_to_target_migration ( ) {
386
+ run_test ( || {
387
+ let pool =
388
+ mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
389
+ let mut conn = pool. get_conn ( ) . unwrap ( ) ;
390
+
391
+ embedded:: migrations:: runner ( )
392
+ . set_target ( Target :: Version ( 3 ) )
393
+ . run ( & mut conn)
394
+ . unwrap ( ) ;
395
+
396
+ for _row in conn
397
+ . query ( "SELECT version, checksum FROM refinery_schema_history where version = (SELECT MAX(version) from refinery_schema_history)" )
398
+ . unwrap ( )
399
+ {
400
+ let row = _row. unwrap ( ) ;
401
+ let current: i32 = row. get ( 0 ) . unwrap ( ) ;
402
+ assert_eq ! ( 3 , current) ;
403
+ }
404
+ } ) ;
405
+ }
406
+
407
+ #[ test]
408
+ fn migrates_to_target_migration_grouped ( ) {
409
+ run_test ( || {
410
+ let pool =
411
+ mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
412
+ let mut conn = pool. get_conn ( ) . unwrap ( ) ;
413
+
414
+ embedded:: migrations:: runner ( )
415
+ . set_target ( Target :: Version ( 3 ) )
416
+ . set_grouped ( true )
417
+ . run ( & mut conn)
418
+ . unwrap ( ) ;
419
+
420
+ for _row in conn
421
+ . query ( "SELECT version, checksum FROM refinery_schema_history where version = (SELECT MAX(version) from refinery_schema_history)" )
422
+ . unwrap ( )
423
+ {
424
+ let row = _row. unwrap ( ) ;
425
+ let current: i32 = row. get ( 0 ) . unwrap ( ) ;
426
+ assert_eq ! ( 3 , current) ;
427
+ }
428
+ } ) ;
429
+ }
430
+
383
431
#[ test]
384
432
fn aborts_on_missing_migration_on_filesystem ( ) {
385
433
run_test ( || {
386
434
let pool =
387
435
mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
388
436
let mut conn = pool. get_conn ( ) . unwrap ( ) ;
389
437
390
- mod_migrations:: migrations :: runner ( ) . run ( & mut conn) . unwrap ( ) ;
438
+ mod_migrations:: runner ( ) . run ( & mut conn) . unwrap ( ) ;
391
439
392
440
let migration = Migration :: from_filename (
393
441
"V4__add_year_field_to_cars" ,
394
442
& "ALTER TABLE cars ADD year INTEGER;" ,
395
443
)
396
444
. unwrap ( ) ;
397
- let err = conn. migrate ( & [ migration] , true , true , false ) . unwrap_err ( ) ;
445
+ let err = conn
446
+ . migrate ( & [ migration] , true , true , false , Target :: Latest )
447
+ . unwrap_err ( ) ;
398
448
399
449
match err {
400
450
Error :: MissingVersion ( missing) => {
@@ -413,15 +463,15 @@ mod mysql {
413
463
mysql:: Pool :: new ( "mysql://refinery:root@localhost:3306/refinery_test" ) . unwrap ( ) ;
414
464
let mut conn = pool. get_conn ( ) . unwrap ( ) ;
415
465
416
- mod_migrations:: migrations :: runner ( ) . run ( & mut conn) . unwrap ( ) ;
466
+ mod_migrations:: runner ( ) . run ( & mut conn) . unwrap ( ) ;
417
467
418
468
let migration = Migration :: from_filename (
419
469
"V2__add_year_field_to_cars" ,
420
470
& "ALTER TABLE cars ADD year INTEGER;" ,
421
471
)
422
472
. unwrap ( ) ;
423
473
let err = conn
424
- . migrate ( & [ migration. clone ( ) ] , true , false , false )
474
+ . migrate ( & [ migration. clone ( ) ] , true , false , false , Target :: Latest )
425
475
. unwrap_err ( ) ;
426
476
427
477
match err {
@@ -462,7 +512,7 @@ mod mysql {
462
512
)
463
513
. unwrap ( ) ;
464
514
let err = conn
465
- . migrate ( & [ migration1, migration2] , true , true , false )
515
+ . migrate ( & [ migration1, migration2] , true , true , false , Target :: Latest )
466
516
. unwrap_err ( ) ;
467
517
match err {
468
518
Error :: MissingVersion ( missing) => {
0 commit comments