dnl PSPP - a program for statistical analysis. dnl Copyright (C) 2017 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 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 You should have received a copy of the GNU General Public License dnl along with this program. If not, see . dnl AT_BANNER([portable files]) AT_SETUP([overwriting portable file]) AT_DATA([output.por], [abcdef ]) cp output.por output.por.backup AT_DATA([porfile.sps], [dnl DATA LIST NOTABLE/x 1. BEGIN DATA. 5 END DATA. EXPORT OUTFILE='output.por'. ]) AT_CHECK([pspp -O format=csv porfile.sps]) AT_CHECK([cmp output.por output.por.backup], [1], [ignore]) AT_CLEANUP AT_SETUP([overwriting portable file atomically]) AT_DATA([output.por], [abcdef ]) cp output.por output.por.backup AT_DATA([porfile.sps], [[DATA LIST NOTABLE/x 1. BEGIN DATA. 5 END DATA. XEXPORT OUTFILE='output.por'. HOST COMMAND=['kill -TERM $PPID']. ]]) AT_CHECK([pspp -O format=csv porfile.sps], [143], [], [ignore]) AT_CHECK([cmp output.por output.por.backup]) AT_CHECK( [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done]) AT_CLEANUP AT_SETUP([write to same portable file being read]) AT_DATA([export.sps], [dnl DATA LIST NOTABLE/x 1. BEGIN DATA. 2 END DATA. EXPORT OUTFILE='data.por'. ]) AT_CHECK([pspp -O format=csv export.sps]) AT_CHECK([test -s data.por]) AT_CHECK( [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done]) AT_DATA([export2.sps], [dnl IMPORT FILE='data.por'. COMPUTE y = x * 2. EXPORT OUTFILE='data.por'. ]) AT_CHECK([pspp -O format=csv export2.sps]) AT_CHECK( [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done]) AT_DATA([export3.sps], [dnl IMPORT FILE='data.por'. LIST. ]) AT_CHECK([pspp -O format=csv export3.sps], [0], [dnl Table: Data List X,Y 2,4.00 ]) AT_CLEANUP dnl This checks for a bug in the portable file writer that caused an infinite dnl loop in some cases, and other problems in other cases, when a variable dnl had value labels. AT_SETUP([write portable file with value labels]) AT_DATA([export.sps], [dnl DATA LIST NOTABLE/var1 TO var5 1-5. VALUE LABELS /var1 1 'one' /var2 2 'two' /var3 3 'three' /var4 4 'four' /var5 5 'five'. BEGIN DATA. 12345 END DATA. EXPORT OUTFILE='data.por'. ]) AT_CHECK([pspp -O format=csv export.sps]) AT_DATA([import.sps], [dnl IMPORT FILE='data.por'. DISPLAY DICTIONARY. LIST. ]) AT_CHECK([pspp -O format=csv import.sps], [0], [dnl Table: Variables Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values VAR1,1,,Scale,Input,8,Right,F1.0,F1.0, VAR2,2,,Scale,Input,8,Right,F1.0,F1.0, VAR3,3,,Scale,Input,8,Right,F1.0,F1.0, VAR4,4,,Scale,Input,8,Right,F1.0,F1.0, VAR5,5,,Scale,Input,8,Right,F1.0,F1.0, Table: Value Labels Variable Value,,Label VAR1,1,one VAR2,2,two VAR3,3,three VAR4,4,four VAR5,5,five Table: Data List VAR1,VAR2,VAR3,VAR4,VAR5 1,2,3,4,5 ]) AT_DATA([sys-file-info.sps], [SYSFILE INFO FILE='data.por' ]) AT_CHECK([pspp -O format=csv sys-file-info.sps | sed '/Encoding/d /Integer Format/d /Real Format/d /Created/d /Product/d '], [0], [dnl Table: File Information File,data.por Label, Variables,5 Cases,Unknown Type,SPSS Portable File Weight,Not weighted Compression,None Table: Variables Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values VAR1,1,,Scale,Input,8,Right,F1.0,F1.0, VAR2,2,,Scale,Input,8,Right,F1.0,F1.0, VAR3,3,,Scale,Input,8,Right,F1.0,F1.0, VAR4,4,,Scale,Input,8,Right,F1.0,F1.0, VAR5,5,,Scale,Input,8,Right,F1.0,F1.0, Table: Value Labels Variable Value,,Label VAR1,1,one VAR2,2,two VAR3,3,three VAR4,4,four VAR5,5,five ]) AT_CLEANUP