@@ -12,21 +12,21 @@ import (
12
12
func TestCollectFileSources (t * testing.T ) {
13
13
t .Parallel ()
14
14
t .Run ("nil_fsys" , func (t * testing.T ) {
15
- sources , err := collectFilesystemSources (nil , false , nil , nil )
15
+ sources , err := collectFilesystemSources (nil , false , nil , nil , false )
16
16
check .NoError (t , err )
17
17
check .Bool (t , sources != nil , true )
18
18
check .Number (t , len (sources .goSources ), 0 )
19
19
check .Number (t , len (sources .sqlSources ), 0 )
20
20
})
21
21
t .Run ("noop_fsys" , func (t * testing.T ) {
22
- sources , err := collectFilesystemSources (noopFS {}, false , nil , nil )
22
+ sources , err := collectFilesystemSources (noopFS {}, false , nil , nil , false )
23
23
check .NoError (t , err )
24
24
check .Bool (t , sources != nil , true )
25
25
check .Number (t , len (sources .goSources ), 0 )
26
26
check .Number (t , len (sources .sqlSources ), 0 )
27
27
})
28
28
t .Run ("empty_fsys" , func (t * testing.T ) {
29
- sources , err := collectFilesystemSources (fstest.MapFS {}, false , nil , nil )
29
+ sources , err := collectFilesystemSources (fstest.MapFS {}, false , nil , nil , false )
30
30
check .NoError (t , err )
31
31
check .Number (t , len (sources .goSources ), 0 )
32
32
check .Number (t , len (sources .sqlSources ), 0 )
@@ -37,19 +37,19 @@ func TestCollectFileSources(t *testing.T) {
37
37
"00000_foo.sql" : sqlMapFile ,
38
38
}
39
39
// strict disable - should not error
40
- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
40
+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
41
41
check .NoError (t , err )
42
42
check .Number (t , len (sources .goSources ), 0 )
43
43
check .Number (t , len (sources .sqlSources ), 0 )
44
44
// strict enabled - should error
45
- _ , err = collectFilesystemSources (mapFS , true , nil , nil )
45
+ _ , err = collectFilesystemSources (mapFS , true , nil , nil , false )
46
46
check .HasError (t , err )
47
47
check .Contains (t , err .Error (), "migration version must be greater than zero" )
48
48
})
49
49
t .Run ("collect" , func (t * testing.T ) {
50
50
fsys , err := fs .Sub (newSQLOnlyFS (), "migrations" )
51
51
check .NoError (t , err )
52
- sources , err := collectFilesystemSources (fsys , false , nil , nil )
52
+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
53
53
check .NoError (t , err )
54
54
check .Number (t , len (sources .sqlSources ), 4 )
55
55
check .Number (t , len (sources .goSources ), 0 )
@@ -77,6 +77,7 @@ func TestCollectFileSources(t *testing.T) {
77
77
"00110_qux.sql" : true ,
78
78
},
79
79
nil ,
80
+ false ,
80
81
)
81
82
check .NoError (t , err )
82
83
check .Number (t , len (sources .sqlSources ), 2 )
@@ -97,7 +98,7 @@ func TestCollectFileSources(t *testing.T) {
97
98
mapFS ["migrations/not_valid.sql" ] = & fstest.MapFile {Data : []byte ("invalid" )}
98
99
fsys , err := fs .Sub (mapFS , "migrations" )
99
100
check .NoError (t , err )
100
- _ , err = collectFilesystemSources (fsys , true , nil , nil )
101
+ _ , err = collectFilesystemSources (fsys , true , nil , nil , false )
101
102
check .HasError (t , err )
102
103
check .Contains (t , err .Error (), `failed to parse numeric component from "not_valid.sql"` )
103
104
})
@@ -109,7 +110,7 @@ func TestCollectFileSources(t *testing.T) {
109
110
"4_qux.sql" : sqlMapFile ,
110
111
"5_foo_test.go" : {Data : []byte (`package goose_test` )},
111
112
}
112
- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
113
+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
113
114
check .NoError (t , err )
114
115
check .Number (t , len (sources .sqlSources ), 4 )
115
116
check .Number (t , len (sources .goSources ), 0 )
@@ -124,7 +125,7 @@ func TestCollectFileSources(t *testing.T) {
124
125
"no_a_real_migration.sql" : {Data : []byte (`SELECT 1;` )},
125
126
"some/other/dir/2_foo.sql" : {Data : []byte (`SELECT 1;` )},
126
127
}
127
- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
128
+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
128
129
check .NoError (t , err )
129
130
check .Number (t , len (sources .sqlSources ), 2 )
130
131
check .Number (t , len (sources .goSources ), 1 )
@@ -143,7 +144,8 @@ func TestCollectFileSources(t *testing.T) {
143
144
"001_foo.sql" : sqlMapFile ,
144
145
"01_bar.sql" : sqlMapFile ,
145
146
}
146
- _ , err := collectFilesystemSources (mapFS , false , nil , nil )
147
+
148
+ _ , err := collectFilesystemSources (mapFS , false , nil , nil , false )
147
149
check .HasError (t , err )
148
150
check .Contains (t , err .Error (), "found duplicate migration version 1" )
149
151
})
@@ -159,7 +161,7 @@ func TestCollectFileSources(t *testing.T) {
159
161
t .Helper ()
160
162
f , err := fs .Sub (mapFS , dirpath )
161
163
check .NoError (t , err )
162
- got , err := collectFilesystemSources (f , false , nil , nil )
164
+ got , err := collectFilesystemSources (f , false , nil , nil , false )
163
165
check .NoError (t , err )
164
166
check .Number (t , len (got .sqlSources ), len (sqlSources ))
165
167
check .Number (t , len (got .goSources ), 0 )
@@ -180,6 +182,25 @@ func TestCollectFileSources(t *testing.T) {
180
182
})
181
183
assertDirpath ("dir3" , nil )
182
184
})
185
+ t .Run ("recursive" , func (t * testing.T ) {
186
+ mapFS := fstest.MapFS {
187
+ "876_a.sql" : sqlMapFile ,
188
+ "dir1/101_a.sql" : sqlMapFile ,
189
+ "dir1/102_b.sql" : sqlMapFile ,
190
+ "dir1/103_c.sql" : sqlMapFile ,
191
+ "dir2/201_a.sql" : sqlMapFile ,
192
+ "dir2/dir3/301_a.sql" : sqlMapFile ,
193
+ }
194
+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , true )
195
+ check .NoError (t , err )
196
+ check .Equal (t , len (sources .sqlSources ), 6 )
197
+ check .Equal (t , sources .sqlSources [0 ].Path , "876_a.sql" )
198
+ check .Equal (t , sources .sqlSources [1 ].Path , "dir1/101_a.sql" )
199
+ check .Equal (t , sources .sqlSources [2 ].Path , "dir1/102_b.sql" )
200
+ check .Equal (t , sources .sqlSources [3 ].Path , "dir1/103_c.sql" )
201
+ check .Equal (t , sources .sqlSources [4 ].Path , "dir2/201_a.sql" )
202
+ check .Equal (t , sources .sqlSources [5 ].Path , "dir2/dir3/301_a.sql" )
203
+ })
183
204
}
184
205
185
206
func TestMerge (t * testing.T ) {
@@ -195,7 +216,7 @@ func TestMerge(t *testing.T) {
195
216
}
196
217
fsys , err := fs .Sub (mapFS , "migrations" )
197
218
check .NoError (t , err )
198
- sources , err := collectFilesystemSources (fsys , false , nil , nil )
219
+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
199
220
check .NoError (t , err )
200
221
check .Equal (t , len (sources .sqlSources ), 1 )
201
222
check .Equal (t , len (sources .goSources ), 2 )
@@ -243,7 +264,7 @@ func TestMerge(t *testing.T) {
243
264
}
244
265
fsys , err := fs .Sub (mapFS , "migrations" )
245
266
check .NoError (t , err )
246
- sources , err := collectFilesystemSources (fsys , false , nil , nil )
267
+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
247
268
check .NoError (t , err )
248
269
t .Run ("unregistered_all" , func (t * testing.T ) {
249
270
migrations , err := merge (sources , map [int64 ]* Migration {
@@ -267,7 +288,7 @@ func TestMerge(t *testing.T) {
267
288
}
268
289
fsys , err := fs .Sub (mapFS , "migrations" )
269
290
check .NoError (t , err )
270
- sources , err := collectFilesystemSources (fsys , false , nil , nil )
291
+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
271
292
check .NoError (t , err )
272
293
t .Run ("unregistered_all" , func (t * testing.T ) {
273
294
migrations , err := merge (sources , map [int64 ]* Migration {
0 commit comments