#!/usr/bin/env bats load $BATS_TEST_DIRNAME/helper/common.bash setup() { setup_common TESTDIRS=$(pwd)/testdirs mkdir -p $TESTDIRS/{rem1,repo1} # repo1 -> rem1 -> repo2 cd $TESTDIRS/repo1 dolt init dolt branch feature dolt remote add origin file://../rem1 dolt remote add test-remote file://../rem1 dolt push origin main cd $TESTDIRS dolt clone file://rem1 repo2 cd $TESTDIRS/repo2 dolt log dolt branch feature dolt remote add test-remote file://../rem1 # table and commits only present on repo1, rem1 at start cd $TESTDIRS/repo1 dolt sql -q "create table t1 (a int primary key, b int)" dolt add . dolt commit -am "First commit" dolt sql -q "insert into t1 values (0,0)" dolt commit -am "Second commit" dolt push origin main cd $TESTDIRS } teardown() { teardown_common rm -rf $TESTDIRS } @test "sql-pull: dolt_pull main" { cd repo2 dolt sql -q "call dolt_pull('origin')" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_pull custom remote" { cd repo2 dolt sql -q "call dolt_pull('test-remote')" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_pull default origin" { cd repo2 dolt remote remove test-remote dolt sql -q "call dolt_pull()" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_pull default custom remote" { cd repo2 dolt remote remove origin dolt sql -q "call dolt_pull()" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_pull up to date does not error" { cd repo2 dolt sql -q "call dolt_pull('origin')" dolt sql -q "call dolt_pull('origin')" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_pull unknown remote fails" { cd repo2 run dolt sql -q "call dolt_pull('unknown')" [ "$status" -eq 1 ] [[ "$output" =~ "fatal: remote 'unknown' not found" ]] || false [[ ! "$output" =~ "panic" ]] || false } @test "sql-pull: dolt_pull unknown feature branch fails" { cd repo2 dolt checkout feature run dolt sql -q "call dolt_pull('origin')" [ "$status" -eq 1 ] [[ "$output" =~ "You asked to pull from the remote 'origin', but did not specify a branch" ]] || false [[ ! "$output" =~ "panic" ]] || false } @test "sql-pull: dolt_pull feature branch" { cd repo1 dolt checkout feature dolt push --set-upstream origin feature cd ../repo2 dolt checkout feature dolt push --set-upstream origin feature cd ../repo1 dolt merge main dolt push cd ../repo2 dolt sql -q "call dolt_pull('origin')" run dolt sql -q "show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 2 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false } @test "sql-pull: dolt_checkout after dolt_fetch a new feature branch" { cd repo1 dolt checkout -b feature2 dolt sql -q "create table t2 (i int primary key);" dolt sql -q "call dolt_add('.');" dolt sql -q "call dolt_commit('-am', 'create t2')" dolt push --set-upstream origin feature2 cd ../repo2 dolt sql -q "CALL dolt_fetch('origin', 'feature2')" run dolt sql -q "call dolt_checkout('feature2'); show tables" -r csv [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 6 ] [[ "$output" =~ "Table" ]] || false [[ "$output" =~ "t1" ]] || false [[ "$output" =~ "t2" ]] || false } @test "sql-pull: dolt_pull force" { cd repo1 # disable foreign key checks to create merge conflicts dolt sql <