BEGIN; CREATE SCHEMA test; CREATE EXTENSION pgtap; CREATE EXTENSION pg_doctest SCHEMA test; CREATE SCHEMA foo; -- These tests are correct CREATE OR REPLACE FUNCTION foo.plus ( a INT, b INT) RETURNS INT AS $func$ -- >>> select foo.plus(1,1) -- 2 -- -- >>> SELECT foo.plus(NULL,9) -- NULL -- >>> SELECt foo.plus(0,000) -- 0 SELECT a+b; $func$ LANGUAGE SQL ; -- These tests will fail CREATE OR REPLACE FUNCTION foo.minus ( a INT, b INT) RETURNS INT AS $func$ -- >>> SELECT foo.minus(1,1) -- 0 -- >>> SELECT foo.minus(NULL,9) -- NULL -- This bug is here on purpose, DO NOT FIX :) SELECT a+b; $func$ LANGUAGE SQL ; -- Test a multiline statement -- Test function in multiple schemas CREATE SCHEMA z; CREATE FUNCTION z.is_bob(n TEXT) RETURNS BOOLEAN LANGUAGE SQL AS $$ -- >>> WITH person AS ( -- >>> SELECT 'alice' AS firstname -- >>> ) -- >>> SELECT z.is_bob(p.firstname) -- >>> FROM person p; -- false SELECT n = 'bob' $$; SELECT runtests('test'::NAME); runtests ------------------------------------------------------------------------------------------------------- # Subtest: test.test() # doctests for foo.plus(integer,integer) ok 1 - select foo.plus(1,1) ok 2 - SELECT foo.plus(NULL,9) ok 3 - SELECt foo.plus(0,000) # doctests for foo.minus(integer,integer) not ok 4 - SELECT foo.minus(1,1) + # Failed test 4: "SELECT foo.minus(1,1)" + # have: 2 + # want: 0 ok 5 - SELECT foo.minus(NULL,9) # doctests for z.is_bob(text) ok 6 - WITH person AS ( SELECT 'alice' AS firstname ) SELECT z.is_bob(p.firstname) FROM person p; 1..6 # Looks like you failed 1 tests of 6 not ok 1 - test.test + # Failed test 1: "test.test" 1..1 # Looks like you failed 1 test of 1 (15 rows) ROLLBACK;