aboutsummaryrefslogtreecommitdiffstats
path: root/tests/db-migration-0-1-foreign-key-violation/t
blob: 35e5be54a42a9c045a931ed5ba447db24e8436a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
interimap_init
grep -Fx "database: Created mailbox INBOX" <"$STDERR" || error "INBOX missing from DB"

# empty table `mailboxes` and revert its schema to version 0
sqlite3 "$XDG_DATA_HOME/interimap/remote.db" <<-EOF
	PRAGMA foreign_keys = OFF;
	PRAGMA user_version = 0;
	DROP TABLE mailboxes;
	CREATE TABLE mailboxes (
	    idx        INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
	    mailbox    TEXT    NOT NULL CHECK (mailbox != '') UNIQUE,
	    subscribed BOOLEAN NOT NULL
	);
EOF

# now migration must fail due to broken referential integrity
! interimap || error
grep -Fx "Upgrading database version from 0" <"$STDERR" || error "DB upgrade not attempted"
grep -Fx "database: ERROR: Broken referential integrity! Refusing to commit changes." <"$STDERR" || error "DB upgrade successful despite broken refint"

# vim: set filetype=sh :