From 12594449b5aad90c16f26dc33b017f7385b4e4cb Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 27 Sep 2010 22:01:38 -0700 Subject: [PATCH] tests: Convert GET DATA /TYPE=PSQL tests to use Autotest. --- configure.ac | 5 +- tests/atlocal.in | 8 + tests/automake.mk | 5 +- tests/command/get-data-psql.sh | 438 ------------------------ tests/language/data-io/get-data-psql.at | 348 +++++++++++++++++++ 5 files changed, 361 insertions(+), 443 deletions(-) delete mode 100755 tests/command/get-data-psql.sh create mode 100644 tests/language/data-io/get-data-psql.at diff --git a/configure.ac b/configure.ac index 6d01dc90..2d8b6a45 100644 --- a/configure.ac +++ b/configure.ac @@ -147,19 +147,22 @@ if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then LDFLAGS=$save_LDFLAGS]) if test $pspp_cv_have_libpq = yes; then + PSQL_SUPPORT=yes AC_DEFINE([PSQL_SUPPORT], [1], [Define to 1 if building in support for reading from postgres databases.]) else + PSQL_SUPPORT=no PG_CONFIG= PG_CFLAGS= PG_LDFLAGS= PG_LIBS= fi else + PSQL_SUPPORT=no pspp_cv_have_libpq=no fi -AM_CONDITIONAL(PSQL_SUPPORT, test $pspp_cv_have_libpq = yes) +AC_SUBST([PSQL_SUPPORT]) dnl Check for libxml2 PKG_CHECK_MODULES( diff --git a/tests/atlocal.in b/tests/atlocal.in index 0a758a20..7bd713cd 100644 --- a/tests/atlocal.in +++ b/tests/atlocal.in @@ -7,3 +7,11 @@ host='@host@' GNM_SUPPORT='@GNM_SUPPORT@' GZIP= export GZIP + +PSQL_SUPPORT='@PSQL_SUPPORT@' +if test "$PSQL_SUPPORT" = yes; then + : ${PG_CONFIG:='@PG_CONFIG@'} + : ${PG_DBASE:=pspptest} + : ${PG_PORT:=6543} + : ${PG_PATH:=`$PG_CONFIG --bindir`} +fi diff --git a/tests/automake.mk b/tests/automake.mk index 0f31c14d..88ca603a 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -116,10 +116,6 @@ dist_TESTS = \ tests/expressions/variables.sh \ tests/expressions/vectors.sh -if PSQL_SUPPORT -dist_TESTS += tests/command/get-data-psql.sh -endif - TESTS = $(dist_TESTS) $(nodist_TESTS) check_PROGRAMS += \ @@ -380,6 +376,7 @@ TESTSUITE_AT = \ tests/language/data-io/data-reader.at \ tests/language/data-io/file-handle.at \ tests/language/data-io/get-data-gnm.at \ + tests/language/data-io/get-data-psql.at \ tests/language/data-io/get-data-txt.at \ tests/language/data-io/save.at \ tests/language/data-io/save-translate.at \ diff --git a/tests/command/get-data-psql.sh b/tests/command/get-data-psql.sh deleted file mode 100755 index c71d23a5..00000000 --- a/tests/command/get-data-psql.sh +++ /dev/null @@ -1,438 +0,0 @@ -#!/bin/sh - -# This program tests the psql import feature. - -TEMPDIR=/tmp/pspp-tst-$$ -TESTFILE=$TEMPDIR/`basename $0`.sps - -# ensure that top_srcdir and top_builddir are absolute -if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi -if [ -z "$top_builddir" ] ; then top_builddir=. ; fi -top_srcdir=`cd $top_srcdir; pwd` -top_builddir=`cd $top_builddir; pwd` - -PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT - -STAT_CONFIG_PATH=$top_srcdir/config -export STAT_CONFIG_PATH - -LANG=C -export LANG - -port=6543 -dbase=pspptest -PG_CONFIG=${PG_CONFIG:=pg_config} -pgpath=`$PG_CONFIG --bindir` - -cleanup() -{ - if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then - echo "NOT cleaning $TEMPDIR" - return ; - fi - PGHOST=$TEMPDIR $pgpath/pg_ctl -D $TEMPDIR/cluster stop -W -o "-k $TEMPDIR -h ''" > /dev/null 2>&1 - cd / - rm -rf $TEMPDIR -} - - -fail() -{ - echo $activity - echo FAILED - cleanup; - exit 1; -} - - -no_result() -{ - echo $activity - echo NO RESULT; - cleanup; - exit 2; -} - -pass() -{ - cleanup; - exit 0; -} - -if [ ! -x $pgpath/initdb ] ; then - echo 'No Postgres server was found, so the postgres database interface cannot be tested.' - cleanup; - exit 77; -fi - -mkdir -p $TEMPDIR - -cd $TEMPDIR - -activity="create cluster" -$pgpath/initdb -D $TEMPDIR/cluster -A trust > /dev/null -if [ $? -ne 0 ] ; then no_result ; fi - -activity="run server" -PGHOST=$TEMPDIR PGPORT=$port $pgpath/pg_ctl -D $TEMPDIR/cluster start -w -o "-k $TEMPDIR -h ''" > /dev/null -if [ $? -ne 0 ] ; then no_result ; fi - - -activity="create database" -$pgpath/createdb -h $TEMPDIR -p $port $dbase > /dev/null 2> /dev/null -if [ $? -ne 0 ] ; then no_result ; fi - - -activity="populate database" -$pgpath/psql -h $TEMPDIR -p $port $dbase > /dev/null << EOF - -CREATE TABLE empty (a int, b date, c numeric(23, 4)); - --- a largeish table to check big queries work ok. -CREATE TABLE large (x int); -INSERT INTO large (select * from generate_series(1, 1000)); - - -CREATE TABLE thing ( - bool bool , - bytea bytea , - char char , - int8 int8 , - int2 int2 , - int4 int4 , - numeric numeric(50,6) , - text text , - oid oid , - float4 float4 , - float8 float8 , - money money , - pbchar bpchar , - varchar varchar , - date date , - time time , - timestamp timestamp , - timestamptz timestamptz , - interval interval , - timetz timetz -); - -INSERT INTO thing VALUES ( - false, - '0', - 'a', - '0', - 0, - 0, - -256.098, - 'this-long-text', - 0, - 0, - 0, - '0.01', - 'a', - 'A', - '1-Jan-2000', - '00:00', - 'January 8 04:05:06 1999', - 'January 8 04:05:06 1999 PST', - '1 minutes', - '10:09 UTC+4' -); - -INSERT INTO thing VALUES ( - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null -); - -INSERT INTO thing VALUES ( - true, - '1', - 'b', - '1', - 1, - 1, - 65535.00001, - 'that-long-text', - 1, - 1, - 1, - '1.23', - 'b', - 'B', - '10-Jan-1963', - '01:05:02', - '10-Jan-1963 23:58:00', - '10-Jan-1963 23:58:00 CET', - '2 year 1 month 12 days 1 hours 3 minutes 4 seconds', - '01:05:02 UTC-7' -); -EOF -if [ $? -ne 0 ] ; then fail ; fi - -activity="create program 1" -cat > $TESTFILE < $TESTFILE < $TESTFILE < 1). -LIST. - -TEMPORARY. -N OF CASES 6. -LIST. - -SORT CASES BY x (D). - -TEMPORARY. -N OF CASES 6. -LIST. - -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -activity="run program 3" -$SUPERVISOR $PSPP -o pspp.csv $TESTFILE -if [ $? -ne 0 ] ; then no_result ; fi - -activity="compare output 3" -diff -c $TEMPDIR/pspp.csv - << 'EOF' -Table: Data List -x,diff -1.00,. -2.00,1.00 -3.00,1.00 -4.00,1.00 -5.00,1.00 -6.00,1.00 - -Table: Data List -x,diff -1000.00,1.00 -999.00,1.00 -998.00,1.00 -997.00,1.00 -996.00,1.00 -995.00,1.00 -EOF -if [ $? -ne 0 ] ; then fail ; fi - - - -# Check for a bug caused by having string variables in the database, -# all of which are null. - -activity="populate database 4" -$pgpath/psql -h $TEMPDIR -p $port $dbase > /dev/null << EOF - --- a table which has a text field containing only null, or zero --- length entries. - -CREATE TABLE foo (int4 int4, text text); - -INSERT INTO foo VALUES ('12', ''); - -INSERT INTO foo VALUES (null, ''); - -EOF -if [ $? -ne 0 ] ; then fail ; fi - - -activity="create program 4" -cat > $TESTFILE < get-data.sps < get-data.sps < get-data.sps < 1). +LIST. + +TEMPORARY. +N OF CASES 6. +LIST. + +SORT CASES BY x (D). + +TEMPORARY. +N OF CASES 6. +LIST. +EOF +]) +AT_CHECK([pspp -o pspp.csv get-data.sps]) +AT_CHECK([cat pspp.csv], [0], [dnl +Table: Data List +x,diff +1.00,. @&t@ +2.00,1.00 +3.00,1.00 +4.00,1.00 +5.00,1.00 +6.00,1.00 + +Table: Data List +x,diff +1000.00,1.00 +999.00,1.00 +998.00,1.00 +997.00,1.00 +996.00,1.00 +995.00,1.00 +]) +AT_CLEANUP + +dnl Check for a bug caused by having string variables in the database, +dnl all of which are null. +AT_SETUP([GET DATA /TYPE=PSQL -- all-null string]) +INIT_PSQL +AT_DATA([all-null-string.sql], + [-- a table which has a text field containing only null, or zero + -- length entries. + + CREATE TABLE foo (int4 int4, text text); + + INSERT INTO foo VALUES ('12', ''); + + INSERT INTO foo VALUES (null, ''); +]) +AT_CHECK([psql -h "`pwd`" -p $PG_PORT $PG_DBASE < all-null-string.sql], + [0], [ignore]) +AT_CAPTURE_FILE([get-data.sps]) +AT_CHECK([cat > get-data.sps <