mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-11 18:49:14 -06:00
187 lines
4.9 KiB
Bash
Executable File
187 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bats
|
|
load $BATS_TEST_DIRNAME/helper/common.bash
|
|
|
|
setup() {
|
|
setup_common
|
|
dolt sql <<SQL
|
|
CREATE TABLE test1 (
|
|
pk BIGINT NOT NULL,
|
|
c1 BIGINT,
|
|
c2 BIGINT,
|
|
c3 BIGINT,
|
|
c4 BIGINT,
|
|
c5 BIGINT,
|
|
PRIMARY KEY (pk)
|
|
);
|
|
SQL
|
|
dolt sql <<SQL
|
|
CREATE TABLE test2 (
|
|
pk BIGINT NOT NULL,
|
|
c1 BIGINT,
|
|
c2 BIGINT,
|
|
c3 BIGINT,
|
|
c4 BIGINT,
|
|
c5 BIGINT,
|
|
PRIMARY KEY (pk)
|
|
);
|
|
SQL
|
|
}
|
|
|
|
teardown() {
|
|
teardown_common
|
|
}
|
|
|
|
@test "examine a multi table repo" {
|
|
run dolt ls
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "test1" ]] || false
|
|
[[ "$output" =~ "test2" ]] || false
|
|
[ "${#lines[@]}" -eq 3 ]
|
|
run dolt schema show
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "test1 @ working" ]] || false
|
|
[[ "$output" =~ "test2 @ working" ]] || false
|
|
run dolt status
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "test1" ]] || false
|
|
[[ "$output" =~ "test2" ]] || false
|
|
}
|
|
|
|
@test "modify both tables, commit only one" {
|
|
dolt sql -q "insert into test1 values (0, 1, 2, 3, 4, 5)"
|
|
dolt sql -q "insert into test2 values (0, 1, 2, 3, 4, 5)"
|
|
dolt add test1
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ "$output" =~ "Untracked files" ]] || false
|
|
run dolt commit -m "added one table"
|
|
run dolt status
|
|
[[ ! "$output" =~ "Changes to be committed" ]] || false
|
|
[[ "$output" =~ "Untracked files" ]] || false
|
|
run dolt diff
|
|
[[ "$output" =~ "test2" ]] || false
|
|
run dolt checkout test2
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ "$output" =~ "nothing to commit" ]] || false
|
|
run dolt ls
|
|
[[ "$output" =~ "test1" ]] || false
|
|
[[ ! "$output" =~ "test2" ]] || false
|
|
[ "${#lines[@]}" -eq 2 ]
|
|
}
|
|
|
|
@test "dolt add --all, dolt add -A, and dolt add . adds all changes" {
|
|
dolt sql -q "insert into test1 values (0, 1, 2, 3, 4, 5)"
|
|
dolt sql -q "insert into test2 values (0, 1, 2, 3, 4, 5)"
|
|
dolt add --all
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ ! "$output" =~ "Untracked files" ]] || false
|
|
run dolt reset test1 test2
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ ! "$output" =~ "Changes to be committed" ]] || false
|
|
[[ "$output" =~ "Untracked files" ]] || false
|
|
run dolt add -A
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ ! "$output" =~ "Untracked files" ]] || false
|
|
dolt reset test1 test2
|
|
run dolt add .
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ ! "$output" =~ "Untracked files" ]] || false
|
|
}
|
|
|
|
@test "dolt reset . resets all tables" {
|
|
dolt add --all
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ ! "$output" =~ "Untracked files" ]] || false
|
|
run dolt reset .
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ ! "$output" =~ "Changes to be committed" ]] || false
|
|
[[ "$output" =~ "Untracked files" ]] || false
|
|
}
|
|
|
|
@test "dolt reset --hard" {
|
|
dolt add --all
|
|
run dolt status
|
|
[[ "$output" =~ "Changes to be committed" ]] || false
|
|
[[ ! "$output" =~ "Untracked files" ]] || false
|
|
run dolt reset .
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "" ]
|
|
run dolt status
|
|
[[ ! "$output" =~ "Changes to be committed" ]] || false
|
|
[[ "$output" =~ "Untracked files" ]] || false
|
|
|
|
dolt add --all
|
|
dolt commit -m "commit file1 and file2"
|
|
|
|
dolt sql -q "insert into test1 values (0, 1, 2, 3, 4, 5)"
|
|
dolt sql -q "insert into test2 values (0, 1, 2, 3, 4, 5)"
|
|
|
|
dolt sql <<SQL
|
|
CREATE TABLE test3 (
|
|
pk BIGINT NOT NULL,
|
|
c1 BIGINT,
|
|
c2 BIGINT,
|
|
c3 BIGINT,
|
|
c4 BIGINT,
|
|
c5 BIGINT,
|
|
PRIMARY KEY (pk)
|
|
);
|
|
SQL
|
|
dolt sql <<SQL
|
|
CREATE TABLE test4 (
|
|
pk BIGINT NOT NULL,
|
|
c1 BIGINT,
|
|
c2 BIGINT,
|
|
c3 BIGINT,
|
|
c4 BIGINT,
|
|
c5 BIGINT,
|
|
PRIMARY KEY (pk)
|
|
);
|
|
SQL
|
|
|
|
run dolt status
|
|
[[ "$output" =~ modified.*test1 ]] || false
|
|
[[ "$output" =~ modified.*test2 ]] || false
|
|
[[ "$output" =~ file.*test3 ]] || false
|
|
[[ "$output" =~ file.*test4 ]] || false
|
|
|
|
dolt add test1 test2 test3
|
|
dolt reset --hard
|
|
|
|
run dolt status
|
|
[[ ! "$output" =~ "test1" ]] || false
|
|
[[ ! "$output" =~ "test2" ]] || false
|
|
[[ ! "$output" =~ file.*test3 ]] || false
|
|
[[ "$output" =~ file.*test4 ]] || false
|
|
}
|
|
|
|
@test "dolt reset --hard on new tables" {
|
|
# Per Git, dolt reset --hard on an untracked table should do nothing
|
|
dolt reset --hard
|
|
run dolt status
|
|
[[ "$output" =~ table.*test1 ]] || false
|
|
[[ "$output" =~ table.*test2 ]] || false
|
|
|
|
# Per Git, if you add the table and do git reset --hard, the tables
|
|
# should be deleted
|
|
dolt add test1 test2
|
|
dolt reset --hard
|
|
run dolt status
|
|
[[ ! "$output" =~ table.*test1 ]] || false
|
|
[[ ! "$output" =~ table.*test2 ]] || false
|
|
[[ "$output" =~ "nothing to commit" ]] || false
|
|
}
|