@oliphaunt/extension-pgtap-linux-arm64-gnu 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/THIRD_PARTY_NOTICES.md +20 -0
  4. package/extension-contract.json +31 -0
  5. package/package.json +49 -0
  6. package/runtime/share/licenses/pgtap/README.md +153 -0
  7. package/runtime/share/postgresql/extension/pgtap--0.90.0--0.91.0.sql +29 -0
  8. package/runtime/share/postgresql/extension/pgtap--0.91.0--0.92.0.sql +1650 -0
  9. package/runtime/share/postgresql/extension/pgtap--0.92.0--0.93.0.sql +679 -0
  10. package/runtime/share/postgresql/extension/pgtap--0.93.0--0.94.0.sql +193 -0
  11. package/runtime/share/postgresql/extension/pgtap--0.94.0--0.95.0.sql +639 -0
  12. package/runtime/share/postgresql/extension/pgtap--0.95.0--0.96.0.sql +415 -0
  13. package/runtime/share/postgresql/extension/pgtap--0.96.0--0.97.0.sql +375 -0
  14. package/runtime/share/postgresql/extension/pgtap--0.97.0--0.98.0.sql +441 -0
  15. package/runtime/share/postgresql/extension/pgtap--0.98.0--0.99.0.sql +209 -0
  16. package/runtime/share/postgresql/extension/pgtap--0.99.0--1.0.0.sql +737 -0
  17. package/runtime/share/postgresql/extension/pgtap--1.0.0--1.1.0.sql +186 -0
  18. package/runtime/share/postgresql/extension/pgtap--1.1.0--1.2.0.sql +889 -0
  19. package/runtime/share/postgresql/extension/pgtap--1.2.0--1.3.0.sql +495 -0
  20. package/runtime/share/postgresql/extension/pgtap--1.3.0--1.3.1.sql +229 -0
  21. package/runtime/share/postgresql/extension/pgtap--1.3.1--1.3.2.sql +34 -0
  22. package/runtime/share/postgresql/extension/pgtap--1.3.2--1.3.3.sql +42 -0
  23. package/runtime/share/postgresql/extension/pgtap--1.3.3--1.3.4.sql +89 -0
  24. package/runtime/share/postgresql/extension/pgtap--1.3.4--1.3.5.sql +1 -0
  25. package/runtime/share/postgresql/extension/pgtap--1.3.5.sql +11520 -0
  26. package/runtime/share/postgresql/extension/pgtap--unpackaged--0.91.0.sql +714 -0
  27. package/runtime/share/postgresql/extension/pgtap-core--1.3.5.sql +4390 -0
  28. package/runtime/share/postgresql/extension/pgtap-core.sql +4390 -0
  29. package/runtime/share/postgresql/extension/pgtap-schema--1.3.5.sql +6764 -0
  30. package/runtime/share/postgresql/extension/pgtap-schema.sql +6764 -0
  31. package/runtime/share/postgresql/extension/pgtap.control +6 -0
  32. package/runtime/share/postgresql/extension/pgtap.sql +11520 -0
  33. package/runtime/share/postgresql/extension/uninstall_pgtap.sql +1088 -0
  34. package/share/licenses/pgtap/README.md +153 -0
@@ -0,0 +1,193 @@
1
+ CREATE OR REPLACE FUNCTION pgtap_version()
2
+ RETURNS NUMERIC AS 'SELECT 0.94;'
3
+ LANGUAGE SQL IMMUTABLE;
4
+
5
+ CREATE OR REPLACE FUNCTION _get_func_privs(TEXT, TEXT)
6
+ RETURNS TEXT[] AS $$
7
+ BEGIN
8
+ IF pg_catalog.has_function_privilege($1, $2, 'EXECUTE') THEN
9
+ RETURN '{EXECUTE}';
10
+ ELSE
11
+ RETURN '{}';
12
+ END IF;
13
+ EXCEPTION
14
+ -- Not a valid func name.
15
+ WHEN undefined_function THEN RETURN '{undefined_function}';
16
+ -- Not a valid role.
17
+ WHEN undefined_object THEN RETURN '{undefined_role}';
18
+ END;
19
+ $$ LANGUAGE plpgsql;
20
+
21
+ CREATE OR REPLACE FUNCTION _fprivs_are ( TEXT, NAME, NAME[], TEXT )
22
+ RETURNS TEXT AS $$
23
+ DECLARE
24
+ grants TEXT[] := _get_func_privs($2, $1);
25
+ BEGIN
26
+ IF grants[1] = 'undefined_function' THEN
27
+ RETURN ok(FALSE, $4) || E'\n' || diag(
28
+ ' Function ' || $1 || ' does not exist'
29
+ );
30
+ ELSIF grants[1] = 'undefined_role' THEN
31
+ RETURN ok(FALSE, $4) || E'\n' || diag(
32
+ ' Role ' || quote_ident($2) || ' does not exist'
33
+ );
34
+ END IF;
35
+ RETURN _assets_are('privileges', grants, $3, $4);
36
+ END;
37
+ $$ LANGUAGE plpgsql;
38
+
39
+ -- has_table( schema, table )
40
+ CREATE OR REPLACE FUNCTION has_table ( NAME, NAME )
41
+ RETURNS TEXT AS $$
42
+ SELECT ok(
43
+ _rexists( 'r', $1, $2 ),
44
+ 'Table ' || quote_ident($1) || '.' || quote_ident($2) || ' should exist'
45
+ );
46
+ $$ LANGUAGE SQL;
47
+
48
+ -- hasnt_table( schema, table )
49
+ CREATE OR REPLACE FUNCTION hasnt_table ( NAME, NAME )
50
+ RETURNS TEXT AS $$
51
+ SELECT ok(
52
+ NOT _rexists( 'r', $1, $2 ),
53
+ 'Table ' || quote_ident($1) || '.' || quote_ident($2) || ' should not exist'
54
+ );
55
+ $$ LANGUAGE SQL;
56
+
57
+ -- has_foreign_table( schema, table )
58
+ CREATE OR REPLACE FUNCTION has_foreign_table ( NAME, NAME )
59
+ RETURNS TEXT AS $$
60
+ SELECT ok(
61
+ _rexists( 'f', $1, $2 ),
62
+ 'Foreign table ' || quote_ident($1) || '.' || quote_ident($2) || ' should exist'
63
+ );
64
+ $$ LANGUAGE SQL;
65
+
66
+ -- hasnt_foreign_table( schema, table )
67
+ CREATE OR REPLACE FUNCTION hasnt_foreign_table ( NAME, NAME )
68
+ RETURNS TEXT AS $$
69
+ SELECT ok(
70
+ NOT _rexists( 'f', $1, $2 ),
71
+ 'Foreign table ' || quote_ident($1) || '.' || quote_ident($2) || ' not should exist'
72
+ );
73
+ $$ LANGUAGE SQL;
74
+
75
+ CREATE OR REPLACE FUNCTION skip ( why text, how_many int )
76
+ RETURNS TEXT AS $$
77
+ DECLARE
78
+ output TEXT[];
79
+ BEGIN
80
+ output := '{}';
81
+ FOR i IN 1..how_many LOOP
82
+ output = array_append(
83
+ output,
84
+ ok( TRUE ) || ' ' || diag( 'SKIP' || COALESCE( ' ' || why, '') )
85
+ );
86
+ END LOOP;
87
+ RETURN array_to_string(output, E'\n');
88
+ END;
89
+ $$ LANGUAGE plpgsql;
90
+
91
+ CREATE OR REPLACE FUNCTION skip ( text )
92
+ RETURNS TEXT AS $$
93
+ SELECT ok( TRUE ) || ' ' || diag( 'SKIP' || COALESCE(' ' || $1, '') );
94
+ $$ LANGUAGE sql;
95
+
96
+ -- check_test( test_output, pass, name, description, diag, match_diag )
97
+ CREATE OR REPLACE FUNCTION check_test( TEXT, BOOLEAN, TEXT, TEXT, TEXT, BOOLEAN )
98
+ RETURNS SETOF TEXT AS $$
99
+ DECLARE
100
+ tnumb INTEGER;
101
+ aok BOOLEAN;
102
+ adescr TEXT;
103
+ res BOOLEAN;
104
+ descr TEXT;
105
+ adiag TEXT;
106
+ have ALIAS FOR $1;
107
+ eok ALIAS FOR $2;
108
+ name ALIAS FOR $3;
109
+ edescr ALIAS FOR $4;
110
+ ediag ALIAS FOR $5;
111
+ matchit ALIAS FOR $6;
112
+ BEGIN
113
+ -- What test was it that just ran?
114
+ tnumb := currval('__tresults___numb_seq');
115
+
116
+ -- Fetch the results.
117
+ EXECUTE 'SELECT aok, descr FROM __tresults__ WHERE numb = ' || tnumb
118
+ INTO aok, adescr;
119
+
120
+ -- Now delete those results.
121
+ EXECUTE 'DELETE FROM __tresults__ WHERE numb = ' || tnumb;
122
+ EXECUTE 'ALTER SEQUENCE __tresults___numb_seq RESTART WITH ' || tnumb;
123
+
124
+ -- Set up the description.
125
+ descr := coalesce( name || ' ', 'Test ' ) || 'should ';
126
+
127
+ -- So, did the test pass?
128
+ RETURN NEXT is(
129
+ aok,
130
+ eok,
131
+ descr || CASE eok WHEN true then 'pass' ELSE 'fail' END
132
+ );
133
+
134
+ -- Was the description as expected?
135
+ IF edescr IS NOT NULL THEN
136
+ RETURN NEXT is(
137
+ adescr,
138
+ edescr,
139
+ descr || 'have the proper description'
140
+ );
141
+ END IF;
142
+
143
+ -- Were the diagnostics as expected?
144
+ IF ediag IS NOT NULL THEN
145
+ -- Remove ok and the test number.
146
+ adiag := substring(
147
+ have
148
+ FROM CASE WHEN aok THEN 4 ELSE 9 END + char_length(tnumb::text)
149
+ );
150
+
151
+ -- Remove the description, if there is one.
152
+ IF adescr <> '' THEN
153
+ adiag := substring(
154
+ adiag FROM 1 + char_length( ' - ' || substr(diag( adescr ), 3) )
155
+ );
156
+ END IF;
157
+
158
+ IF NOT aok THEN
159
+ -- Remove failure message from ok().
160
+ adiag := substring(adiag FROM 1 + char_length(diag(
161
+ 'Failed test ' || tnumb ||
162
+ CASE adescr WHEN '' THEN '' ELSE COALESCE(': "' || adescr || '"', '') END
163
+ )));
164
+ END IF;
165
+
166
+ IF ediag <> '' THEN
167
+ -- Remove the space before the diagnostics.
168
+ adiag := substring(adiag FROM 2);
169
+ END IF;
170
+
171
+ -- Remove the #s.
172
+ adiag := replace( substring(adiag from 3), E'\n# ', E'\n' );
173
+
174
+ -- Now compare the diagnostics.
175
+ IF matchit THEN
176
+ RETURN NEXT matches(
177
+ adiag,
178
+ ediag,
179
+ descr || 'have the proper diagnostics'
180
+ );
181
+ ELSE
182
+ RETURN NEXT is(
183
+ adiag,
184
+ ediag,
185
+ descr || 'have the proper diagnostics'
186
+ );
187
+ END IF;
188
+ END IF;
189
+
190
+ -- And we're done
191
+ RETURN;
192
+ END;
193
+ $$ LANGUAGE plpgsql;