ecpg-notice-regress-patch-tap-ver.patch
application/octet-stream
Filename: ecpg-notice-regress-patch-tap-ver.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/interfaces/ecpg/preproc/Makefile | 3 | 0 |
| src/interfaces/ecpg/preproc/meson.build | 13 | 0 |
| src/interfaces/ecpg/preproc/t/001_ecpg_notice.pl | 37 | 0 |
| src/interfaces/ecpg/preproc/t/002_ecpg_notice_informix.pl | 24 | 0 |
| src/interfaces/ecpg/preproc/t/notice_informix.pgc | 18 | 0 |
| src/interfaces/ecpg/preproc/t/notice.pgc | 42 | 0 |
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 84199a9a5d..d0e3852a87 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -81,6 +81,9 @@ ecpg_keywords.o: ecpg_kwlist_d.h
c_keywords.o: c_kwlist_d.h
keywords.o: $(top_srcdir)/src/include/parser/kwlist.h
+check:
+ $(prove_check)
+
install: all installdirs
$(INSTALL_PROGRAM) ecpg$(X) '$(DESTDIR)$(bindir)'
diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build
index bfd0ed2efb..223d4e800c 100644
--- a/src/interfaces/ecpg/preproc/meson.build
+++ b/src/interfaces/ecpg/preproc/meson.build
@@ -86,3 +86,16 @@ ecpg_exe = executable('ecpg',
ecpg_targets += ecpg_exe
subdir('po', if_found: libintl)
+
+tests += {
+ 'name': 'ecpg',
+ 'sd': meson.current_source_dir(),
+ 'bd': meson.current_build_dir(),
+ 'tap': {
+ 'tests': [
+ 't/001_ecpg_notice.pl',
+ 't/002_ecpg_notice_informix.pl',
+ ],
+ 'deps': ecpg_exe,
+ },
+}
\ No newline at end of file
diff --git a/src/interfaces/ecpg/preproc/t/001_ecpg_notice.pl b/src/interfaces/ecpg/preproc/t/001_ecpg_notice.pl
new file mode 100644
index 0000000000..320bd38264
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/t/001_ecpg_notice.pl
@@ -0,0 +1,37 @@
+
+# Copyright (c) 2021-2025, PostgreSQL Global Development Group
+
+use strict;
+use warnings FATAL => 'all';
+use PostgreSQL::Test::Utils;
+use Test::More;
+
+program_help_ok('ecpg');
+program_version_ok('ecpg');
+program_options_handling_ok('ecpg');
+command_fails(['ecpg'], 'ecpg without arguments fails');
+
+command_checks_all(
+ [ 'ecpg', 't/notice.pgc' ],
+ 3,
+ [qr//],
+ [
+ qr/ERROR: AT option not allowed in CONNECT statement/,
+ qr/ERROR: AT option not allowed in DISCONNECT statement/,
+ qr/ERROR: AT option not allowed in SET CONNECTION statement/,
+ qr/ERROR: AT option not allowed in TYPE statement/,
+ qr/ERROR: AT option not allowed in WHENEVER statement/,
+ qr/ERROR: AT option not allowed in VAR statement/,
+ qr/WARNING: COPY FROM STDIN is not implemented/,
+ qr/ERROR: using variable "cursor_var" in different declare statements is not supported/,
+ qr/ERROR: cursor "duplicate_cursor" is already defined/,
+ qr/ERROR: SHOW ALL is not implemented/,
+ qr/WARNING: no longer supported LIMIT/,
+ qr/WARNING: cursor "duplicate_cursor" has been declared but not opened/,
+ qr/WARNING: cursor "duplicate_cursor" has been declared but not opened/,
+ qr/WARNING: cursor ":cursor_var" has been declared but not opened/,
+ qr/WARNING: cursor ":cursor_var" has been declared but not opened/
+ ],
+ 'ecpg with erros and warnings');
+
+done_testing();
diff --git a/src/interfaces/ecpg/preproc/t/002_ecpg_notice_informix.pl b/src/interfaces/ecpg/preproc/t/002_ecpg_notice_informix.pl
new file mode 100644
index 0000000000..1607a66164
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/t/002_ecpg_notice_informix.pl
@@ -0,0 +1,24 @@
+
+# Copyright (c) 2021-2025, PostgreSQL Global Development Group
+
+use strict;
+use warnings FATAL => 'all';
+use PostgreSQL::Test::Utils;
+use Test::More;
+
+program_help_ok('ecpg');
+program_version_ok('ecpg');
+program_options_handling_ok('ecpg');
+command_fails(['ecpg'], 'ecpg without arguments fails');
+
+command_checks_all(
+ [ 'ecpg', '-C', 'INFORMIX', 't/notice_informix.pgc' ],
+ 3,
+ [qr//],
+ [
+ qr/ERROR: AT option not allowed in CLOSE DATABASE statement/,
+ qr/ERROR: "database" cannot be used as cursor name in INFORMIX mode/
+ ],
+ 'ecpg with errors');
+
+done_testing();
diff --git a/src/interfaces/ecpg/preproc/t/notice.pgc b/src/interfaces/ecpg/preproc/t/notice.pgc
new file mode 100644
index 0000000000..7e54627fcb
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/t/notice.pgc
@@ -0,0 +1,42 @@
+/* Test ECPG notice/warning/error messages */
+
+#include <stdlib.h>
+
+int
+main(void)
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ char *cursor_var = "mycursor";
+ short a;
+ EXEC SQL END DECLARE SECTION;
+
+ /* For consistency with other tests */
+ EXEC SQL CONNECT TO testdb AS con1;
+
+ /* Test AT option errors */
+ EXEC SQL AT con1 CONNECT TO testdb2;
+ EXEC SQL AT con1 DISCONNECT;
+ EXEC SQL AT con1 SET CONNECTION TO testdb2;
+ EXEC SQL AT con1 TYPE string IS char[11];
+ EXEC SQL AT con1 WHENEVER NOT FOUND CONTINUE;
+ EXEC SQL AT con1 VAR a IS int;
+
+ /* Test COPY FROM STDIN warning */
+ EXEC SQL COPY test FROM stdin;
+
+ /* Test same variable in multi declare statement */
+ EXEC SQL DECLARE :cursor_var CURSOR FOR SELECT * FROM test;
+ EXEC SQL DECLARE :cursor_var CURSOR FOR SELECT * FROM test;
+
+ /* Test duplicate cursor declarations */
+ EXEC SQL DECLARE duplicate_cursor CURSOR FOR SELECT * FROM test;
+ EXEC SQL DECLARE duplicate_cursor CURSOR FOR SELECT * FROM test;
+
+ /* Test SHOW ALL error */
+ EXEC SQL SHOW ALL;
+
+ /* Test deprecated LIMIT syntax warning */
+ EXEC SQL SELECT * FROM test LIMIT 10, 5;
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/preproc/t/notice_informix.pgc b/src/interfaces/ecpg/preproc/t/notice_informix.pgc
new file mode 100644
index 0000000000..18281f3b9e
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/t/notice_informix.pgc
@@ -0,0 +1,18 @@
+/* Test ECPG notice/warning/error messages */
+
+#include <stdlib.h>
+
+int
+main(void)
+{
+ /* For consistency with other tests */
+ $CONNECT TO testdb AS con1;
+
+ /* Test AT option usage at CLOSE statement in INFORMIX mode */
+ $AT con1 CLOSE database;
+
+ /* Test cursor name errors in INFORMIX mode */
+ $DECLARE database CURSOR FOR SELECT * FROM test;
+
+ return 0;
+}