1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
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 <http://www.gnu.org/licenses/>.
dnl
AT_BANNER([HOST - portable tests])
AT_SETUP([HOST - one command])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['echo "hi there" > file']].
])
AT_CHECK([pspp -O format=csv host.sps])
AT_CHECK([cat file], [0], [hi there
])
AT_CLEANUP
AT_SETUP([HOST - two commands])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['echo a > a' 'echo b > b']].
])
AT_CHECK([pspp -O format=csv host.sps])
AT_CHECK([cat a], [0], [a
])
AT_CHECK([cat b], [0], [b
])
AT_CLEANUP
AT_SETUP([HOST - time limit])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['sleep 10']] TIMELIMIT=0.1.
])
if $MINGW; then
AT_CHECK([pspp -O format=csv host.sps], [1], [dnl
host.sps:1: error: HOST: Time limit not supported on this platform.
])
else
AT_CHECK([pspp -O format=csv host.sps], [0], [dnl
"host.sps:1: warning: HOST: Command ""sleep 10"" timed out."
])
fi
AT_CLEANUP
AT_BANNER([HOST - Unix-like OSes only])
AT_SETUP([HOST - command failure])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['exit 1' 'echo "Not reached"']].
])
AT_CHECK([pspp -O format=csv host.sps], [0], [dnl
"host.sps:1: warning: HOST: Command ""exit 1"" exited with status 1."
])
AT_CLEANUP
AT_SETUP([HOST - nonexistent shell])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['echo hi']].
])
AT_CHECK([SHELL=/nonexistent pspp -O format=csv host.sps], [0], [dnl
"host.sps:1: warning: HOST: Command ""echo hi"" exited with status 127 (Command or shell not found)."
])
AT_CLEANUP
AT_SETUP([HOST - nonexistent command])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['/nonexistent']].
])
AT_CHECK([pspp -O format=csv host.sps | head -1], [0], [dnl
"host.sps:1: warning: HOST: Command ""/nonexistent"" exited with status 127 (Command or shell not found)."
])
AT_CLEANUP
AT_SETUP([HOST - output to stdout])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['echo hi']].
])
AT_CHECK([pspp -O format=csv host.sps], [0], [hi
])
AT_CLEANUP
AT_SETUP([HOST - output to stderr])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['echo hi 2>&1']].
])
AT_CHECK([pspp -O format=csv host.sps], [0], [hi
])
AT_CLEANUP
AT_SETUP([HOST - input from stdin])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['cat && echo ok || echo fail']] TIMELIMIT=5.
])
AT_CHECK([pspp -O format=csv host.sps], [0], [ok
])
AT_CLEANUP
dnl This is a special case inside run_command().
AT_SETUP([HOST - zero time limit])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['sleep 10']] TIMELIMIT=0.
])
AT_CHECK([pspp -O format=csv host.sps], [0], [dnl
"host.sps:1: warning: HOST: Command ""sleep 10"" timed out."
])
AT_CLEANUP
AT_SETUP([HOST - signal termination])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
HOST COMMAND=[['kill -ABRT $$' 'echo "Not reached"']].
])
AT_CHECK([pspp -O format=csv host.sps], [0], [dnl
"host.sps:1: warning: HOST: Command ""kill -ABRT $$"" terminated by signal 6."
])
AT_CLEANUP
AT_SETUP([HOST - SAFER])
AT_SKIP_IF([$MINGW])
AT_DATA([host.sps], [dnl
SET SAFER=ON.
HOST COMMAND=[['sleep 10']] TIMELIMIT=0.1.
])
AT_CHECK([pspp -O format=csv host.sps], [1], [dnl
"host.sps:2.1-2.4: error: HOST: This command not allowed when the SAFER option is set.
2 | HOST COMMAND=[['sleep 10']] TIMELIMIT=0.1.
| ^~~~"
])
AT_CLEANUP
|