mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-12 17:10:06 -06:00
457 lines
12 KiB
Bash
457 lines
12 KiB
Bash
#!/usr/bin/env bats
|
|
load $BATS_TEST_DIRNAME/helper/common.bash
|
|
|
|
setup() {
|
|
setup_common
|
|
TMPDIRS=$(pwd)/tmpdirs
|
|
mkdir -p $TMPDIRS/{rem1,repo1}
|
|
|
|
# repo1 -> rem1 -> repo2
|
|
cd $TMPDIRS/repo1
|
|
dolt init
|
|
dolt remote add origin file://../rem1
|
|
dolt remote add test-remote file://../rem1
|
|
dolt push origin main
|
|
|
|
cd $TMPDIRS
|
|
dolt clone file://rem1 repo2
|
|
cd $TMPDIRS/repo2
|
|
dolt branch feature
|
|
dolt remote add test-remote file://../rem1
|
|
|
|
# table and comits only present on repo1, rem1 at start
|
|
cd $TMPDIRS/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 branch feature
|
|
dolt push origin main
|
|
cd $TMPDIRS
|
|
}
|
|
|
|
teardown() {
|
|
teardown_common
|
|
rm -rf $TMPDIRS
|
|
cd $BATS_TMPDIR
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch default" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch()"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch default" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch()"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dfetch default" {
|
|
cd repo2
|
|
dolt sql -q "CALL dfetch()"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch origin" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('origin')"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch origin" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('origin')"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch main" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('origin', 'main')"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch main" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('origin', 'main')"
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch custom remote" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('test-remote')"
|
|
|
|
run dolt diff main test-remote/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch custom remote" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('test-remote')"
|
|
|
|
run dolt diff main test-remote/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch specific ref" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('test-remote', 'refs/heads/main:refs/remotes/test-remote/main')"
|
|
|
|
run dolt diff main test-remote/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch specific ref" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('test-remote', 'refs/heads/main:refs/remotes/test-remote/main')"
|
|
|
|
run dolt diff main test-remote/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch feature branch" {
|
|
cd repo1
|
|
dolt push origin feature
|
|
|
|
cd ../repo2
|
|
dolt sql -q "call dolt_fetch('origin', 'feature')"
|
|
|
|
run dolt diff main origin/feature
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/feature')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch feature branch" {
|
|
cd repo1
|
|
dolt push origin feature
|
|
|
|
cd ../repo2
|
|
dolt sql -q "CALL dolt_fetch('origin', 'feature')"
|
|
|
|
run dolt diff main origin/feature
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/feature')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch tag" {
|
|
cd repo1
|
|
dolt tag v1
|
|
dolt push origin v1
|
|
|
|
cd ../repo2
|
|
dolt sql -q "call dolt_fetch('origin', 'main')"
|
|
|
|
run dolt diff main v1
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('v1')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch tag" {
|
|
cd repo1
|
|
dolt tag v1
|
|
dolt push origin v1
|
|
|
|
cd ../repo2
|
|
dolt sql -q "CALL dolt_fetch('origin', 'main')"
|
|
|
|
run dolt diff main v1
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('v1')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch only tag" {
|
|
skip "todo tag refspec support, and/or --tags option"
|
|
cd repo1
|
|
dolt tag v1
|
|
dolt push origin v1
|
|
|
|
cd ../repo2
|
|
dolt sql -q "call dolt_fetch('origin', 'refs/tags/v1:refs/tags/v1')"
|
|
|
|
run dolt diff main origin/v1
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('v1')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch only tag" {
|
|
skip "todo tag refspec support, and/or --tags option"
|
|
cd repo1
|
|
dolt tag v1
|
|
dolt push origin v1
|
|
|
|
cd ../repo2
|
|
dolt sql -q "CALL dolt_fetch('origin', 'refs/tags/v1:refs/tags/v1')"
|
|
|
|
run dolt diff main origin/v1
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('v1')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch rename ref" {
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('test-remote', 'refs/heads/main:refs/remotes/test-remote/other')"
|
|
|
|
run dolt diff main test-remote/other
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/other')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch rename ref" {
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('test-remote', 'refs/heads/main:refs/remotes/test-remote/other')"
|
|
|
|
run dolt diff main test-remote/other
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "added table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('test-remote/other')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch override local branch" {
|
|
skip "todo more flexible refspec support"
|
|
cd repo2
|
|
dolt sql -q "call dolt_fetch('origin', 'main:refs/heads/main')"
|
|
|
|
dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ ! "$output" =~ "removed table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch override local branch" {
|
|
skip "todo more flexible refspec support"
|
|
cd repo2
|
|
dolt sql -q "CALL dolt_fetch('origin', 'main:refs/heads/main')"
|
|
|
|
dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ ! "$output" =~ "removed table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t1" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch with forced commit" {
|
|
# reverse information flow for force fetch repo1->rem1->repo2
|
|
cd repo2
|
|
dolt sql -q "create table t2 (a int)"
|
|
dolt add .
|
|
dolt commit -am "forced commit"
|
|
dolt push --force origin main
|
|
cd ../repo1
|
|
|
|
run dolt sql -q "call dolt_fetch('origin', 'main')"
|
|
[ "$status" -eq 0 ]
|
|
|
|
run dolt diff main origin/main
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "deleted table" ]] || false
|
|
|
|
run dolt sql -q "show tables as of hashof('origin/main')" -r csv
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
[[ "$output" =~ "Table" ]] || false
|
|
[[ "$output" =~ "t2" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch unknown remote fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "call dolt_fetch('unknown')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch unknown remote fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "CALL dolt_fetch('unknown')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch unknown remote with fetchspec fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "call dolt_fetch('unknown', 'main')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch unknown remote with fetchspec fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "CALL dolt_fetch('unknown', 'main')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch unknown ref fails" {
|
|
cd repo2
|
|
run dolt sql -q "call dolt_fetch('origin', 'unknown')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "invalid ref spec: 'unknown'" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch unknown ref fails" {
|
|
cd repo2
|
|
run dolt sql -q "CALL dolt_fetch('origin', 'unknown')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "invalid ref spec: 'unknown'" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch empty remote fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "call dolt_fetch('')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch empty remote fails" {
|
|
cd repo2
|
|
dolt remote remove origin
|
|
run dolt sql -q "CALL dolt_fetch('')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "unknown remote" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: dolt_fetch empty ref fails" {
|
|
cd repo2
|
|
run dolt sql -q "call dolt_fetch('origin', '')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "invalid fetch spec: ''" ]] || false
|
|
}
|
|
|
|
@test "sql-fetch: CALL dolt_fetch empty ref fails" {
|
|
cd repo2
|
|
run dolt sql -q "CALL dolt_fetch('origin', '')"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" =~ "invalid fetch spec: ''" ]] || false
|
|
}
|