github.com/wrgl/wrgl@v0.14.0/pkg/migrate/0_10_1_sqlite_test.go (about) 1 package migrate 2 3 import ( 4 "database/sql" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 "github.com/wrgl/wrgl/pkg/ref" 11 reffs "github.com/wrgl/wrgl/pkg/ref/fs" 12 refhelpers "github.com/wrgl/wrgl/pkg/ref/helpers" 13 refsql "github.com/wrgl/wrgl/pkg/ref/sql" 14 "github.com/wrgl/wrgl/pkg/testutils" 15 ) 16 17 func TestMigration(t *testing.T) { 18 dir := t.TempDir() 19 20 // it does not error out on an empty dir 21 for _, m := range migrations { 22 if m.SemVer.String() == "0.10.1" { 23 require.NoError(t, m.Migrate(dir)) 24 break 25 } 26 } 27 28 dir = t.TempDir() 29 rs := reffs.NewStore(filepath.Join(dir, "files")) 30 31 var sums [][]byte 32 var rls []*ref.Reflog 33 for i := 0; i < 4; i++ { 34 sum := testutils.SecureRandomBytes(16) 35 rl := refhelpers.RandomReflog() 36 rl.NewOID = sum 37 if i > 0 { 38 rl.OldOID = sums[i-1] 39 } else { 40 rl.OldOID = nil 41 } 42 sums = append(sums, sum) 43 rls = append(rls, rl) 44 require.NoError(t, rs.SetWithLog("heads/main", sum, rl)) 45 } 46 47 sum := testutils.SecureRandomBytes(16) 48 require.NoError(t, rs.Set("heads/temp", sum)) 49 50 for _, m := range migrations { 51 if m.SemVer.String() == "0.10.1" { 52 require.NoError(t, m.Migrate(dir)) 53 break 54 } 55 } 56 57 db, err := sql.Open("sqlite3", filepath.Join(dir, "sqlite.db")) 58 require.NoError(t, err) 59 defer db.Close() 60 s := refsql.NewStore(db) 61 v, err := s.Get("heads/temp") 62 require.NoError(t, err) 63 assert.Equal(t, sum, v) 64 v, err = s.Get("heads/main") 65 require.NoError(t, err) 66 assert.Equal(t, sums[3], v) 67 refhelpers.AssertReflogReaderContains(t, s, "heads/main", rls[3], rls[2], rls[1], rls[0]) 68 }