@@ -12,21 +12,21 @@ import (
1212func TestCollectFileSources (t * testing.T ) {
1313 t .Parallel ()
1414 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 )
1616 check .NoError (t , err )
1717 check .Bool (t , sources != nil , true )
1818 check .Number (t , len (sources .goSources ), 0 )
1919 check .Number (t , len (sources .sqlSources ), 0 )
2020 })
2121 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 )
2323 check .NoError (t , err )
2424 check .Bool (t , sources != nil , true )
2525 check .Number (t , len (sources .goSources ), 0 )
2626 check .Number (t , len (sources .sqlSources ), 0 )
2727 })
2828 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 )
3030 check .NoError (t , err )
3131 check .Number (t , len (sources .goSources ), 0 )
3232 check .Number (t , len (sources .sqlSources ), 0 )
@@ -37,19 +37,19 @@ func TestCollectFileSources(t *testing.T) {
3737 "00000_foo.sql" : sqlMapFile ,
3838 }
3939 // strict disable - should not error
40- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
40+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
4141 check .NoError (t , err )
4242 check .Number (t , len (sources .goSources ), 0 )
4343 check .Number (t , len (sources .sqlSources ), 0 )
4444 // strict enabled - should error
45- _ , err = collectFilesystemSources (mapFS , true , nil , nil )
45+ _ , err = collectFilesystemSources (mapFS , true , nil , nil , false )
4646 check .HasError (t , err )
4747 check .Contains (t , err .Error (), "migration version must be greater than zero" )
4848 })
4949 t .Run ("collect" , func (t * testing.T ) {
5050 fsys , err := fs .Sub (newSQLOnlyFS (), "migrations" )
5151 check .NoError (t , err )
52- sources , err := collectFilesystemSources (fsys , false , nil , nil )
52+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
5353 check .NoError (t , err )
5454 check .Number (t , len (sources .sqlSources ), 4 )
5555 check .Number (t , len (sources .goSources ), 0 )
@@ -77,6 +77,7 @@ func TestCollectFileSources(t *testing.T) {
7777 "00110_qux.sql" : true ,
7878 },
7979 nil ,
80+ false ,
8081 )
8182 check .NoError (t , err )
8283 check .Number (t , len (sources .sqlSources ), 2 )
@@ -97,7 +98,7 @@ func TestCollectFileSources(t *testing.T) {
9798 mapFS ["migrations/not_valid.sql" ] = & fstest.MapFile {Data : []byte ("invalid" )}
9899 fsys , err := fs .Sub (mapFS , "migrations" )
99100 check .NoError (t , err )
100- _ , err = collectFilesystemSources (fsys , true , nil , nil )
101+ _ , err = collectFilesystemSources (fsys , true , nil , nil , false )
101102 check .HasError (t , err )
102103 check .Contains (t , err .Error (), `failed to parse numeric component from "not_valid.sql"` )
103104 })
@@ -109,7 +110,7 @@ func TestCollectFileSources(t *testing.T) {
109110 "4_qux.sql" : sqlMapFile ,
110111 "5_foo_test.go" : {Data : []byte (`package goose_test` )},
111112 }
112- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
113+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
113114 check .NoError (t , err )
114115 check .Number (t , len (sources .sqlSources ), 4 )
115116 check .Number (t , len (sources .goSources ), 0 )
@@ -124,7 +125,7 @@ func TestCollectFileSources(t *testing.T) {
124125 "no_a_real_migration.sql" : {Data : []byte (`SELECT 1;` )},
125126 "some/other/dir/2_foo.sql" : {Data : []byte (`SELECT 1;` )},
126127 }
127- sources , err := collectFilesystemSources (mapFS , false , nil , nil )
128+ sources , err := collectFilesystemSources (mapFS , false , nil , nil , false )
128129 check .NoError (t , err )
129130 check .Number (t , len (sources .sqlSources ), 2 )
130131 check .Number (t , len (sources .goSources ), 1 )
@@ -143,7 +144,8 @@ func TestCollectFileSources(t *testing.T) {
143144 "001_foo.sql" : sqlMapFile ,
144145 "01_bar.sql" : sqlMapFile ,
145146 }
146- _ , err := collectFilesystemSources (mapFS , false , nil , nil )
147+
148+ _ , err := collectFilesystemSources (mapFS , false , nil , nil , false )
147149 check .HasError (t , err )
148150 check .Contains (t , err .Error (), "found duplicate migration version 1" )
149151 })
@@ -159,7 +161,7 @@ func TestCollectFileSources(t *testing.T) {
159161 t .Helper ()
160162 f , err := fs .Sub (mapFS , dirpath )
161163 check .NoError (t , err )
162- got , err := collectFilesystemSources (f , false , nil , nil )
164+ got , err := collectFilesystemSources (f , false , nil , nil , false )
163165 check .NoError (t , err )
164166 check .Number (t , len (got .sqlSources ), len (sqlSources ))
165167 check .Number (t , len (got .goSources ), 0 )
@@ -180,6 +182,24 @@ func TestCollectFileSources(t *testing.T) {
180182 })
181183 assertDirpath ("dir3" , nil )
182184 })
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+ })
183203}
184204
185205func TestMerge (t * testing.T ) {
@@ -195,7 +215,7 @@ func TestMerge(t *testing.T) {
195215 }
196216 fsys , err := fs .Sub (mapFS , "migrations" )
197217 check .NoError (t , err )
198- sources , err := collectFilesystemSources (fsys , false , nil , nil )
218+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
199219 check .NoError (t , err )
200220 check .Equal (t , len (sources .sqlSources ), 1 )
201221 check .Equal (t , len (sources .goSources ), 2 )
@@ -243,7 +263,7 @@ func TestMerge(t *testing.T) {
243263 }
244264 fsys , err := fs .Sub (mapFS , "migrations" )
245265 check .NoError (t , err )
246- sources , err := collectFilesystemSources (fsys , false , nil , nil )
266+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
247267 check .NoError (t , err )
248268 t .Run ("unregistered_all" , func (t * testing.T ) {
249269 migrations , err := merge (sources , map [int64 ]* Migration {
@@ -267,7 +287,7 @@ func TestMerge(t *testing.T) {
267287 }
268288 fsys , err := fs .Sub (mapFS , "migrations" )
269289 check .NoError (t , err )
270- sources , err := collectFilesystemSources (fsys , false , nil , nil )
290+ sources , err := collectFilesystemSources (fsys , false , nil , nil , false )
271291 check .NoError (t , err )
272292 t .Run ("unregistered_all" , func (t * testing.T ) {
273293 migrations , err := merge (sources , map [int64 ]* Migration {
0 commit comments