mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-29 10:41:05 -06:00
added bats for feature version
This commit is contained in:
@@ -9,8 +9,90 @@ teardown() {
|
||||
rm -rf "$BATS_TMPDIR/dolt-repo-$$"
|
||||
}
|
||||
|
||||
# client FeatureVersion must be >= repo FeatureVersion to read
|
||||
# read with maximum FeatureVersion for assersions
|
||||
MAX=1000
|
||||
|
||||
OLD=10
|
||||
NEW=20
|
||||
|
||||
@test "set feature version with CLI flag" {
|
||||
dolt --feature-version 19 sql -q "CREATE TABLE test (pk int PRIMARY KEY)"
|
||||
run dolt --feature-version 19 version --feature
|
||||
run dolt --feature-version $MAX version --feature
|
||||
[[ "$output" =~ "feature version: 19" ]] || false
|
||||
}
|
||||
|
||||
@test "new client writes to table, locking out old client" {
|
||||
run dolt --feature-version $OLD sql <<SQL
|
||||
CREATE TABLE test (pk int PRIMARY KEY);
|
||||
INSERT INTO test VALUES (10),(11),(12);
|
||||
SQL
|
||||
[ "$status" -eq 0 ]
|
||||
run dolt --feature-version $NEW sql -q "INSERT INTO test VALUES (20),(21),(22);"
|
||||
[ "$status" -eq 0 ]
|
||||
|
||||
# old client can't read or write
|
||||
run dolt --feature-version $OLD sql -q "SELECT * FROM test"
|
||||
[ "$status" -ne 0 ]
|
||||
[[ ! "$output" =~ "panic" ]] || false
|
||||
run dolt --feature-version $OLD sql -q "INSERT INTO test VALUES (13);"
|
||||
[ "$status" -ne 0 ]
|
||||
[[ ! "$output" =~ "panic" ]] || false
|
||||
}
|
||||
|
||||
setup_remote_tests() {
|
||||
# remote repo from top-level test directory
|
||||
rm -rf .dolt/
|
||||
|
||||
# create a new repo and a remote
|
||||
mkdir remote first_repo
|
||||
pushd first_repo
|
||||
dolt --feature-version $OLD init
|
||||
dolt --feature-version $OLD remote add origin file://../remote/
|
||||
|
||||
# add some data and push
|
||||
dolt --feature-version $OLD sql <<SQL
|
||||
CREATE TABLE test (pk int PRIMARY KEY);
|
||||
INSERT INTO test VALUES (10),(11),(12);
|
||||
SQL
|
||||
dolt --feature-version $OLD add .
|
||||
dolt --feature-version $OLD commit -m "test table"
|
||||
dolt --feature-version $OLD push origin master
|
||||
popd
|
||||
|
||||
# clone repo
|
||||
dolt --feature-version $OLD clone file://remote clone_repo
|
||||
}
|
||||
|
||||
@test "pulling newer FeatureVersion locks out old client" {
|
||||
setup_remote_tests
|
||||
|
||||
pushd first_repo
|
||||
dolt --feature-version $NEW sql -q "INSERT INTO test VALUES (20);"
|
||||
dolt --feature-version $NEW commit -am "added row with new FeatureVersion"
|
||||
dolt --feature-version $NEW push origin master
|
||||
popd
|
||||
|
||||
pushd clone_repo
|
||||
run dolt --feature-version $NEW sql -q "SELECT count(*) FROM test;" -r csv
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "${lines[1]}" =~ "3" ]] || false
|
||||
run dolt --feature-version $MAX version --feature
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" =~ "feature version: $OLD" ]] || false
|
||||
|
||||
# pull fails with old FeatureVersion
|
||||
run dolt --feature-version $OLD pull
|
||||
[ "$status" -ne 0 ]
|
||||
|
||||
# pull succeeds with old FeatureVersion
|
||||
run dolt --feature-version $NEW pull
|
||||
[ "$status" -eq 0 ]
|
||||
|
||||
run dolt --feature-version $NEW sql -q "SELECT count(*) FROM test;" -r csv
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "${lines[1]}" =~ "4" ]] || false
|
||||
run dolt --feature-version $MAX version --feature
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" =~ "feature version: $NEW" ]] || false
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ func runMain() int {
|
||||
restoreIO := cli.InitIO()
|
||||
defer restoreIO()
|
||||
|
||||
//warnIfMaxFilesTooLow()
|
||||
warnIfMaxFilesTooLow()
|
||||
|
||||
ctx := context.Background()
|
||||
dEnv := env.Load(ctx, env.GetCurrentUserHomeDir, filesys.LocalFS, doltdb.LocalDirDoltDB, Version)
|
||||
@@ -256,7 +256,7 @@ func runMain() int {
|
||||
return 1
|
||||
}
|
||||
|
||||
//err = reconfigIfTempFileMoveFails(dEnv)
|
||||
err = reconfigIfTempFileMoveFails(dEnv)
|
||||
|
||||
if err != nil {
|
||||
cli.PrintErrln(color.RedString("Failed to setup the temporary directory. %v`", err))
|
||||
|
||||
Reference in New Issue
Block a user