#!/usr/bin/env python3
from pathlib import Path
import json,sys
r=Path(__file__).resolve().parents[1]; sql=r/'sql'
req=['schema.sql','seed.sql','blocking_t1.sql','blocking_t2.sql','deadlock_t1.sql','deadlock_t2.sql','ordered_t1.sql','ordered_t2.sql','nowait_holder.sql','nowait_contender.sql','skip_locked_holder.sql','skip_locked_consumer.sql','optimistic_current.sql','optimistic_stale.sql']
checks=[('files',all((sql/x).exists() for x in req)),('deadlock_for_update',all('FOR UPDATE' in (sql/x).read_text() for x in ['deadlock_t1.sql','deadlock_t2.sql'])),('ordered',all('ORDER BY bin_id FOR UPDATE' in (sql/x).read_text() for x in ['ordered_t1.sql','ordered_t2.sql'])),('nowait','FOR UPDATE NOWAIT' in (sql/'nowait_contender.sql').read_text()),('skip','FOR UPDATE SKIP LOCKED' in (sql/'skip_locked_consumer.sql').read_text()),('cas','AND version=7' in (sql/'optimistic_stale.sql').read_text())]
failed=[n for n,v in checks if not v]; print(json.dumps({'passed':len(checks)-len(failed),'total':len(checks),'failed':failed},indent=2)); sys.exit(1 if failed else 0)
