From 60c816f21021ce094a6ecd16c5c49ba8aaef7436 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 1 Sep 2020 22:55:45 -0700 Subject: [PATCH] tests: Add missing host.at tests. Thanks to Friedrich Beckmann for reporting the problem. --- tests/language/utilities/host.at | 143 +++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 tests/language/utilities/host.at diff --git a/tests/language/utilities/host.at b/tests/language/utilities/host.at new file mode 100644 index 0000000000..53aac78d8a --- /dev/null +++ b/tests/language/utilities/host.at @@ -0,0 +1,143 @@ +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([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: error: HOST: This command not allowed when the SAFER option is set. +]) +AT_CLEANUP -- 2.30.2