Added test of working set behavior for checkout

This commit is contained in:
Zach Musgrave
2021-10-11 13:55:16 -07:00
parent f68dfb5b58
commit 883744a8ba
+104
View File
@@ -0,0 +1,104 @@
#!/usr/bin/env bats
load $BATS_TEST_DIRNAME/helper/common.bash
setup() {
setup_common
}
teardown() {
teardown_common
}
# Create a single primary key table and do stuff
@test "checkout: dolt checkout takes working set changes with you" {
dolt sql <<SQL
create table test(a int primary key);
insert into test values (1);
SQL
dolt commit -am "Initial table with one row"
dolt branch feature
dolt sql -q "insert into test values (2)"
dolt checkout feature
run dolt sql -q "select count(*) from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "2" ]] || false
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "modified" ]] || false
dolt checkout main
run dolt sql -q "select count(*) from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "2" ]] || false
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "modified" ]] || false
# Making additional changes to main, should carry them to feature without any problem
dolt sql -q "insert into test values (3)"
dolt checkout feature
run dolt sql -q "select count(*) from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "3" ]] || false
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "modified" ]] || false
}
@test "checkout: dolt checkout doesn't stomp working set changes on other branch" {
dolt sql <<SQL
create table test(a int primary key);
insert into test values (1);
SQL
dolt commit -am "Initial table with one row"
dolt branch feature
dolt sql --disable-batch <<SQL
select dolt_checkout('feature');
insert into test values (2), (3), (4);
commit;
SQL
skip "checkout stomps working set changes made on the feature branch via SQL. Needs to be prevented."
skip "See https://github.com/dolthub/dolt/issues/2246"
# With no uncommitted working set changes, this works fine (no
# working set comes with us, we get the working set of the feature
# branch instead)
run dolt checkout feature
[ "$status" -eq 0 ]
run dolt sql -q "select count(*) from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "4" ]] || false
dolt checkout main
run dolt sql -q "select count(*) from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "4" ]] || false
# Reset our test setup
dolt sql --disable-batch <<SQL
select dolt_checkout('feature');
select dolt_reset('--hard');
insert into test values (2), (3), (4);
commit;
SQL
# With a dirty working set, dolt checkout should fail
dolt sql -q "insert into test values (5)"
run dolt checkout feature
[ "$status" -eq 1 ]
[[ "$output" =~ "some error" ]] || false
}