From: John Darrington Date: Sat, 17 Oct 2015 16:04:10 +0000 (+0200) Subject: Add tests for cases exercising the atomic replacement mechanism X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6acdfa0d3d24323f4df79547fd7ce85bf0406542;p=pspp Add tests for cases exercising the atomic replacement mechanism Add a test case when writing to a fifo. Add some test cases for situations where file creation fails. Failure to create a file should be reported gracefully. --- diff --git a/tests/automake.mk b/tests/automake.mk index b140caa31c..72bb16796e 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -279,6 +279,7 @@ TESTSUITE_AT = \ tests/data/data-out.at \ tests/data/datasheet-test.at \ tests/data/dictionary.at \ + tests/data/file.at \ tests/data/format-guesser.at \ tests/data/pc+-file-reader.at \ tests/data/por-file.at \ diff --git a/tests/data/file.at b/tests/data/file.at new file mode 100644 index 0000000000..b9b81deb97 --- /dev/null +++ b/tests/data/file.at @@ -0,0 +1,82 @@ +AT_BANNER([files handling]) + +AT_SETUP([Write error - directory exists]) + +mkdir foobar.sav + +AT_DATA([file.sps], [dnl +DATA LIST NOTABLE/x 1. +BEGIN DATA. +5 +END DATA. +SAVE OUTFILE='foobar.sav'. +]) + +AT_CHECK([pspp -O format=csv file.sps], [1], [dnl +error: Opening foobar.sav for writing: Is a directory. + +error: Error opening `foobar.sav' for writing as a system file: Is a directory. +]) + +AT_CLEANUP + + +AT_SETUP([Write error - no permission]) + +mkdir directory +touch directory/foobar.sav +chmod 000 directory + +AT_DATA([file.sps], [dnl +DATA LIST NOTABLE/x 1. +BEGIN DATA. +5 +END DATA. +SAVE OUTFILE='directory/foobar.sav'. +]) + +AT_CHECK([pspp -O format=csv file.sps], [1], [dnl +error: Creating temporary file to replace directory/foobar.sav: Permission denied. + +error: Error opening `directory/foobar.sav' for writing as a system file: Permission denied. +]) + +AT_CLEANUP + + + +AT_SETUP([Write error - temp file disappeared]) + +AT_DATA([file.sps], [dnl +DATA LIST NOTABLE/x 1. +BEGIN DATA. +5 +END DATA. +XSAVE OUTFILE='foobar.sav'. +HOST COMMAND=[['rm foobar.sav.tmp*']]. +EXECUTE. +]) + +AT_CHECK([pspp -O format=csv file.sps], [1], [ignore]) + +AT_CLEANUP + + + +AT_SETUP([Write fifo]) + +AT_DATA([file.sps], [dnl +DATA LIST NOTABLE/x 1. +BEGIN DATA. +5 +END DATA. +SAVE OUTFILE='foobar.sav'. +]) + +mkfifo foobar.sav +cat foobar.sav > /dev/null & +pid=$! + +AT_CHECK([pspp -O format=csv file.sps], [0], [ignore]) + +AT_CLEANUP