@@ -52,7 +52,7 @@ func TestStageMigrationsNoCollisionAcrossPacks(t *testing.T) {
5252
5353func TestStageMigrationsRejectsDuplicateIdWithinPack (t * testing.T ) {
5454 p := migrationPack ("dup" , fstest.MapFS {
55- "pack.json" : {Data : []byte (`{"name":"dup","version":"1.0.0"}` )},
55+ "pack.json" : {Data : []byte (`{"name":"dup","version":"1.0.0"}` )},
5656 "migrations/0001_a.js" : {Data : []byte ("a" )},
5757 "migrations/0001_b.js" : {Data : []byte ("b" )},
5858 })
@@ -94,6 +94,22 @@ func TestStageMigrationsMissingCoreDirIsSkipped(t *testing.T) {
9494 }
9595}
9696
97+ func TestStageMigrationsFallsBackWhenMigrationsDirEmpty (t * testing.T ) {
98+ p := migrationPack ("fallback" , fstest.MapFS {
99+ "pack.json" : {Data : []byte (`{"name":"fallback","version":"1.0.0"}` )},
100+ "migrations" : {Mode : fs .ModeDir },
101+ "migration/0001_init.js" : {Data : []byte ("migrate((app)=>{})" )},
102+ })
103+ destination := filepath .Join (t .TempDir (), "migrations" )
104+ if err := StageMigrations ("" , []Pack {p }, destination ); err != nil {
105+ t .Fatal (err )
106+ }
107+ got := diskTree (t , destination )
108+ if got ["pack--fallback--0001_init.js" ] != "migrate((app)=>{})" {
109+ t .Fatalf ("fallback migration not staged: %v" , got )
110+ }
111+ }
112+
97113func TestStageMigrationsRejectsInvalidResources (t * testing.T ) {
98114 tests := map [string ]fstest.MapFS {
99115 "nested" : {"pack.json" : {Data : []byte (`{"name":"nested","version":"1.0.0"}` )}, "migrations/sub/0001.js" : {Data : []byte ("x" )}},
@@ -115,7 +131,7 @@ func TestStageMigrationsFailurePreservesOldState(t *testing.T) {
115131 writeFile (t , filepath .Join (destination , "good.js" ), "good" )
116132
117133 bad := migrationPack ("broken" , fstest.MapFS {
118- "pack.json" : {Data : []byte (`{"name":"broken","version":"1.0.0"}` )},
134+ "pack.json" : {Data : []byte (`{"name":"broken","version":"1.0.0"}` )},
119135 "migrations/0001_a.js" : {Data : []byte ("a" )},
120136 "migrations/0001_b.js" : {Data : []byte ("b" )},
121137 })
0 commit comments