Thread: pg_regress: referencing shared objects from tests

pg_regress: referencing shared objects from tests

From
Jorgen Austvik - Sun Norway
Date:
Hi,

we would like to be able to use and ship pg_regress and the PostgreSQL
test suite independently of the PostgreSQL build environment, for
testing and maybe even as a separate package to be build and shipped
with the OS for others to test their setup. Does this sound like a sane
and OK thing to do?

I have a problem with one of the tests (create_function_1.source):

---------8<----------------8<----------------8<----------------8<-------
      20 CREATE FUNCTION int44out(city_budget)
      21    RETURNS cstring
      22    AS '@abs_builddir@/regress@DLSUFFIX@'
      23    LANGUAGE C STRICT;
      24
      25 CREATE FUNCTION check_primary_key ()
      26         RETURNS trigger
      27         AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
      28         LANGUAGE C;
...
      35 CREATE FUNCTION autoinc ()
      36         RETURNS trigger
      37         AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@'
      38         LANGUAGE C;
---------8<----------------8<----------------8<----------------8<-------

(The ../../../contrib/spi-path does not exist outside of the build
environment, so to be able to run the test you need to have source code,
compilers, ...)

I could work around this problem by copying the needed shared objects to
@abs_builddir@ as part of make or make check, I could add a
“–look-for-shared-objects-here” parameter to pg_regress, and you
probably have other suggestions.

Is this something we want to fix, and what would be the right way to do
it? (I have no problem providing a patch.)

-Jørgen
--

Jørgen Austvik, Software Engineering - QA
Sun Microsystems Database Group

http://blogs.sun.com/austvik, http://www.autvik.net/

Sun Microsystems AS
Haakon VII gt. 7b
N-7485 Trondheim, Norway


Attachment

Re: pg_regress: referencing shared objects from tests

From
Tom Lane
Date:
Jorgen Austvik - Sun Norway <Jorgen.Austvik@Sun.COM> writes:
> we would like to be able to use and ship pg_regress and the PostgreSQL 
> test suite independently of the PostgreSQL build environment, for 
> testing and maybe even as a separate package to be build and shipped 
> with the OS for others to test their setup. Does this sound like a sane 
> and OK thing to do?

The RPM packages have done this since approximately forever.  You might
want to look at the patches used there.
        regards, tom lane


Re: pg_regress: referencing shared objects from tests

From
Jorgen Austvik - Sun Norway
Date:
Tom Lane wrote:
> Jorgen Austvik - Sun Norway <Jorgen.Austvik@Sun.COM> writes:
>> we would like to be able to use and ship pg_regress and the PostgreSQL
>> test suite independently of the PostgreSQL build environment, for
>> testing and maybe even as a separate package to be build and shipped
>> with the OS for others to test their setup. Does this sound like a sane
>> and OK thing to do?
>
> The RPM packages have done this since approximately forever.  You might
> want to look at the patches used there.

Hi,

yes [1] is the same that we have been using internally.

Let me reformulate my question: would it be better to include something
like the attached patch in PostgreSQL, than have every distributor of
the tests apply it?

[1]
http://cvs.fedoraproject.org/viewcvs/rpms/postgresql/F-9/postgresql-test.patch?rev=1.3&view=auto

-J
--

Jørgen Austvik, Software Engineering - QA
Sun Microsystems Database Technology Group

http://blogs.sun.com/austvik
http://www.austvik.net/
Index: src/test/regress/GNUmakefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/GNUmakefile,v
retrieving revision 1.73
diff -c -r1.73 GNUmakefile
*** src/test/regress/GNUmakefile    7 Apr 2008 14:15:58 -0000    1.73
--- src/test/regress/GNUmakefile    29 May 2008 12:17:18 -0000
***************
*** 122,127 ****
--- 122,129 ----
  .PHONY: all-spi
  all-spi:
      $(MAKE) -C $(contribdir)/spi refint$(DLSUFFIX) autoinc$(DLSUFFIX)
+     cp $(contribdir)/spi/refint$(DLSUFFIX) .
+     cp $(contribdir)/spi/autoinc$(DLSUFFIX) .

  # Tablespace setup
  .PHONY: tablespace-setup
Index: src/test/regress/input/create_function_1.source
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/input/create_function_1.source,v
retrieving revision 1.17
diff -c -r1.17 create_function_1.source
*** src/test/regress/input/create_function_1.source    27 Feb 2006 16:09:50 -0000    1.17
--- src/test/regress/input/create_function_1.source    29 May 2008 12:17:18 -0000
***************
*** 24,40 ****

  CREATE FUNCTION check_primary_key ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION check_foreign_key ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION autoinc ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION funny_dup17 ()
--- 24,40 ----

  CREATE FUNCTION check_primary_key ()
      RETURNS trigger
!     AS '@abs_builddir@/refint@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION check_foreign_key ()
      RETURNS trigger
!     AS '@abs_builddir@/refint@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION autoinc ()
      RETURNS trigger
!     AS '@abs_builddir@/autoinc@DLSUFFIX@'
      LANGUAGE C;

  CREATE FUNCTION funny_dup17 ()
Index: src/test/regress/output/create_function_1.source
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/output/create_function_1.source,v
retrieving revision 1.30
diff -c -r1.30 create_function_1.source
*** src/test/regress/output/create_function_1.source    18 Jun 2007 21:40:58 -0000    1.30
--- src/test/regress/output/create_function_1.source    29 May 2008 12:17:18 -0000
***************
*** 25,39 ****
  NOTICE:  argument type city_budget is only a shell
  CREATE FUNCTION check_primary_key ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION check_foreign_key ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION autoinc ()
      RETURNS trigger
!     AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION funny_dup17 ()
          RETURNS trigger
--- 25,39 ----
  NOTICE:  argument type city_budget is only a shell
  CREATE FUNCTION check_primary_key ()
      RETURNS trigger
!     AS '@abs_builddir@/refint@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION check_foreign_key ()
      RETURNS trigger
!     AS '@abs_builddir@/refint@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION autoinc ()
      RETURNS trigger
!     AS '@abs_builddir@/autoinc@DLSUFFIX@'
      LANGUAGE C;
  CREATE FUNCTION funny_dup17 ()
          RETURNS trigger

Attachment

Re: pg_regress: referencing shared objects from tests

From
Tom Lane
Date:
Jorgen Austvik - Sun Norway <Jorgen.Austvik@Sun.COM> writes:
> Tom Lane wrote:
>> The RPM packages have done this since approximately forever.  You might
>> want to look at the patches used there.

> yes [1] is the same that we have been using internally.

> Let me reformulate my question: would it be better to include something 
> like the attached patch in PostgreSQL, than have every distributor of 
> the tests apply it?

> [1] 
> http://cvs.fedoraproject.org/viewcvs/rpms/postgresql/F-9/postgresql-test.patch?rev=1.3&view=auto

I never particularly thought it would be useful to push that patch
upstream, but certainly it would make life a tad simpler for Devrim and
me.  Since nobody else has objected, I'll look into doing this in HEAD.
        regards, tom lane