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  }