mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-24 02:43:42 -05:00
Added test of working set behavior for checkout
This commit is contained in:
Executable
+104
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user