mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-20 19:31:56 -05:00
Fix the dolt harness for sqllogictest to correctly reinitialize the dolt repo for each file. This was previously unnecessary because we were not persisting the working set on commit and had autocommit disabled
This commit is contained in:
@@ -21,7 +21,9 @@ import (
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/dolthub/dolt/go/store/types"
|
||||
sqle "github.com/dolthub/go-mysql-server"
|
||||
"github.com/dolthub/go-mysql-server/sql"
|
||||
"github.com/dolthub/sqllogictest/go/logictest"
|
||||
@@ -38,6 +40,11 @@ import (
|
||||
|
||||
var _ logictest.Harness = &DoltHarness{}
|
||||
|
||||
const (
|
||||
name = "sqllogictest runner"
|
||||
email = "sqllogictestrunner@dolthub.com"
|
||||
)
|
||||
|
||||
type DoltHarness struct {
|
||||
Version string
|
||||
engine *sqle.Engine
|
||||
@@ -53,10 +60,6 @@ func (h *DoltHarness) EngineStr() string {
|
||||
|
||||
func (h *DoltHarness) Init() error {
|
||||
dEnv := env.Load(context.Background(), env.GetCurrentUserHomeDir, filesys.LocalFS, doltdb.LocalDirDoltDB, "test")
|
||||
if !dEnv.HasDoltDir() {
|
||||
panic("Current directory must be a valid dolt repository")
|
||||
}
|
||||
|
||||
return innerInit(h, dEnv)
|
||||
}
|
||||
|
||||
@@ -116,6 +119,18 @@ func (h *DoltHarness) ExecuteQuery(statement string) (schema string, results []s
|
||||
}
|
||||
|
||||
func innerInit(h *DoltHarness, dEnv *env.DoltEnv) error {
|
||||
if !dEnv.HasDoltDir() {
|
||||
err := dEnv.InitRepoWithTime(context.Background(), types.Format_Default, name, email, time.Now())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err := dEnv.InitDBAndRepoState(context.Background(), types.Format_Default, name, email, time.Now())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
var err error
|
||||
h.engine, err = sqlNewEngine(dEnv)
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ package dolt
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
@@ -97,26 +98,30 @@ func TestDoltHarness(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
t.Run("should execute simple sql queries against Dolt", func(t *testing.T) {
|
||||
h := &DoltHarness{}
|
||||
fs := filesys.NewInMemFS([]string{}, nil, tmp)
|
||||
dEnv := createTestEnvWithFS(fs, wd)
|
||||
fs := filesys.NewInMemFS([]string{}, nil, tmp)
|
||||
dEnv := createTestEnvWithFS(fs, wd)
|
||||
|
||||
err := innerInit(h, dEnv)
|
||||
assert.Equal(t, nil, err)
|
||||
// We run this several times in a row to make sure that the same dolt env can be used in multiple setup / teardown
|
||||
// cycles
|
||||
for i := 0; i < 10; i++ {
|
||||
t.Run(fmt.Sprintf("dolt harness runner %d", i), func(t *testing.T) {
|
||||
h := &DoltHarness{}
|
||||
err := innerInit(h, dEnv)
|
||||
assert.Equal(t, nil, err)
|
||||
|
||||
// setup repo with statements
|
||||
for _, test := range statementTests {
|
||||
err = h.ExecuteStatement(test.statement)
|
||||
assert.Equal(t, test.expErr, err)
|
||||
}
|
||||
// setup repo with statements
|
||||
for _, test := range statementTests {
|
||||
err = h.ExecuteStatement(test.statement)
|
||||
assert.Equal(t, test.expErr, err)
|
||||
}
|
||||
|
||||
// test queries
|
||||
for _, test := range queryTests {
|
||||
schema, results, err := h.ExecuteQuery(test.query)
|
||||
assert.Equal(t, test.expErr, err)
|
||||
assert.Equal(t, test.expSchema, schema)
|
||||
assert.Equal(t, test.expResults, results)
|
||||
}
|
||||
})
|
||||
// test queries
|
||||
for _, test := range queryTests {
|
||||
schema, results, err := h.ExecuteQuery(test.query)
|
||||
assert.Equal(t, test.expErr, err)
|
||||
assert.Equal(t, test.expSchema, schema)
|
||||
assert.Equal(t, test.expResults, results)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user