@@ -2,22 +2,65 @@ package migrations
2
2
3
3
import (
4
4
"bufio"
5
+ "fmt"
5
6
iofs "io/fs"
6
7
"os"
7
- "path"
8
8
"path/filepath"
9
9
"regexp"
10
10
"slices"
11
11
"testing"
12
12
13
13
"github.com/google/go-cmp/cmp"
14
+ "github.com/remind101/migrate"
14
15
)
15
16
17
+ func TestBasicIndexerMigrations (t * testing.T ) {
18
+ testMigrations (t , "indexer" , IndexerMigrations )
19
+ }
20
+
21
+ func TestBasicMatchMigrations (t * testing.T ) {
22
+ testMigrations (t , "matcher" , MatcherMigrations )
23
+ }
24
+
25
+ func testMigrations (t * testing.T , root string , migrations []migrate.Migration ) {
26
+ var fileMigrations []string
27
+ err := iofs .WalkDir (fs , root , func (path string , d iofs.DirEntry , err error ) error {
28
+ if err != nil {
29
+ return err
30
+ }
31
+ if d .Name () == root {
32
+ return nil
33
+ }
34
+ if ! d .Type ().IsRegular () {
35
+ return fmt .Errorf ("%s is not a regular file" , path )
36
+ }
37
+ if filepath .Ext (d .Name ()) != ".sql" {
38
+ return fmt .Errorf ("%s is not a .sql file" , path )
39
+ }
40
+
41
+ fileMigrations = append (fileMigrations , path )
42
+ return nil
43
+ })
44
+ if err != nil {
45
+ t .Fatal (err )
46
+ }
47
+
48
+ if len (fileMigrations ) != len (migrations ) {
49
+ t .Error (cmp .Diff (len (fileMigrations ), len (migrations )))
50
+ }
51
+
52
+ for i , m := range migrations {
53
+ if m .ID != i + 1 {
54
+ t .Error (cmp .Diff (m .ID , i + 1 ))
55
+ }
56
+ }
57
+ }
58
+
16
59
func TestMigrationsMismatch (t * testing.T ) {
17
60
var migrations , files []string
18
61
19
62
// Get referenced migrations
20
- migrationLine , err := regexp .Compile (`runFile\(\ "(.*)\ "\)` )
63
+ migrationLine , err := regexp .Compile (`runFile\("(.*)"\)` )
21
64
if err != nil {
22
65
t .Fatal (err )
23
66
}
@@ -34,16 +77,15 @@ func TestMigrationsMismatch(t *testing.T) {
34
77
case ms == nil , len (ms ) == 1 :
35
78
continue
36
79
case len (ms ) == 2 :
37
- migrations = append (migrations , path .Clean (string (ms [1 ])))
80
+ migrations = append (migrations , filepath .Clean (string (ms [1 ])))
38
81
}
39
82
}
40
83
if err := s .Err (); err != nil {
41
84
t .Error (err )
42
85
}
43
86
slices .Sort (migrations )
44
-
45
87
// Get migration files
46
- err = iofs .WalkDir (os . DirFS ( "." ) , "." , func (p string , d iofs.DirEntry , err error ) error {
88
+ err = iofs .WalkDir (fs , "." , func (p string , d iofs.DirEntry , err error ) error {
47
89
switch {
48
90
case err != nil :
49
91
return err
0 commit comments