Files
wehub-resource-sync 5357c39144
Fuzzer / Run Fuzzer (push) Has been cancelled
Race tests / Go race tests (ubuntu-22.04) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:01:40 +08:00

681 lines
22 KiB
Bash

#!/usr/bin/env bats
load $BATS_TEST_DIRNAME/helper/common.bash
setup() {
setup_common
dolt sql <<SQL
CREATE TABLE test (
pk int NOT NULL PRIMARY KEY,
c0 int
);
INSERT INTO test VALUES
(0,0),(1,1),(2,2);
CREATE TABLE to_drop (
pk int PRIMARY KEY
);
SQL
dolt add -A
dolt commit -m "added table test"
}
teardown() {
assert_feature_version
teardown_common
}
@test "filter-branch: smoke-test" {
dolt sql -q "INSERT INTO test VALUES (7,7),(8,8),(9,9);"
dolt add -A && dolt commit -m "added more rows"
dolt filter-branch -q "DELETE FROM test WHERE pk > 1;"
run dolt sql -q "SELECT count(*) FROM test" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2" ]] || false
run dolt sql -q "SELECT max(pk), max(c0) FROM dolt_history_test;" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1,1" ]] || false
}
@test "filter-branch: verbose mode" {
dolt sql -q "INSERT INTO test VALUES (7,7),(8,8),(9,9);"
dolt commit -Am "added more rows"
run dolt filter-branch -v -q "DELETE FROM test WHERE pk = 8;"
[ "$status" -eq 0 ]
[[ "$output" =~ "processing commit" ]] || false
[[ "$output" =~ "updated commit" ]] || false
}
@test "filter-branch: filter multiple branches" {
dolt branch other
dolt sql -q "INSERT INTO test VALUES (7,7),(8,8),(9,9);"
dolt add -A && dolt commit -m "added more rows"
dolt checkout other
dolt sql -q "INSERT INTO test VALUES (4,4),(5,5),(6,6);"
dolt add -A && dolt commit -m "added more rows"
dolt checkout main
dolt filter-branch --all -q "DELETE FROM test WHERE pk > 4;"
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test ORDER BY pk" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "0,0" ]] || false
[[ "$output" =~ "0,0" ]] || false
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "2,2" ]] || false
[[ "$output" =~ "2,2" ]] || false
dolt checkout other
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test ORDER BY pk" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "0,0" ]] || false
[[ "$output" =~ "0,0" ]] || false
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "2,2" ]] || false
[[ "$output" =~ "2,2" ]] || false
[[ "$output" =~ "4,4" ]] || false
}
@test "filter-branch: filter tags" {
dolt sql <<SQL
create table t (pk int primary key);
insert into t values (1),(2);
call dolt_commit('-Am', 'msg');
insert into t values (3);
call dolt_commit('-Am', 'three');
call dolt_tag('myTag');
insert into t values (4);
call dolt_commit('-Am', 'four');
SQL
run dolt sql -q "select * from t as of 'myTag'" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ "$output" =~ "3" ]] || false
dolt filter-branch --all --continue -q "delete from t where pk >= 3"
run dolt sql -q "select * from t as of 'myTag'" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ ! "$output" =~ "3" ]] || false
}
@test "filter-branch: filter branches only" {
dolt sql <<SQL
create table t (pk int primary key);
insert into t values (1),(2);
call dolt_commit('-Am', 'msg');
insert into t values (3);
call dolt_commit('-Am', 'three');
call dolt_tag('myTag');
insert into t values (4);
call dolt_commit('-Am', 'four');
SQL
run dolt sql -q "select * from t" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ "$output" =~ "3" ]] || false
[[ "$output" =~ "4" ]] || false
run dolt sql -q "select * from t as of 'myTag'" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ "$output" =~ "3" ]] || false
dolt filter-branch --branches --continue -q "delete from t where pk >= 3"
run dolt sql -q "select * from t" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ ! "$output" =~ "3" ]] || false
[[ ! "$output" =~ "4" ]] || false
run dolt sql -q "select * from t as of 'myTag'" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1" ]] || false
[[ "$output" =~ "2" ]] || false
[[ "$output" =~ "3" ]] || false
}
@test "filter-branch: with missing table" {
dolt sql -q "DROP TABLE test;"
dolt add -A && dolt commit -m "dropped test"
# filter-branch warns about missing table but doesn't error
run dolt filter-branch --continue --verbose -q "DELETE FROM test WHERE pk > 1;"
[ "$status" -eq 0 ]
[[ "$output" =~ "table not found: test" ]] || false
run dolt sql -q "SELECT count(*) FROM test AS OF 'HEAD~1';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2" ]] || false
}
@test "filter-branch: forks history" {
dolt branch other
dolt sql -q "INSERT INTO test VALUES (7,7),(8,8),(9,9);"
dolt add -A && dolt commit -m "added more rows"
dolt filter-branch -q "DELETE FROM test WHERE pk > 1;"
dolt checkout other
run dolt sql -q "SELECT * FROM test WHERE pk > 1" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2,2" ]] || false
}
@test "filter-branch: filter until commit" {
dolt sql -q "INSERT INTO test VALUES (7,7)"
dolt add -A && dolt commit -m "added (7,7)"
dolt sql -q "INSERT INTO test VALUES (8,8)"
dolt add -A && dolt commit -m "added (8,8)"
dolt sql -q "INSERT INTO test VALUES (9,9)"
dolt add -A && dolt commit -m "added (9,9)"
dolt filter-branch -q "DELETE FROM test WHERE pk > 2;" HEAD~2
run dolt sql -q "SELECT max(pk), max(c0) FROM test AS OF 'HEAD';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2,2" ]] || false
run dolt sql -q "SELECT max(pk), max(c0) FROM test AS OF 'HEAD~1';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2,2" ]] || false
run dolt sql -q "SELECT max(pk), max(c0) FROM test AS OF 'HEAD~2';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "7,7" ]] || false
}
function setup_write_test {
dolt sql -q "INSERT INTO test VALUES (4,4);"
dolt add -A && dolt commit -m "4"
dolt sql -q "INSERT INTO test VALUES (5,5);"
dolt add -A && dolt commit -m "5"
}
@test "filter-branch: INSERT INTO" {
setup_write_test
dolt filter-branch -q "INSERT INTO test VALUES (9,9);"
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test ORDER BY pk DESC LIMIT 4;" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "5,5" ]] || false
}
@test "filter-branch: UPDATE" {
setup_write_test
dolt filter-branch -q "UPDATE test SET c0 = 9 WHERE pk = 2;"
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test ORDER BY c0 DESC LIMIT 4;" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "2,9" ]] || false
[[ "$output" =~ "2,9" ]] || false
[[ "$output" =~ "2,9" ]] || false
[[ "$output" =~ "5,5" ]] || false
}
@test "filter-branch: ADD/DROP column" {
setup_write_test
dolt filter-branch -q "ALTER TABLE TEST ADD COLUMN c1 int;"
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SELECT * FROM test AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,c1" ]] || false
done
dolt filter-branch -q "ALTER TABLE TEST DROP COLUMN c0;"
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SELECT * FROM test AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c1" ]] || false
done
}
@test "filter-branch: ADD/DROP table" {
setup_write_test
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SHOW TABLES AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ ! "$output" =~ "added" ]] || false
done
dolt filter-branch -q "CREATE TABLE added (pk int PRIMARY KEY);"
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SHOW TABLES AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "added" ]] || false
done
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SHOW TABLES AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "to_drop" ]] || false
done
dolt filter-branch -q "DROP TABLE to_drop;"
for commit in HEAD HEAD~1 HEAD~2; do
run dolt sql -q "SHOW TABLES AS OF '$commit';" -r csv
[ "$status" -eq 0 ]
[[ ! "$output" =~ "to_drop" ]] || false
done
}
@test "filter-branch: error on conflict" {
setup_write_test
run dolt filter-branch -q "INSERT INTO test VALUES (1,2);"
[ "$status" -ne 0 ]
[[ ! "$output" =~ "panic" ]] || false
run dolt filter-branch -q "REPLACE INTO test VALUES (1,2);"
[ "$status" -eq 0 ]
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test WHERE pk=1;" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1,2" ]] || false
[[ "$output" =~ "1,2" ]] || false
[[ "$output" =~ "1,2" ]] || false
}
@test "filter-branch: error on incorrect schema" {
setup_write_test
dolt sql <<SQL
ALTER TABLE test ADD COLUMN c1 int;
INSERT INTO test VALUES (6,6,6);
SQL
dolt add -A && dolt commit -m "added column c1"
run dolt filter-branch -q "INSERT INTO test VALUES (9,9);"
[ "$status" -ne 0 ]
[[ ! "$output" =~ "panic" ]] || false
run dolt filter-branch -q "INSERT INTO test (pk,c0) VALUES (9,9);"
[ "$status" -eq 0 ]
run dolt sql -q "SELECT pk,c0 FROM dolt_history_test WHERE pk=9;" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "9,9" ]] || false
[[ "$output" =~ "9,9" ]] || false
}
@test "filter-branch: continue on errors" {
dolt sql <<SQL
create table t1 (a int primary key, b int);
insert into t1 values (1,1), (2,2);
call dolt_commit('-Am', 'added t1');
create table t2 (c int primary key, d int);
insert into t2 values (1,1), (2,2);
call dolt_commit('-Am', 'added t2');
create table t3 (e int primary key, f int);
insert into t3 values (1,1), (2,2);
call dolt_commit('-Am', 'added t3');
alter table t1 add column x int;
call dolt_commit('-Am', 'altered t1, added x column');
insert into t1 values (3,3,3);
call dolt_commit('-Am', 'more data in t1');
SQL
# Ignore errors for the table / column not existing
run dolt filter-branch --continue << SQL
alter table t2 add column z int not null default (c+d);
alter table t1 drop column x;
SQL
[ "$status" -eq 0 ]
run dolt sql -q "SELECT * from t2 order by c" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1,1,2" ]] || false
[[ "$output" =~ "2,2,4" ]] || false
run dolt sql -q "SELECT * from t1 order by a" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "2,2" ]] || false
[[ ! "$output" =~ "3,3,3" ]] || false
}
@test "filter-branch: run a stored procedure" {
dolt sql <<SQL
create table t1 (a int primary key, b int);
insert into t1 values (1,1), (2,2);
call dolt_commit('-Am', 'added t1');
create table t2 (c int primary key, d int);
insert into t2 values (1,1), (2,2);
call dolt_commit('-Am', 'added t2');
SQL
dolt filter-branch --continue << SQL
delimiter $$
create procedure addrows()
begin
insert into t2 values (20, 20);
insert into t2 values (30, 30);
end$$
delimiter ;
call addrows();
drop procedure addrows;
SQL
run dolt sql -q "SELECT * from t2 order by c" -r csv
[ "$status" -eq 0 ]
[[ "$output" =~ "1,1" ]] || false
[[ "$output" =~ "2,2" ]] || false
[[ "$output" =~ "20,20" ]] || false
[[ "$output" =~ "30,30" ]] || false
run dolt sql -q "show create procedure addrows"
[ "$status" -ne 0 ]
[[ "$output" =~ "does not exist" ]] || false
}
@test "filter-branch: fails with working and staged changes in current branch" {
dolt sql -q "insert into test values (3, 3)"
run dolt filter-branch -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/main, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt add .
run dolt filter-branch -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/main, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt commit -m "added row"
run dolt filter-branch -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}
@test "filter-branch: works with working and staged changes in other branch" {
dolt sql << SQL
call dolt_checkout('-b', 'other');
insert into test values (3, 3);
SQL
run dolt filter-branch -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ ! "$output" =~ "3,3," ]] || false
dolt checkout other
run dolt filter-branch -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/other, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
}
@test "filter-branch: --all fails with working and staged changes on other branch" {
dolt sql << SQL
call dolt_checkout('-b', 'other');
insert into test values (3, 3);
SQL
run dolt filter-branch --all -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/other, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt checkout other
dolt add .
run dolt filter-branch --all -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/other, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt commit -m "added row"
run dolt filter-branch --all -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --branches fails with working and staged changes" {
dolt sql << SQL
call dolt_checkout('-b', 'other');
insert into test values (3, 3);
SQL
run dolt filter-branch --branches -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/other, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt checkout other
dolt add .
run dolt filter-branch --branches -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/other, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt commit -m "added row"
run dolt filter-branch --branches -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --continue still fails with working and staged changes" {
dolt sql -q "insert into test values (3, 3)"
run dolt filter-branch --continue -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/main, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt add .
run dolt filter-branch --continue -q "alter table test add column filter int"
[ "$status" -eq 1 ]
[[ "$output" =~ "local changes detected on branch refs/heads/main, clear uncommitted changes (dolt stash dolt commit) before using filter-branch, or use --apply-to-uncommitted" ]] || false
dolt commit -m "added row"
run dolt filter-branch --continue -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --apply-to-uncommitted applies changes to unstaged tables on current branch" {
dolt sql -q "insert into test values (3, 3)"
run dolt sql -r csv -q "select * from dolt_status"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,0,modified" ]] || false
run dolt filter-branch --apply-to-uncommitted -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from dolt_status"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,0,modified" ]] || false
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ ! "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --apply-to-uncommitted applies changes to staged tables on current branch" {
dolt sql -q "insert into test values (3, 3)"
dolt add .
run dolt sql -r csv -q "select * from dolt_status"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,1,modified" ]] || false
run dolt filter-branch --apply-to-uncommitted -q "alter table test add column filter int"
[ "$status" -eq 0 ]
run dolt sql -r csv -q "select * from dolt_status"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,1,modified" ]] || false
run dolt sql -r csv -q "select * from test as of 'HEAD'"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ ! "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --apply-to-uncommitted applies changes to unstaged tables on other branch" {
dolt sql << SQL
call dolt_checkout('-b', 'other');
insert into test values (3, 3);
SQL
# no changes on main branch
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "nothing to commit, working tree clean" ]] || false
# changes on other branch
run dolt sql -r csv -q "call dolt_checkout('other'); select * from dolt_status;"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,0,modified" ]] || false
run dolt filter-branch --apply-to-uncommitted --branches -q "alter table test add column filter int"
[ "$status" -eq 0 ]
# still no changes on main branch
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "nothing to commit, working tree clean" ]] || false
# changes on other branch
run dolt sql -r csv -q "call dolt_checkout('other'); select * from dolt_status;"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,0,modified" ]] || false
run dolt sql -r csv -q "select * from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ ! "$output" =~ "3,3," ]] || false
run dolt sql -r csv -q "call dolt_checkout('other'); select * from test;"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}
@test "filter-branch: --apply-to-uncommitted applies changes to staged tables on other branch" {
dolt sql << SQL
call dolt_checkout('-b', 'other');
insert into test values (3, 3);
call dolt_add('.');
SQL
# no changes on main branch
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "nothing to commit, working tree clean" ]] || false
# changes on other branch
run dolt sql -r csv -q "call dolt_checkout('other'); select * from dolt_status;"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,1,modified" ]] || false
run dolt filter-branch --apply-to-uncommitted --branches -q "alter table test add column filter int"
[ "$status" -eq 0 ]
# still no changes on main branch
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "nothing to commit, working tree clean" ]] || false
# changes on other branch
run dolt sql -r csv -q "call dolt_checkout('other'); select * from dolt_status;"
[ "$status" -eq 0 ]
[[ "$output" =~ "table_name,staged,status" ]] || false
[[ "$output" =~ "test,1,modified" ]] || false
run dolt sql -r csv -q "select * from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ ! "$output" =~ "3,3," ]] || false
run dolt sql -r csv -q "call dolt_checkout('other'); select * from test;"
[ "$status" -eq 0 ]
[[ "$output" =~ "pk,c0,filter" ]] || false
[[ "$output" =~ "0,0," ]] || false
[[ "$output" =~ "1,1," ]] || false
[[ "$output" =~ "2,2," ]] || false
[[ "$output" =~ "3,3," ]] || false
}