@@ -5,13 +5,11 @@ mod postgres {
5
5
use assert_cmd:: prelude:: * ;
6
6
use predicates:: str:: contains;
7
7
use refinery:: {
8
- config:: { Config , ConfigDbType } ,
9
- embed_migrations,
10
- error:: Kind ,
11
- Migrate , Migration , Runner , Target ,
8
+ config:: Config , embed_migrations, error:: Kind , Migrate , Migration , Runner , Target ,
12
9
} ;
13
10
use refinery_core:: postgres:: { Client , NoTls } ;
14
11
use std:: process:: Command ;
12
+ use std:: str:: FromStr ;
15
13
use time:: OffsetDateTime ;
16
14
17
15
const DEFAULT_TABLE_NAME : & str = "refinery_schema_history" ;
@@ -31,6 +29,10 @@ mod postgres {
31
29
embed_migrations ! ( "./tests/migrations_missing" ) ;
32
30
}
33
31
32
+ fn db_uri ( ) -> String {
33
+ std:: env:: var ( "DB_URI" ) . unwrap_or ( "postgres://postgres@localhost:5432/postgres" . to_string ( ) )
34
+ }
35
+
34
36
fn get_migrations ( ) -> Vec < Migration > {
35
37
embed_migrations ! ( "./tests/migrations" ) ;
36
38
@@ -64,36 +66,32 @@ mod postgres {
64
66
vec ! [ migration1, migration2, migration3, migration4, migration5]
65
67
}
66
68
67
- fn clean_database ( ) {
68
- let mut client =
69
- Client :: connect ( "postgres://postgres@localhost:5432/template1" , NoTls ) . unwrap ( ) ;
69
+ fn prep_database ( ) {
70
+ let uri = db_uri ( ) ;
71
+
72
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
70
73
71
74
client
72
- . execute (
73
- "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='postgres'" ,
74
- & [ ] ,
75
- )
75
+ . execute ( "DROP SCHEMA IF EXISTS public CASCADE" , & [ ] )
76
+ . unwrap ( ) ;
77
+ client
78
+ . execute ( "CREATE SCHEMA IF NOT EXISTS public" , & [ ] )
76
79
. unwrap ( ) ;
77
- client. execute ( "DROP DATABASE POSTGRES" , & [ ] ) . unwrap ( ) ;
78
- client. execute ( "CREATE DATABASE POSTGRES" , & [ ] ) . unwrap ( ) ;
79
80
}
80
81
81
82
fn run_test < T > ( test : T )
82
83
where
83
- T : FnOnce ( ) + std :: panic :: UnwindSafe ,
84
+ T : FnOnce ( ) ,
84
85
{
85
- let result = std:: panic:: catch_unwind ( test) ;
86
-
87
- clean_database ( ) ;
86
+ prep_database ( ) ;
88
87
89
- assert ! ( result . is_ok ( ) )
88
+ test ( ) ;
90
89
}
91
90
92
91
#[ test]
93
92
fn report_contains_applied_migrations ( ) {
94
93
run_test ( || {
95
- let mut client =
96
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
94
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
97
95
98
96
let report = embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
99
97
@@ -122,8 +120,7 @@ mod postgres {
122
120
#[ test]
123
121
fn creates_migration_table ( ) {
124
122
run_test ( || {
125
- let mut client =
126
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
123
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
127
124
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
128
125
for row in & client
129
126
. query (
@@ -144,8 +141,7 @@ mod postgres {
144
141
#[ test]
145
142
fn creates_migration_table_grouped_transaction ( ) {
146
143
run_test ( || {
147
- let mut client =
148
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
144
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
149
145
150
146
embedded:: migrations:: runner ( )
151
147
. set_grouped ( true )
@@ -171,8 +167,7 @@ mod postgres {
171
167
#[ test]
172
168
fn applies_migration ( ) {
173
169
run_test ( || {
174
- let mut client =
175
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
170
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
176
171
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
177
172
client
178
173
. execute (
@@ -192,8 +187,7 @@ mod postgres {
192
187
#[ test]
193
188
fn applies_migration_grouped_transaction ( ) {
194
189
run_test ( || {
195
- let mut client =
196
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
190
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
197
191
198
192
embedded:: migrations:: runner ( )
199
193
. set_grouped ( false )
@@ -218,8 +212,7 @@ mod postgres {
218
212
#[ test]
219
213
fn updates_schema_history ( ) {
220
214
run_test ( || {
221
- let mut client =
222
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
215
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
223
216
224
217
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
225
218
@@ -239,8 +232,7 @@ mod postgres {
239
232
#[ test]
240
233
fn updates_schema_history_grouped_transaction ( ) {
241
234
run_test ( || {
242
- let mut client =
243
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
235
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
244
236
245
237
embedded:: migrations:: runner ( )
246
238
. set_grouped ( false )
@@ -262,8 +254,7 @@ mod postgres {
262
254
#[ test]
263
255
fn updates_to_last_working_if_not_grouped ( ) {
264
256
run_test ( || {
265
- let mut client =
266
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
257
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
267
258
268
259
let result = broken:: migrations:: runner ( ) . run ( & mut client) ;
269
260
@@ -300,8 +291,7 @@ mod postgres {
300
291
#[ test]
301
292
fn doesnt_update_to_last_working_if_grouped ( ) {
302
293
run_test ( || {
303
- let mut client =
304
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
294
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
305
295
306
296
let result = broken:: migrations:: runner ( )
307
297
. set_grouped ( true )
@@ -320,8 +310,7 @@ mod postgres {
320
310
#[ test]
321
311
fn gets_applied_migrations ( ) {
322
312
run_test ( || {
323
- let mut client =
324
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
313
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
325
314
326
315
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
327
316
@@ -349,8 +338,7 @@ mod postgres {
349
338
#[ test]
350
339
fn applies_new_migration ( ) {
351
340
run_test ( || {
352
- let mut client =
353
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
341
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
354
342
355
343
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
356
344
@@ -381,8 +369,7 @@ mod postgres {
381
369
#[ test]
382
370
fn migrates_to_target_migration ( ) {
383
371
run_test ( || {
384
- let mut client =
385
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
372
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
386
373
387
374
let report = embedded:: migrations:: runner ( )
388
375
. set_target ( Target :: Version ( 3 ) )
@@ -417,8 +404,7 @@ mod postgres {
417
404
#[ test]
418
405
fn migrates_to_target_migration_grouped ( ) {
419
406
run_test ( || {
420
- let mut client =
421
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
407
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
422
408
423
409
let report = embedded:: migrations:: runner ( )
424
410
. set_target ( Target :: Version ( 3 ) )
@@ -454,8 +440,7 @@ mod postgres {
454
440
#[ test]
455
441
fn aborts_on_missing_migration_on_filesystem ( ) {
456
442
run_test ( || {
457
- let mut client =
458
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
443
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
459
444
460
445
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
461
446
@@ -488,8 +473,7 @@ mod postgres {
488
473
#[ test]
489
474
fn aborts_on_divergent_migration ( ) {
490
475
run_test ( || {
491
- let mut client =
492
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
476
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
493
477
494
478
embedded:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
495
479
@@ -523,8 +507,7 @@ mod postgres {
523
507
#[ test]
524
508
fn aborts_on_missing_migration_on_database ( ) {
525
509
run_test ( || {
526
- let mut client =
527
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
510
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
528
511
529
512
missing:: migrations:: runner ( ) . run ( & mut client) . unwrap ( ) ;
530
513
@@ -568,11 +551,7 @@ mod postgres {
568
551
#[ test]
569
552
fn migrates_from_config ( ) {
570
553
run_test ( || {
571
- let mut config = Config :: new ( ConfigDbType :: Postgres )
572
- . set_db_name ( "postgres" )
573
- . set_db_user ( "postgres" )
574
- . set_db_host ( "localhost" )
575
- . set_db_port ( "5432" ) ;
554
+ let mut config = Config :: from_str ( & db_uri ( ) ) . unwrap ( ) ;
576
555
577
556
let migrations = get_migrations ( ) ;
578
557
let runner = Runner :: new ( & migrations)
@@ -608,11 +587,7 @@ mod postgres {
608
587
#[ test]
609
588
fn migrate_from_config_report_contains_migrations ( ) {
610
589
run_test ( || {
611
- let mut config = Config :: new ( ConfigDbType :: Postgres )
612
- . set_db_name ( "postgres" )
613
- . set_db_user ( "postgres" )
614
- . set_db_host ( "localhost" )
615
- . set_db_port ( "5432" ) ;
590
+ let mut config = Config :: from_str ( & db_uri ( ) ) . unwrap ( ) ;
616
591
617
592
let migrations = get_migrations ( ) ;
618
593
let runner = Runner :: new ( & migrations)
@@ -648,11 +623,7 @@ mod postgres {
648
623
#[ test]
649
624
fn migrate_from_config_report_returns_last_applied_migration ( ) {
650
625
run_test ( || {
651
- let mut config = Config :: new ( ConfigDbType :: Postgres )
652
- . set_db_name ( "postgres" )
653
- . set_db_user ( "postgres" )
654
- . set_db_host ( "localhost" )
655
- . set_db_port ( "5432" ) ;
626
+ let mut config = Config :: from_str ( & db_uri ( ) ) . unwrap ( ) ;
656
627
657
628
let migrations = get_migrations ( ) ;
658
629
let runner = Runner :: new ( & migrations)
@@ -677,8 +648,7 @@ mod postgres {
677
648
#[ test]
678
649
fn doesnt_run_migrations_if_fake ( ) {
679
650
run_test ( || {
680
- let mut client =
681
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
651
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
682
652
683
653
let report = embedded:: migrations:: runner ( )
684
654
. set_target ( Target :: Fake )
@@ -712,8 +682,7 @@ mod postgres {
712
682
#[ test]
713
683
fn doesnt_run_migrations_if_fake_version ( ) {
714
684
run_test ( || {
715
- let mut client =
716
- Client :: connect ( "postgres://postgres@localhost:5432/postgres" , NoTls ) . unwrap ( ) ;
685
+ let mut client = Client :: connect ( & db_uri ( ) , NoTls ) . unwrap ( ) ;
717
686
718
687
let report = embedded:: migrations:: runner ( )
719
688
. set_target ( Target :: FakeVersion ( 2 ) )
0 commit comments