|
2 | 2 | \i test/setup.sql
|
3 | 3 | -- \i sql/pgtap.sql
|
4 | 4 |
|
5 |
| -SELECT plan(459); |
| 5 | +SELECT plan(488); |
6 | 6 | --SELECT * FROM no_plan();
|
7 | 7 |
|
8 | 8 | -- This will be rolled back. :-)
|
@@ -83,15 +83,27 @@ CREATE TYPE someschema."myType" AS (
|
83 | 83 | foo INT
|
84 | 84 | );
|
85 | 85 |
|
86 |
| --- Create a procedure. |
| 86 | +-- Create some procedures. |
87 | 87 | DO $$
|
88 | 88 | BEGIN
|
89 | 89 | IF pg_version_num() >= 110000 THEN
|
90 | 90 | EXECUTE 'CREATE PROCEDURE someschema.someproc(int) LANGUAGE SQL AS ''''';
|
| 91 | + EXECUTE 'CREATE PROCEDURE someschema.someotherproc(int) LANGUAGE SQL AS '''''; |
| 92 | + EXECUTE 'CREATE PROCEDURE public.yiprok(int) LANGUAGE SQL AS '''''; |
| 93 | + EXECUTE 'CREATE PROCEDURE public.yaprok(int) LANGUAGE SQL AS '''''; |
91 | 94 | ELSE
|
92 | 95 | CREATE FUNCTION someschema.someproc(int)
|
93 | 96 | RETURNS void AS ''
|
94 | 97 | LANGUAGE SQL;
|
| 98 | + CREATE FUNCTION someschema.someotherproc(int) |
| 99 | + RETURNS void AS '' |
| 100 | + LANGUAGE SQL; |
| 101 | + CREATE FUNCTION public.yiprok(int) |
| 102 | + RETURNS void AS '' |
| 103 | + LANGUAGE SQL; |
| 104 | + CREATE FUNCTION public.yaprok(int) |
| 105 | + RETURNS void AS '' |
| 106 | + LANGUAGE SQL; |
95 | 107 | END IF;
|
96 | 108 | END;
|
97 | 109 | $$;
|
@@ -1949,6 +1961,111 @@ $$ LANGUAGE PLPGSQL;
|
1949 | 1961 |
|
1950 | 1962 | SELECT * FROM test_foreign_tables_are();
|
1951 | 1963 |
|
| 1964 | +/****************************************************************************/ |
| 1965 | +-- Test procedures_are(). |
| 1966 | + |
| 1967 | +SELECT * FROM check_test( |
| 1968 | + procedures_are( 'someschema', ARRAY['someotherproc', 'someproc'], 'whatever' ), |
| 1969 | + true, |
| 1970 | + 'procedures_are(schema, procedures, desc)', |
| 1971 | + 'whatever', |
| 1972 | + '' |
| 1973 | +); |
| 1974 | + |
| 1975 | +SELECT * FROM check_test( |
| 1976 | + procedures_are( 'someschema', ARRAY['someotherproc', 'someproc'] ), |
| 1977 | + true, |
| 1978 | + 'procedures_are(schema, procedures)', |
| 1979 | + 'Schema someschema should have the correct procedures' |
| 1980 | + '' |
| 1981 | +); |
| 1982 | + |
| 1983 | +SELECT * FROM check_test( |
| 1984 | + procedures_are( 'someschema', ARRAY['someotherproc', 'someproc', 'yop'], 'whatever' ), |
| 1985 | + false, |
| 1986 | + 'procedures_are(schema, procedures, desc) + missing', |
| 1987 | + 'whatever', |
| 1988 | + ' Missing procedures: |
| 1989 | + yop' |
| 1990 | +); |
| 1991 | + |
| 1992 | +SELECT * FROM check_test( |
| 1993 | + procedures_are( 'someschema', ARRAY['someproc'], 'whatever' ), |
| 1994 | + false, |
| 1995 | + 'procedures_are(schema, procedures, desc) + extra', |
| 1996 | + 'whatever', |
| 1997 | + ' Extra procedures: |
| 1998 | + someotherproc' |
| 1999 | +); |
| 2000 | + |
| 2001 | +SELECT * FROM check_test( |
| 2002 | + procedures_are( 'someschema', ARRAY['yop', 'someproc'], 'whatever' ), |
| 2003 | + false, |
| 2004 | + 'procedures_are(schema, procedures, desc) + extra & missing', |
| 2005 | + 'whatever', |
| 2006 | + ' Extra procedures: |
| 2007 | + someotherproc |
| 2008 | + Missing procedures: |
| 2009 | + yop' |
| 2010 | +); |
| 2011 | + |
| 2012 | +CREATE FUNCTION ___myprok(ex text) RETURNS NAME[] AS $$ |
| 2013 | + SELECT ARRAY( |
| 2014 | + SELECT p.proname |
| 2015 | + FROM pg_catalog.pg_namespace n |
| 2016 | + JOIN pg_catalog.pg_proc p ON n.oid = p.pronamespace |
| 2017 | + WHERE pg_catalog.pg_function_is_visible(p.oid) |
| 2018 | + AND n.nspname NOT IN ('pg_catalog', 'information_schema') |
| 2019 | + AND p.proname <> $1 |
| 2020 | + AND p.prokind = 'p' |
| 2021 | + ); |
| 2022 | +$$ LANGUAGE SQL; |
| 2023 | + |
| 2024 | +SELECT * FROM check_test( |
| 2025 | + procedures_are( ___myprok(''), 'whatever' ), |
| 2026 | + true, |
| 2027 | + 'procedures_are(procedures, desc)', |
| 2028 | + 'whatever', |
| 2029 | + '' |
| 2030 | +); |
| 2031 | + |
| 2032 | +SELECT * FROM check_test( |
| 2033 | + procedures_are( ___myprok('') ), |
| 2034 | + true, |
| 2035 | + 'procedures_are(procedures)', |
| 2036 | + 'Search path ' || pg_catalog.current_setting('search_path') || ' should have the correct procedures', |
| 2037 | + '' |
| 2038 | +); |
| 2039 | + |
| 2040 | +SELECT * FROM check_test( |
| 2041 | + procedures_are( array_append(___myprok(''), '__booyah__'), 'whatever' ), |
| 2042 | + false, |
| 2043 | + 'procedures_are(procedures, desc) + missing', |
| 2044 | + 'whatever', |
| 2045 | + ' Missing procedures: |
| 2046 | + __booyah__' |
| 2047 | +); |
| 2048 | + |
| 2049 | +SELECT * FROM check_test( |
| 2050 | + procedures_are( ___myprok('yiprok'), 'whatever' ), |
| 2051 | + false, |
| 2052 | + 'procedures_are(procedures, desc) + extra', |
| 2053 | + 'whatever', |
| 2054 | + ' Extra procedures: |
| 2055 | + yiprok' |
| 2056 | +); |
| 2057 | + |
| 2058 | +SELECT * FROM check_test( |
| 2059 | + procedures_are( array_append(___myprok('yiprok'), '__booyah__'), 'whatever' ), |
| 2060 | + false, |
| 2061 | + 'procedures_are(procedures, desc) + extra & missing', |
| 2062 | + 'whatever', |
| 2063 | + ' Extra procedures: |
| 2064 | + yiprok |
| 2065 | + Missing procedures: |
| 2066 | + __booyah__' |
| 2067 | +); |
| 2068 | + |
1952 | 2069 | /****************************************************************************/
|
1953 | 2070 |
|
1954 | 2071 | -- Finish the tests and clean up.
|
|
0 commit comments