# # # add_dir "tests/db_check_(heights)" # # add_file "tests/db_check_(heights)/__driver__.lua" # content [1ce1977a7efc19e586cabda16b41b54b8eb1dd8f] # # patch "ChangeLog" # from [6e98cfe6c963ef69f03301d1f774674513b0faad] # to [df07d942b0150d394d631072bf49d1dc018aa9c8] # # patch "testsuite.lua" # from [3b1872bd138323a7d1ec7cdab58ecf3fa99f448b] # to [5fe5154c1373f5dc6af1804dbf9ef222209d7e84] # ============================================================ --- tests/db_check_(heights)/__driver__.lua 1ce1977a7efc19e586cabda16b41b54b8eb1dd8f +++ tests/db_check_(heights)/__driver__.lua 1ce1977a7efc19e586cabda16b41b54b8eb1dd8f @@ -0,0 +1,44 @@ +-- -*-lua-*- +mtn_setup() + +-- make two revisions +addfile("testfile", "A") +commit() +revA = base_revision() +writefile("testfile", "B") +commit() +revB = base_revision() + +-- db should be ok +check(mtn("db", "check"), 0, false, false) + +-- swap the two heights (by swapping their revs) +check(mtn("db", "execute", "update heights set revision='temp' where revision='" .. revA .. "';"), 0, false, false) +check(mtn("db", "execute", "update heights set revision='".. revA .. "' where revision='" .. revB .. "';"), 0, false, false) +check(mtn("db", "execute", "update heights set revision='".. revB .. "' where revision='temp';"), 0, false, false) + +-- check +check(mtn("db", "check"), 1, false, true) +check(qgrep('1 incorrect heights', 'stderr')) +check(qgrep(revB, 'stderr')) +check(qgrep('serious problems detected', 'stderr')) + +-- delete one of the heights +check(mtn("db", "execute", "delete from heights where revision='" .. revA .. "';"), 0, false, false) + +-- check again +check(mtn("db", "check"), 1, false, true) +check(qgrep('1 missing heights', 'stderr')) +check(qgrep(revA, 'stderr')) +check(qgrep('serious problems detected', 'stderr')) + +-- duplicate the remaining height +check(mtn("db", "execute", "insert into heights (revision, height) values ('" .. revA .. "', (select height from heights where revision='" .. revB .. "'));"), 0, false, false) + +-- check once more +check(mtn("db", "check"), 1, false, true) +check(qgrep('1 duplicate heights', 'stderr')) +--no check for the rev, because we don't know which one is reported first +check(qgrep('1 incorrect heights', 'stderr')) +check(qgrep(revB, 'stderr')) +check(qgrep('serious problems detected', 'stderr')) ============================================================ --- ChangeLog 6e98cfe6c963ef69f03301d1f774674513b0faad +++ ChangeLog df07d942b0150d394d631072bf49d1dc018aa9c8 @@ -1,3 +1,9 @@ +2006-10-24 Thomas Moschny + + * tests/db_check_(heights)/: Test the heights related checks of + 'db check'. + * testsuite.lua: Add the test to the lists of tests. + 2006-10-20 Thomas Moschny * database_check.cc: Add checks for the heights. It is checked ============================================================ --- testsuite.lua 3b1872bd138323a7d1ec7cdab58ecf3fa99f448b +++ testsuite.lua 5fe5154c1373f5dc6af1804dbf9ef222209d7e84 @@ -683,3 +683,4 @@ table.insert(tests, "multiple_message_co table.insert(tests, "ws_ops_with_wrong_node_type") table.insert(tests, "pivot_root_to_new_dir") table.insert(tests, "multiple_message_commit") +table.insert(tests, "db_check_(heights)")