#!/usr/bin/env bats load $BATS_TEST_DIRNAME/helper/common.bash setup() { setup_common dolt sql < | 4 | 100 | NULL | NULL | | + | 7 | 8 | NULL | 9 | +---+----+-----+------+------+ EOF ) [ "$status" -eq 0 ] [[ "$output" =~ "$EXPECTED" ]] || false run dolt diff --data --schema [ "$status" -eq 0 ] [[ "$output" =~ "$EXPECTED" ]] || false run dolt diff --schema EXPECTED=$(cat <<'EOF' CREATE TABLE `test` ( `pk` int NOT NULL, `c1` int, - `c2` int, + `c3` varchar(10), PRIMARY KEY (`pk`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin; EOF ) [[ "$output" =~ "$EXPECTED" ]] || false # Count the line numbers to make sure there are no data changes output [ "${#lines[@]}" -eq 10 ] run dolt diff --data EXPECTED=$(cat <<'EOF' +---+----+-----+------+------+ | | pk | c1 | c2 | c3 | +---+----+-----+------+------+ | - | 1 | 2 | 3 | NULL | | < | 4 | 5 | 6 | NULL | | > | 4 | 100 | NULL | NULL | | + | 7 | 8 | NULL | 9 | +---+----+-----+------+------+ EOF ) [[ "$output" =~ "$EXPECTED" ]] || false # Count the line numbers to make sure there are no schema changes output [ "${#lines[@]}" -eq 11 ] } @test "diff: data diff only" { dolt commit -am "First commit" dolt sql -q "insert into test (pk) values (10);" dolt diff run dolt diff [ "$status" -eq 0 ] [[ ! "$output" =~ "CREATE TABLE" ]] || false [[ "$output" =~ "| | pk | c1 | c2 | c3 | c4 | c5 |" ]] || false [[ "$output" =~ "| + | 10 | NULL | NULL | NULL | NULL | NULL |" ]] || false } @test "diff: schema changes only" { dolt commit -am "First commit" dolt sql < employees.csv "id","first name","last name","title","start date","end date" 0,tim,sehn,ceo,"","" 1,aaron,son,founder,"","" 2,brian,hendricks,founder,"","" DELIM dolt table import -c -pk=id employees employees.csv dolt add employees dolt commit -m "Added employees table with data" dolt sql -q "alter table employees add city longtext" dolt sql -q "insert into employees values (3, 'taylor', 'bantle', 'software engineer', '', '', 'Santa Monica')" dolt diff --summary run dolt diff --summary [ "$status" -eq 0 ] [[ "$output" =~ "3 Rows Unmodified (100.00%)" ]] || false [[ "$output" =~ "1 Row Added (33.33%)" ]] || false [[ "$output" =~ "0 Rows Deleted (0.00%)" ]] || false [[ "$output" =~ "0 Rows Modified (0.00%)" ]] || false [[ "$output" =~ "0 Cells Modified (0.00%)" ]] || false [[ "$output" =~ "(3 Entries vs 4 Entries)" ]] || false dolt sql -q "replace into employees values (0, 'tim', 'sehn', 'ceo', '2 years ago', '', 'Santa Monica')" dolt diff --summary run dolt diff --summary [ "$status" -eq 0 ] [[ "$output" =~ "2 Rows Unmodified (66.67%)" ]] || false [[ "$output" =~ "1 Row Added (33.33%)" ]] || false [[ "$output" =~ "0 Rows Deleted (0.00%)" ]] || false [[ "$output" =~ "1 Row Modified (33.33%)" ]] || false [[ "$output" =~ "2 Cells Modified (11.11%)" ]] || false [[ "$output" =~ "(3 Entries vs 4 Entries)" ]] || false } @test "diff: summary gets summaries for all tables with changes" { dolt sql -q "insert into test values (0, 0, 0, 0, 0, 0)" dolt sql -q "insert into test values (1, 1, 1, 1, 1, 1)" dolt sql <