Dirty SQL test system
* Added a system that allows "dirty" tests to be written. These tests actually need to change the database, so a temporary test database must be created to run them.
This commit is contained in:
parent
04e550709a
commit
c18bdc2d1f
5 changed files with 114 additions and 17 deletions
legacyworlds-server-data/db-structure/tests/dirty/000-dirty-tests-self-check
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Dirty test system self-check
|
||||
*
|
||||
* Insert an address, it should exist during the main test. Also create a
|
||||
* function and a table which are used to synchronise execution.
|
||||
*/
|
||||
BEGIN;
|
||||
INSERT INTO users.addresses ( address )
|
||||
VALUES ( 'prepare@example.org' );
|
||||
|
||||
CREATE TABLE _barriers( _barrier BIGINT );
|
||||
|
||||
CREATE FUNCTION _synchronise_tests( _lock BIGINT )
|
||||
RETURNS VOID
|
||||
AS $$
|
||||
BEGIN
|
||||
WHILE pg_try_advisory_lock( _lock )
|
||||
LOOP
|
||||
PERFORM pg_advisory_unlock( _lock );
|
||||
END LOOP;
|
||||
END;
|
||||
$$ LANGUAGE PLPGSQL;
|
||||
COMMIT;
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Dirty test system self-check
|
||||
*
|
||||
* Insert an address, it should exist during the main test.
|
||||
*/
|
||||
BEGIN;
|
||||
SELECT no_plan( );
|
||||
|
||||
SELECT pg_advisory_lock( 1 );
|
||||
|
||||
SELECT diag_test_name( 'Dirty test system self-check - prepare.sql was executed' );
|
||||
SELECT is( COUNT(*)::INT , 1 )
|
||||
FROM users.addresses
|
||||
WHERE address = 'prepare@example.org';
|
||||
|
||||
SELECT * FROM finish( );
|
||||
ROLLBACK;
|
Reference in a new issue