Save File test: Restore permissions after test
[pspp] / tests / data / file.at
1 AT_BANNER([files handling])
2
3 AT_SETUP([Write error - directory exists])
4
5 mkdir foobar.sav
6
7 AT_DATA([file.sps], [dnl
8 DATA LIST NOTABLE/x 1.
9 BEGIN DATA.
10 5
11 END DATA.
12 SAVE OUTFILE='foobar.sav'.
13 ])
14
15 AT_CHECK([pspp -O format=csv file.sps], [1], [dnl
16 error: Opening foobar.sav for writing: Is a directory.
17
18 error: Error opening `foobar.sav' for writing as a system file: Is a directory.
19 ])
20
21 AT_CLEANUP
22
23
24 AT_SETUP([Write error - no permission])
25
26 mkdir  directory
27 touch directory/foobar.sav
28 chmod 000 directory
29
30 AT_DATA([file.sps], [dnl
31 DATA LIST NOTABLE/x 1.
32 BEGIN DATA.
33 5
34 END DATA.
35 SAVE OUTFILE='directory/foobar.sav'.
36 ])
37
38 AT_CHECK([pspp -O format=csv file.sps], [1], [dnl
39 error: Creating temporary file to replace directory/foobar.sav: Permission denied.
40
41 error: Error opening `directory/foobar.sav' for writing as a system file: Permission denied.
42 ])
43
44 chmod 700 directory
45
46 AT_CLEANUP
47
48
49
50 AT_SETUP([Write error - temp file disappeared])
51
52 AT_DATA([file.sps], [dnl
53 DATA LIST NOTABLE/x 1.
54 BEGIN DATA.
55 5
56 END DATA.
57 XSAVE OUTFILE='foobar.sav'.
58 HOST COMMAND=[['rm foobar.savtmp*']].
59 EXECUTE.
60 ])
61
62 AT_CHECK([pspp -O format=csv file.sps], [1], [ignore])
63
64 AT_CLEANUP
65
66
67
68 AT_SETUP([Write fifo])
69
70 dnl The Fifo feature is not available in w32 builds
71 AT_SKIP_IF([case $host in *-*-mingw*) true ;; *) false ;; esac])
72
73 AT_DATA([file.sps], [dnl
74 DATA LIST NOTABLE/x 1.
75 BEGIN DATA.
76 5
77 END DATA.
78 SAVE OUTFILE='foobar.sav'.
79 ])
80
81 mkfifo foobar.sav
82 cat foobar.sav > /dev/null & 
83 pid=$!
84
85 AT_CHECK([pspp -O format=csv file.sps], [0], [ignore])
86
87 AT_CLEANUP
88
89
90
91 AT_SETUP([Reading from pipe])
92
93 AT_DATA([pipe.sps], [dnl
94 data list file='echo "1 2\n 3 4\n 5 6" |' notable list /x * y *.
95 list.
96 ])
97
98 AT_CHECK([pspp -O format=csv pipe.sps], [0], [dnl
99 Table: Data List
100 x,y
101 1.00,2.00
102 3.00,4.00
103 5.00,6.00
104 ])
105
106 AT_CLEANUP