MATCH FILES, UPDATE, ADD FILES: Improve error messages.
[pspp] / tests / language / data-io / update.at
index b2c7c482f232aba5616b44465893fd2bd3e55f33..2968b455ffd780a56e24d68592aab1b6e711c4e8 100644 (file)
@@ -1,19 +1,19 @@
 dnl PSPP - a program for statistical analysis.
-dnl Copyright (C) 2017 Free Software Foundation, Inc.
-dnl 
+dnl Copyright (C) 2017, 2020 Free Software Foundation, Inc.
+dnl
 dnl This program is free software: you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
 dnl the Free Software Foundation, either version 3 of the License, or
 dnl (at your option) any later version.
-dnl 
+dnl
 dnl This program is distributed in the hope that it will be useful,
 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 dnl GNU General Public License for more details.
-dnl 
+dnl
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-dnl m4_define([CHECK_UPDATE],
+m4_define([CHECK_UPDATE],
   [AT_SETUP([UPDATE $1 with $2])
    AT_DATA([a.data], [dnl
 1aB
@@ -56,7 +56,7 @@ m4_if([$2], [sav], [], [DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).])
 UPDATE
     m4_if([$1], [sav], [FILE='a.sav'], [FILE=*]) /IN=InA /SORT
     m4_if([$2], [sav], [FILE='b.sav'], [FILE=*]) /IN=InB /RENAME c=d
-    BY a.
+    /BY a.
 LIST.
 ])
    cat update.sps
@@ -88,3 +88,33 @@ AT_BANNER([UPDATE])
 CHECK_UPDATE([sav], [sav])
 CHECK_UPDATE([sav], [inline])
 CHECK_UPDATE([inline], [sav])
+
+dnl Far more syntax errors are possible, but the rest are all covered
+dnl by the MATCH FILES tests.
+AT_SETUP([UPDATE syntax errors])
+AT_DATA([insert.sps], [dnl
+INSERT FILE='update.sps' ERROR=IGNORE.
+])
+AT_DATA([update.sps], [dnl
+DATA LIST LIST NOTABLE/name (A6) x.
+BEGIN DATA.
+al,7
+brad,8
+carl,9
+END DATA.
+SAVE OUTFILE='x.sav'.
+
+DATA LIST LIST NOTABLE/name (A7) y.
+BEGIN DATA.
+al,1
+carl,2
+dan,3
+END DATA.
+UPDATE/FILE='x.sav'/FILE=*/RENAME(name=name2).
+])
+AT_CHECK([pspp --testing-mode -O format=csv insert.sps], [1], [dnl
+"update.sps:15.1-15.46: error: UPDATE: Required subcommand BY was not specified.
+   15 | UPDATE/FILE='x.sav'/FILE=*/RENAME(name=name2).
+      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+])
+AT_CLEANUP