@@ -6,7 +6,6 @@ package migratelint_test
6
6
7
7
import (
8
8
"context"
9
- "errors"
10
9
"os"
11
10
"os/exec"
12
11
"path/filepath"
@@ -16,8 +15,6 @@ import (
16
15
17
16
"ariga.io/atlas/cmd/atlas/internal/migratelint"
18
17
"ariga.io/atlas/sql/migrate"
19
- "ariga.io/atlas/sql/schema"
20
- "ariga.io/atlas/sql/sqlclient"
21
18
_ "ariga.io/atlas/sql/sqlite"
22
19
23
20
_ "github.com/mattn/go-sqlite3"
@@ -133,134 +130,3 @@ func TestLatestChanges(t *testing.T) {
133
130
require .Equal (t , files [:1 ], base )
134
131
require .Equal (t , files [1 :], feat )
135
132
}
136
-
137
- func TestDevLoader_LoadChanges (t * testing.T ) {
138
- ctx := context .Background ()
139
- c , err := sqlclient .Open (ctx , "sqlite://ci?mode=memory&_fk=1" )
140
- require .NoError (t , err )
141
- defer c .Close ()
142
- l := & migratelint.DevLoader {Dev : c }
143
- diff , err := l .LoadChanges (ctx , nil , nil )
144
- require .NoError (t , err )
145
- require .Empty (t , diff .Files )
146
-
147
- diff , err = l .LoadChanges (ctx , []migrate.File {
148
- migrate .NewLocalFile ("0_base.sql" , []byte ("---\n \n CREATE INVALID users (id INT);\n " )),
149
- }, nil )
150
- require .Error (t , err )
151
- require .Nil (t , diff )
152
- var fr * migratelint.FileError
153
- require .True (t , errors .As (err , & fr ))
154
- require .Equal (t , `executing statement: near "INVALID": syntax error` , fr .Err .Error ())
155
- require .Equal (t , 5 , fr .Pos )
156
-
157
- base := []migrate.File {
158
- migrate .NewLocalFile ("0_base.sql" , []byte ("CREATE TABLE users (id INT);" )),
159
- }
160
- files := []migrate.File {
161
- migrate .NewLocalFile ("1.sql" , []byte ("CREATE TABLE t1 (id INT);\n INSERT INTO t1 (id) VALUES (1);" )),
162
- migrate .NewLocalFile ("2.sql" , []byte ("CREATE TABLE t2 (id INT);\n DROP TABLE users;" )),
163
- migrate .NewLocalFile ("3.sql" , []byte ("CREATE TABLE t3 (id INT);\n DROP TABLE t3;" )),
164
- migrate .NewLocalFile ("4.sql" , []byte ("ALTER TABLE t2 RENAME id TO oid;" )),
165
- }
166
- diff , err = l .LoadChanges (ctx , base , files )
167
- require .NoError (t , err )
168
- require .Len (t , diff .Files , 4 )
169
-
170
- // File 1.
171
- require .Equal (t , files [0 ], diff .Files [0 ].File )
172
- require .Len (t , diff .Files [0 ].Changes , 2 )
173
- require .Zero (t , diff .Files [0 ].Changes [0 ].Stmt .Pos )
174
- require .Equal (t , "CREATE TABLE t1 (id INT);" , diff .Files [0 ].Changes [0 ].Stmt .Text )
175
- require .IsType (t , (* schema .AddTable )(nil ), diff .Files [0 ].Changes [0 ].Changes [0 ])
176
- require .Equal (t , "INSERT INTO t1 (id) VALUES (1);" , diff .Files [0 ].Changes [1 ].Stmt .Text )
177
- require .Empty (t , diff .Files [0 ].Changes [1 ].Changes )
178
-
179
- // File 2.
180
- require .Equal (t , files [1 ], diff .Files [1 ].File )
181
- require .Len (t , diff .Files [1 ].Changes , 2 )
182
- require .Zero (t , diff .Files [1 ].Changes [0 ].Stmt .Pos )
183
- require .Equal (t , "CREATE TABLE t2 (id INT);" , diff .Files [1 ].Changes [0 ].Stmt .Text )
184
- require .IsType (t , (* schema .AddTable )(nil ), diff .Files [1 ].Changes [0 ].Changes [0 ])
185
- require .Zero (t , diff .Files [1 ].Changes [0 ].Stmt .Pos )
186
- require .Equal (t , "DROP TABLE users;" , diff .Files [1 ].Changes [1 ].Stmt .Text )
187
- require .IsType (t , (* schema .DropTable )(nil ), diff .Files [1 ].Changes [1 ].Changes [0 ])
188
-
189
- // File 3.
190
- require .Equal (t , files [2 ], diff .Files [2 ].File )
191
- require .IsType (t , (* schema .AddTable )(nil ), diff .Files [2 ].Changes [0 ].Changes [0 ])
192
- require .IsType (t , (* schema .DropTable )(nil ), diff .Files [2 ].Changes [1 ].Changes [0 ])
193
- require .Empty (t , diff .Files [2 ].Sum )
194
-
195
- // File 3.
196
- require .Equal (t , files [3 ], diff .Files [3 ].File )
197
- require .IsType (t , (* schema .ModifyTable )(nil ), diff .Files [3 ].Changes [0 ].Changes [0 ])
198
- require .IsType (t , (* schema .RenameColumn )(nil ), diff .Files [3 ].Changes [0 ].Changes [0 ].(* schema.ModifyTable ).Changes [0 ])
199
-
200
- // Changes.
201
- changes , err := c .RealmDiff (diff .From , diff .To )
202
- require .NoError (t , err )
203
- require .Len (t , changes , 3 )
204
-
205
- err = c .ApplyChanges (ctx , []schema.Change {
206
- & schema.AddTable {
207
- T : schema .NewTable ("users" ).AddColumns (schema .NewIntColumn ("id" , "int" )),
208
- },
209
- })
210
- require .NoError (t , err )
211
- _ , err = l .LoadChanges (ctx , base , files )
212
- require .ErrorAs (t , err , new (* migrate.NotCleanError ))
213
- }
214
-
215
- func TestDevLoader_LoadCheckpoints (t * testing.T ) {
216
- ctx := context .Background ()
217
- c , err := sqlclient .Open (ctx , "sqlite://ci?mode=memory&_fk=1" )
218
- require .NoError (t , err )
219
- defer c .Close ()
220
- dir := & migrate.MemDir {}
221
- l := & migratelint.DevLoader {Dev : c }
222
- require .NoError (t , dir .WriteFile ("1.sql" , []byte ("CREATE TABLE t1 (id INT);" )))
223
- require .NoError (t , dir .WriteFile ("2.sql" , []byte ("CREATE TABLE t2 (id INT);" )))
224
- require .NoError (t , dir .WriteCheckpoint ("3_checkpoint.sql" , "" , []byte ("CREATE TABLE t1 (id INT);\n CREATE TABLE t2 (id INT);" )))
225
- require .NoError (t , dir .WriteFile ("4.sql" , []byte ("CREATE TABLE t3 (id INT);" )))
226
-
227
- files , err := dir .Files ()
228
- require .NoError (t , err )
229
- // Base contains a checkpoint file.
230
- diff , err := l .LoadChanges (ctx , files [:3 ], files [3 :])
231
- require .NoError (t , err )
232
- require .Len (t , diff .Files , 1 )
233
- require .Equal (t , "4.sql" , diff .Files [0 ].File .Name ())
234
- isAddTable (t , diff .Files [0 ].Changes [0 ].Changes [0 ], "t3" )
235
-
236
- // Changed files contain a checkpoint file.
237
- diff , err = l .LoadChanges (ctx , files [:2 ], files [2 :])
238
- require .NoError (t , err )
239
- require .Len (t , diff .Files , 2 )
240
- require .Equal (t , "3_checkpoint.sql" , diff .Files [0 ].File .Name ())
241
- require .Len (t , diff .Files [0 ].Changes , 2 )
242
- isAddTable (t , diff .Files [0 ].Changes [0 ].Changes [0 ], "t1" )
243
- isAddTable (t , diff .Files [0 ].Changes [1 ].Changes [0 ], "t2" )
244
- require .Equal (t , "4.sql" , diff .Files [1 ].File .Name ())
245
- isAddTable (t , diff .Files [1 ].Changes [0 ].Changes [0 ], "t3" )
246
-
247
- // Both base and changed files contain a checkpoint file.
248
- require .NoError (t , dir .WriteCheckpoint ("5_checkpoint.sql" , "" , []byte ("CREATE TABLE t1(id INT);\n CREATE TABLE t2(id INT);\n CREATE TABLE t3(id INT);" )))
249
- files , err = dir .Files ()
250
- require .NoError (t , err )
251
- diff , err = l .LoadChanges (ctx , files [:3 ], files [3 :])
252
- require .NoError (t , err )
253
- require .Len (t , diff .Files , 2 )
254
- require .Equal (t , "4.sql" , diff .Files [0 ].File .Name ())
255
- isAddTable (t , diff .Files [0 ].Changes [0 ].Changes [0 ], "t3" )
256
- require .Equal (t , "5_checkpoint.sql" , diff .Files [1 ].File .Name ())
257
- require .Len (t , diff .Files [1 ].Changes , 3 )
258
- isAddTable (t , diff .Files [1 ].Changes [0 ].Changes [0 ], "t1" )
259
- isAddTable (t , diff .Files [1 ].Changes [1 ].Changes [0 ], "t2" )
260
- isAddTable (t , diff .Files [1 ].Changes [2 ].Changes [0 ], "t3" )
261
- }
262
-
263
- func isAddTable (t * testing.T , c schema.Change , name string ) {
264
- require .IsType (t , (* schema .AddTable )(nil ), c )
265
- require .Equal (t , name , c .(* schema.AddTable ).T .Name )
266
- }
0 commit comments