#!/usr/bin/env bats load $BATS_TEST_DIRNAME/helper/common.bash setup() { setup_common TMPDIRS=$(pwd)/tmpdirs mkdir -p $TMPDIRS/{bac1,rem1,repo1} # repo1 -> bac1 -> repo2 cd $TMPDIRS/repo1 dolt init dolt branch feature dolt remote add backup1 file://../bac1 dolt remote add remote1 file://../rem1 dolt push remote1 main cd $TMPDIRS } teardown() { teardown_common rm -rf $TMPDIRS cd $BATS_TMPDIR } @test "replication: default no replication" { cd repo1 dolt sql -q "create table t1 (a int primary key)" dolt add . dolt commit -am "cm" [ ! -d "../bac1/.dolt" ] || false } @test "replication: no push on cli commit" { cd repo1 dolt config --local --add sqlserver.global.dolt_replicate_to_remote backup1 dolt sql -q "create table t1 (a int primary key)" dolt add . dolt commit -am "cm" cd .. run dolt clone file://./bac1 repo2 [ "$status" -eq 1 ] } @test "replication: push on cli engine commit" { cd repo1 dolt config --local --add sqlserver.global.dolt_replicate_to_remote backup1 dolt sql -q "create table t1 (a int primary key)" dolt sql -q "call dolt_add('.')" dolt sql -q "call dolt_commit('-am', 'cm')" cd .. dolt clone file://./bac1 repo2 cd repo2 run dolt ls [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "t1" ]] || false } @test "replication: push branch delete" { cd repo1 dolt push remote1 feature dolt config --local --add sqlserver.global.dolt_replicate_to_remote remote1 dolt sql -q "call dolt_branch('-df', 'feature');" cd .. dolt clone file://./rem1 repo2 cd repo2 run dolt sql -q "select name from dolt_branches" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "main" ]] || false [[ ! "$output" =~ "feature" ]] || false } @test "replication: pull branch delete on read" { cd repo1 dolt push remote1 feature cd .. dolt clone file://./rem1 repo2 cd repo2 dolt push origin :feature cd ../repo1 run dolt sql -q "select name from dolt_branches" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 3 ] [[ "$output" =~ "main" ]] || false [[ "$output" =~ "feature" ]] || false dolt config --local --add sqlserver.global.dolt_read_replica_remote remote1 dolt config --local --add sqlserver.global.dolt_replicate_all_heads 1 run dolt sql -q "select name from dolt_branches" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "main" ]] || false [[ ! "$output" =~ "feature" ]] || false } @test "replication: pull branch delete current branch" { cd repo1 dolt push remote1 feature cd .. dolt clone file://./rem1 repo2 cd repo2 dolt push origin :feature cd ../repo1 run dolt sql -q "select name from dolt_branches" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 3 ] [[ "$output" =~ "main" ]] || false [[ "$output" =~ "feature" ]] || false dolt config --local --add sqlserver.global.dolt_read_replica_remote remote1 dolt config --local --add sqlserver.global.dolt_replicate_all_heads 1 dolt checkout feature run dolt sql -q "select name from dolt_branches" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "main" ]] || false [[ ! "$output" =~ "feature" ]] || false } @test "replication: table functions work" { cd repo1 dolt sql <