Added a test for reading/writing of portable files.
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Jan 2005 00:32:16 +0000 (00:32 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Jan 2005 00:32:16 +0000 (00:32 +0000)
Fixed a bug which crashed PSPP if VALUE LABELS had a trailing slash.

po/en_GB.po
po/pspp.pot
src/ChangeLog
src/val-labs.c
tests/Makefile.am
tests/bugs/val-labs-trailing-slash.sh [new file with mode: 0755]
tests/command/import-export.sh [new file with mode: 0755]

index b1a3ea939ac2b6317572465a79ba9b87123a8f08..4e60da85d493b5a97607f23bfaa3b415a8738427 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.3.1\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2005-01-01 18:55+0800\n"
+"POT-Creation-Date: 2005-01-05 08:20+0800\n"
 "PO-Revision-Date: 2004-01-23 13:04+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -2115,11 +2115,11 @@ msgstr ""
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:556 src/val-labs.c:151
+#: src/lexer.c:556 src/val-labs.c:154
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:570 src/val-labs.c:160
+#: src/lexer.c:570 src/val-labs.c:163
 msgid "expecting integer"
 msgstr ""
 
@@ -2714,26 +2714,6 @@ msgstr ""
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
-msgid "HAverage"
-msgstr ""
-
-#: src/percentiles.c:39
-msgid "Weighted Average"
-msgstr ""
-
-#: src/percentiles.c:40
-msgid "Rounded"
-msgstr ""
-
-#: src/percentiles.c:41
-msgid "Empirical"
-msgstr ""
-
-#: src/percentiles.c:42
-msgid "Empirical with averaging"
-msgstr ""
-
 #: src/permissions.c:75
 #, c-format
 msgid "Expecting %s or %s."
@@ -2875,44 +2855,44 @@ msgstr ""
 msgid "position %d: character `\\%03o' is not valid in a variable name."
 msgstr ""
 
-#: src/pfm-read.c:748
+#: src/pfm-read.c:746
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/pfm-read.c:792
+#: src/pfm-read.c:790
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:815
+#: src/pfm-read.c:813
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:886
+#: src/pfm-read.c:884
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:889
+#: src/pfm-read.c:887
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:922
+#: src/pfm-read.c:920
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:925
+#: src/pfm-read.c:923
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:978
+#: src/pfm-read.c:976
 msgid "End of file midway through case."
 msgstr ""
 
@@ -3780,19 +3760,19 @@ msgstr ""
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:115
+#: src/val-labs.c:118
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:164
+#: src/val-labs.c:167
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:174
+#: src/val-labs.c:177
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
index 9025987c8318ceef2b82d98926b42d0c5f19e81f..170e85d7e2737a82f924a1c73d64ac62bc51d4cd 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2005-01-01 18:55+0800\n"
+"POT-Creation-Date: 2005-01-05 08:20+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2115,11 +2115,11 @@ msgstr ""
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:556 src/val-labs.c:151
+#: src/lexer.c:556 src/val-labs.c:154
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:570 src/val-labs.c:160
+#: src/lexer.c:570 src/val-labs.c:163
 msgid "expecting integer"
 msgstr ""
 
@@ -2714,26 +2714,6 @@ msgstr ""
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
-msgid "HAverage"
-msgstr ""
-
-#: src/percentiles.c:39
-msgid "Weighted Average"
-msgstr ""
-
-#: src/percentiles.c:40
-msgid "Rounded"
-msgstr ""
-
-#: src/percentiles.c:41
-msgid "Empirical"
-msgstr ""
-
-#: src/percentiles.c:42
-msgid "Empirical with averaging"
-msgstr ""
-
 #: src/permissions.c:75
 #, c-format
 msgid "Expecting %s or %s."
@@ -2875,44 +2855,44 @@ msgstr ""
 msgid "position %d: character `\\%03o' is not valid in a variable name."
 msgstr ""
 
-#: src/pfm-read.c:748
+#: src/pfm-read.c:746
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/pfm-read.c:792
+#: src/pfm-read.c:790
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:815
+#: src/pfm-read.c:813
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:886
+#: src/pfm-read.c:884
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:889
+#: src/pfm-read.c:887
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:922
+#: src/pfm-read.c:920
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:925
+#: src/pfm-read.c:923
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:978
+#: src/pfm-read.c:976
 msgid "End of file midway through case."
 msgstr ""
 
@@ -3780,19 +3760,19 @@ msgstr ""
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:115
+#: src/val-labs.c:118
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:164
+#: src/val-labs.c:167
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:174
+#: src/val-labs.c:177
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
index a72149830da04f5935c913a1915039ae466e1ce9..801c825fb33e0f928e6b23fc5196fa17687802d0 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jan  5 08:30:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * val-labs.c Fixed bug which caused a crash if VALUE LABELS had
+       a trailing slash.
+
 Mon Jan  3 17:44:37 2005  Ben Pfaff  <blp@gnu.org>
 
        * pfm-read.c: (read_variables) Remove direct manipulation of
index 1af46a2c5d81496e5bc5f5156805a395d3002883..1cc7b84c7c8fb3b07de654e950f2f0273e9da736 100644 (file)
@@ -79,12 +79,15 @@ do_value_labels (int erase)
           goto lossage;
 
       if (token != '/')
+       {
+       free (vars);
        break;
+       }
+
       lex_get ();
 
       free (vars);
     }
-  free (vars);
 
   if (token != '.')
     {
index a48b9092f5ac090829a01fdb6b7faf9e80dc2caa..a2ae409089c1f460834a832f5ab0fa1a3444eb8e 100644 (file)
@@ -57,6 +57,7 @@ TESTS = \
        bugs/t-test-alpha2.sh \
        bugs/temporary.sh \
        bugs/val-labs.sh \
+       bugs/val-labs-trailing-slash.sh \
        bugs/recode-copy-bug.sh \
        bugs/computebug.sh \
        xforms/casefile.sh \
diff --git a/tests/bugs/val-labs-trailing-slash.sh b/tests/bugs/val-labs-trailing-slash.sh
new file mode 100755 (executable)
index 0000000..6a16984
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+# This program tests for a bug in the VALUE LABELS command
+# which caused a crash if it had a trailing /
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     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;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/out.stat <<EOF
+DATA LIST LIST /X * .
+BEGIN DATA.
+1 
+2
+3
+4
+END DATA.
+
+
+VALUE LABELS X 1 'one' 2 'two' 3 'three'/
+
+
+LIST VARIABLES=X.
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/out.stat
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass
diff --git a/tests/command/import-export.sh b/tests/command/import-export.sh
new file mode 100755 (executable)
index 0000000..3cf262a
--- /dev/null
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# This program tests the IMPORT and EXPORT commands
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     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;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/prog.stat <<EOF
+DATA LIST LIST /x * y *.
+BEGIN DATA.
+1 2
+3 4
+5 6
+END DATA.
+
+EXPORT /OUTFILE='wiz.por'.
+
+LIST.
+
+IMPORT /FILE='wiz.por'.
+
+LIST.
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program"
+$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii $TEMPDIR/prog.stat
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output"
+diff $TEMPDIR/pspp.list - << EOF
+1.1 DATA LIST.  Reading free-form data from the command file.
++--------+------+
+|Variable|Format|
+#========#======#
+|X       |F8.0  |
+|Y       |F8.0  |
++--------+------+
+
+       X        Y
+-------- --------
+    1.00     2.00 
+    3.00     4.00 
+    5.00     6.00 
+
+       X        Y
+-------- --------
+    1.00     2.00 
+    3.00     4.00 
+    5.00     6.00 
+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass;