1*5a6e8488SAndroid Build Coastguard Worker#! /bin/sh 2*5a6e8488SAndroid Build Coastguard Worker# 3*5a6e8488SAndroid Build Coastguard Worker# SPDX-License-Identifier: BSD-2-Clause 4*5a6e8488SAndroid Build Coastguard Worker# 5*5a6e8488SAndroid Build Coastguard Worker# Copyright (c) 2018-2024 Gavin D. Howard and contributors. 6*5a6e8488SAndroid Build Coastguard Worker# 7*5a6e8488SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 8*5a6e8488SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 9*5a6e8488SAndroid Build Coastguard Worker# 10*5a6e8488SAndroid Build Coastguard Worker# * Redistributions of source code must retain the above copyright notice, this 11*5a6e8488SAndroid Build Coastguard Worker# list of conditions and the following disclaimer. 12*5a6e8488SAndroid Build Coastguard Worker# 13*5a6e8488SAndroid Build Coastguard Worker# * Redistributions in binary form must reproduce the above copyright notice, 14*5a6e8488SAndroid Build Coastguard Worker# this list of conditions and the following disclaimer in the documentation 15*5a6e8488SAndroid Build Coastguard Worker# and/or other materials provided with the distribution. 16*5a6e8488SAndroid Build Coastguard Worker# 17*5a6e8488SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18*5a6e8488SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*5a6e8488SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*5a6e8488SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21*5a6e8488SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*5a6e8488SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*5a6e8488SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*5a6e8488SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25*5a6e8488SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26*5a6e8488SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27*5a6e8488SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 28*5a6e8488SAndroid Build Coastguard Worker# 29*5a6e8488SAndroid Build Coastguard Worker 30*5a6e8488SAndroid Build Coastguard Workerset -e 31*5a6e8488SAndroid Build Coastguard Worker 32*5a6e8488SAndroid Build Coastguard Workerscript="$0" 33*5a6e8488SAndroid Build Coastguard Workertestdir=$(dirname "$script") 34*5a6e8488SAndroid Build Coastguard Worker 35*5a6e8488SAndroid Build Coastguard Worker. "$testdir/../scripts/functions.sh" 36*5a6e8488SAndroid Build Coastguard Worker 37*5a6e8488SAndroid Build Coastguard Workeroutputdir=${BC_TEST_OUTPUT_DIR:-$testdir} 38*5a6e8488SAndroid Build Coastguard Worker 39*5a6e8488SAndroid Build Coastguard Worker# Just print the usage and exit with an error. This can receive a message to 40*5a6e8488SAndroid Build Coastguard Worker# print. 41*5a6e8488SAndroid Build Coastguard Worker# @param 1 A message to print. 42*5a6e8488SAndroid Build Coastguard Workerusage() { 43*5a6e8488SAndroid Build Coastguard Worker if [ $# -eq 1 ]; then 44*5a6e8488SAndroid Build Coastguard Worker printf '%s\n\n' "$1" 45*5a6e8488SAndroid Build Coastguard Worker fi 46*5a6e8488SAndroid Build Coastguard Worker printf 'usage: %s dir extra_math [exec args...]\n' "$script" 47*5a6e8488SAndroid Build Coastguard Worker exit 1 48*5a6e8488SAndroid Build Coastguard Worker} 49*5a6e8488SAndroid Build Coastguard Worker 50*5a6e8488SAndroid Build Coastguard Worker# Command-line processing. 51*5a6e8488SAndroid Build Coastguard Workerif [ "$#" -ge 2 ]; then 52*5a6e8488SAndroid Build Coastguard Worker 53*5a6e8488SAndroid Build Coastguard Worker d="$1" 54*5a6e8488SAndroid Build Coastguard Worker shift 55*5a6e8488SAndroid Build Coastguard Worker check_d_arg "$d" 56*5a6e8488SAndroid Build Coastguard Worker 57*5a6e8488SAndroid Build Coastguard Worker extra_math="$1" 58*5a6e8488SAndroid Build Coastguard Worker shift 59*5a6e8488SAndroid Build Coastguard Worker check_bool_arg "$extra_math" 60*5a6e8488SAndroid Build Coastguard Worker 61*5a6e8488SAndroid Build Coastguard Workerelse 62*5a6e8488SAndroid Build Coastguard Worker usage "Not enough arguments; need 2" 63*5a6e8488SAndroid Build Coastguard Workerfi 64*5a6e8488SAndroid Build Coastguard Worker 65*5a6e8488SAndroid Build Coastguard Workerif [ "$#" -lt 1 ]; then 66*5a6e8488SAndroid Build Coastguard Worker exe="$testdir/../bin/$d" 67*5a6e8488SAndroid Build Coastguard Worker check_exec_arg "$exe" 68*5a6e8488SAndroid Build Coastguard Workerelse 69*5a6e8488SAndroid Build Coastguard Worker exe="$1" 70*5a6e8488SAndroid Build Coastguard Worker shift 71*5a6e8488SAndroid Build Coastguard Worker check_exec_arg "$exe" 72*5a6e8488SAndroid Build Coastguard Workerfi 73*5a6e8488SAndroid Build Coastguard Worker 74*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 75*5a6e8488SAndroid Build Coastguard Worker halt="quit" 76*5a6e8488SAndroid Build Coastguard Workerelse 77*5a6e8488SAndroid Build Coastguard Worker halt="q" 78*5a6e8488SAndroid Build Coastguard Workerfi 79*5a6e8488SAndroid Build Coastguard Worker 80*5a6e8488SAndroid Build Coastguard Workermkdir -p "$outputdir" 81*5a6e8488SAndroid Build Coastguard Worker 82*5a6e8488SAndroid Build Coastguard Worker# For tests later. 83*5a6e8488SAndroid Build Coastguard Workernum=100000000000000000000000000000000000000000000000000000000000000000000000000000 84*5a6e8488SAndroid Build Coastguard Workernum2="$num" 85*5a6e8488SAndroid Build Coastguard Workernumres="$num" 86*5a6e8488SAndroid Build Coastguard Workernum70="10000000000000000000000000000000000000000000000000000000000000000000\\ 87*5a6e8488SAndroid Build Coastguard Worker0000000000" 88*5a6e8488SAndroid Build Coastguard Worker 89*5a6e8488SAndroid Build Coastguard Worker# Set stuff for the correct calculator. 90*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 91*5a6e8488SAndroid Build Coastguard Worker halt="halt" 92*5a6e8488SAndroid Build Coastguard Worker opt="x" 93*5a6e8488SAndroid Build Coastguard Worker lopt="extended-register" 94*5a6e8488SAndroid Build Coastguard Worker line_var="BC_LINE_LENGTH" 95*5a6e8488SAndroid Build Coastguard Worker lltest="line_length()" 96*5a6e8488SAndroid Build Coastguard Workerelse 97*5a6e8488SAndroid Build Coastguard Worker halt="q" 98*5a6e8488SAndroid Build Coastguard Worker opt="l" 99*5a6e8488SAndroid Build Coastguard Worker lopt="mathlib" 100*5a6e8488SAndroid Build Coastguard Worker line_var="DC_LINE_LENGTH" 101*5a6e8488SAndroid Build Coastguard Worker num="$num pR" 102*5a6e8488SAndroid Build Coastguard Worker lltest="glpR" 103*5a6e8488SAndroid Build Coastguard Workerfi 104*5a6e8488SAndroid Build Coastguard Worker 105*5a6e8488SAndroid Build Coastguard Worker# I use these, so unset them to make the tests work. 106*5a6e8488SAndroid Build Coastguard Workerunset BC_ENV_ARGS 107*5a6e8488SAndroid Build Coastguard Workerunset BC_LINE_LENGTH 108*5a6e8488SAndroid Build Coastguard Workerunset DC_ENV_ARGS 109*5a6e8488SAndroid Build Coastguard Workerunset DC_LINE_LENGTH 110*5a6e8488SAndroid Build Coastguard Worker 111*5a6e8488SAndroid Build Coastguard Workerset +e 112*5a6e8488SAndroid Build Coastguard Worker 113*5a6e8488SAndroid Build Coastguard Workerprintf '\nRunning %s quit test...' "$d" 114*5a6e8488SAndroid Build Coastguard Worker 115*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" > /dev/null 2>&1 116*5a6e8488SAndroid Build Coastguard Worker 117*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "quit" 118*5a6e8488SAndroid Build Coastguard Worker 119*5a6e8488SAndroid Build Coastguard Worker# bc has two halt or quit commands, so test the second as well. 120*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = bc ]; then 121*5a6e8488SAndroid Build Coastguard Worker 122*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "quit" 2> /dev/null | "$exe" "$@" > /dev/null 2>&1 123*5a6e8488SAndroid Build Coastguard Worker 124*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" quit 125*5a6e8488SAndroid Build Coastguard Worker 126*5a6e8488SAndroid Build Coastguard Worker two=$("$exe" "$@" -e 1+1 -e quit) 127*5a6e8488SAndroid Build Coastguard Worker 128*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" quit 129*5a6e8488SAndroid Build Coastguard Worker 130*5a6e8488SAndroid Build Coastguard Worker if [ "$two" != "2" ]; then 131*5a6e8488SAndroid Build Coastguard Worker err_exit "$d failed test quit" 1 132*5a6e8488SAndroid Build Coastguard Worker fi 133*5a6e8488SAndroid Build Coastguard Workerfi 134*5a6e8488SAndroid Build Coastguard Worker 135*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 136*5a6e8488SAndroid Build Coastguard Worker 137*5a6e8488SAndroid Build Coastguard Workerbase=$(basename "$exe") 138*5a6e8488SAndroid Build Coastguard Worker 139*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s environment var tests...' "$d" 140*5a6e8488SAndroid Build Coastguard Worker 141*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 142*5a6e8488SAndroid Build Coastguard Worker 143*5a6e8488SAndroid Build Coastguard Worker export BC_ENV_ARGS=" '-l' '' -q" 144*5a6e8488SAndroid Build Coastguard Worker 145*5a6e8488SAndroid Build Coastguard Worker printf 's(.02893)\n' 2> /dev/null | "$exe" "$@" > /dev/null 146*5a6e8488SAndroid Build Coastguard Worker 147*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" "environment var" 148*5a6e8488SAndroid Build Coastguard Worker 149*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -e 4 > /dev/null 150*5a6e8488SAndroid Build Coastguard Worker 151*5a6e8488SAndroid Build Coastguard Worker err="$?" 152*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" "environment var" 153*5a6e8488SAndroid Build Coastguard Worker 154*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 155*5a6e8488SAndroid Build Coastguard Worker 156*5a6e8488SAndroid Build Coastguard Worker printf 'Running keyword redefinition test...' 157*5a6e8488SAndroid Build Coastguard Worker 158*5a6e8488SAndroid Build Coastguard Worker unset BC_ENV_ARGS 159*5a6e8488SAndroid Build Coastguard Worker 160*5a6e8488SAndroid Build Coastguard Worker redefine_res="$outputdir/bc_outputs/redefine.txt" 161*5a6e8488SAndroid Build Coastguard Worker redefine_out="$outputdir/bc_outputs/redefine_results.txt" 162*5a6e8488SAndroid Build Coastguard Worker 163*5a6e8488SAndroid Build Coastguard Worker outdir=$(dirname "$redefine_out") 164*5a6e8488SAndroid Build Coastguard Worker 165*5a6e8488SAndroid Build Coastguard Worker if [ ! -d "$outdir" ]; then 166*5a6e8488SAndroid Build Coastguard Worker mkdir -p "$outdir" 167*5a6e8488SAndroid Build Coastguard Worker fi 168*5a6e8488SAndroid Build Coastguard Worker 169*5a6e8488SAndroid Build Coastguard Worker printf '5\n0\n' > "$redefine_res" 170*5a6e8488SAndroid Build Coastguard Worker 171*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" --redefine=print -e 'define print(x) { x }' -e 'print(5)' > "$redefine_out" 172*5a6e8488SAndroid Build Coastguard Worker err="$?" 173*5a6e8488SAndroid Build Coastguard Worker 174*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "keyword redefinition" "$redefine_res" "$redefine_out" 175*5a6e8488SAndroid Build Coastguard Worker 176*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -r "abs" -r "else" -e 'abs = 5;else = 0' -e 'abs;else' > "$redefine_out" 177*5a6e8488SAndroid Build Coastguard Worker err="$?" 178*5a6e8488SAndroid Build Coastguard Worker 179*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "keyword redefinition" "$redefine_res" "$redefine_out" 180*5a6e8488SAndroid Build Coastguard Worker 181*5a6e8488SAndroid Build Coastguard Worker if [ "$extra_math" -ne 0 ]; then 182*5a6e8488SAndroid Build Coastguard Worker 183*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -lr abs -e "perm(5, 1)" -e "0" > "$redefine_out" 184*5a6e8488SAndroid Build Coastguard Worker err="$?" 185*5a6e8488SAndroid Build Coastguard Worker 186*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "keyword not redefined in builtin library" "$redefine_res" "$redefine_out" 187*5a6e8488SAndroid Build Coastguard Worker 188*5a6e8488SAndroid Build Coastguard Worker fi 189*5a6e8488SAndroid Build Coastguard Worker 190*5a6e8488SAndroid Build Coastguard Worker "$exe" "$@" -r "break" -e 'define break(x) { x }' 2> "$redefine_out" 191*5a6e8488SAndroid Build Coastguard Worker err="$?" 192*5a6e8488SAndroid Build Coastguard Worker 193*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "keyword redefinition error" "$redefine_out" "$d" 194*5a6e8488SAndroid Build Coastguard Worker 195*5a6e8488SAndroid Build Coastguard Worker "$exe" "$@" -e 'define read(x) { x }' 2> "$redefine_out" 196*5a6e8488SAndroid Build Coastguard Worker err="$?" 197*5a6e8488SAndroid Build Coastguard Worker 198*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "Keyword redefinition error without BC_REDEFINE_KEYWORDS" "$redefine_out" "$d" 199*5a6e8488SAndroid Build Coastguard Worker 200*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 201*5a6e8488SAndroid Build Coastguard Worker printf 'Running multiline comment expression file test...' 202*5a6e8488SAndroid Build Coastguard Worker 203*5a6e8488SAndroid Build Coastguard Worker multiline_expr_res="" 204*5a6e8488SAndroid Build Coastguard Worker multiline_expr_out="$outputdir/bc_outputs/multiline_expr_results.txt" 205*5a6e8488SAndroid Build Coastguard Worker 206*5a6e8488SAndroid Build Coastguard Worker # tests/bc/misc1.txt happens to have a multiline comment in it. 207*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -f "$testdir/bc/misc1.txt" > "$multiline_expr_out" 208*5a6e8488SAndroid Build Coastguard Worker err="$?" 209*5a6e8488SAndroid Build Coastguard Worker 210*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "multiline comment in expression file" "$testdir/bc/misc1_results.txt" \ 211*5a6e8488SAndroid Build Coastguard Worker "$multiline_expr_out" 212*5a6e8488SAndroid Build Coastguard Worker 213*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 214*5a6e8488SAndroid Build Coastguard Worker printf 'Running multiline comment expression file error test...' 215*5a6e8488SAndroid Build Coastguard Worker 216*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -f "$testdir/bc/errors/05.txt" 2> "$multiline_expr_out" 217*5a6e8488SAndroid Build Coastguard Worker err="$?" 218*5a6e8488SAndroid Build Coastguard Worker 219*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "multiline comment in expression file error" \ 220*5a6e8488SAndroid Build Coastguard Worker "$multiline_expr_out" "$d" 221*5a6e8488SAndroid Build Coastguard Worker 222*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 223*5a6e8488SAndroid Build Coastguard Worker printf 'Running multiline string expression file test...' 224*5a6e8488SAndroid Build Coastguard Worker 225*5a6e8488SAndroid Build Coastguard Worker # tests/bc/strings.txt happens to have a multiline string in it. 226*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -f "$testdir/bc/strings.txt" > "$multiline_expr_out" 227*5a6e8488SAndroid Build Coastguard Worker err="$?" 228*5a6e8488SAndroid Build Coastguard Worker 229*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "multiline string in expression file" "$testdir/bc/strings_results.txt" \ 230*5a6e8488SAndroid Build Coastguard Worker "$multiline_expr_out" 231*5a6e8488SAndroid Build Coastguard Worker 232*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 233*5a6e8488SAndroid Build Coastguard Worker printf 'Running multiline string expression file error test...' 234*5a6e8488SAndroid Build Coastguard Worker 235*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -f "$testdir/bc/errors/16.txt" 2> "$multiline_expr_out" 236*5a6e8488SAndroid Build Coastguard Worker err="$?" 237*5a6e8488SAndroid Build Coastguard Worker 238*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "multiline string in expression file with backslash error" \ 239*5a6e8488SAndroid Build Coastguard Worker "$multiline_expr_out" "$d" 240*5a6e8488SAndroid Build Coastguard Worker 241*5a6e8488SAndroid Build Coastguard Worker printf 'halt\n' 2> /dev/null | "$exe" "$@" -f "$testdir/bc/errors/04.txt" 2> "$multiline_expr_out" 242*5a6e8488SAndroid Build Coastguard Worker err="$?" 243*5a6e8488SAndroid Build Coastguard Worker 244*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "multiline string in expression file error" \ 245*5a6e8488SAndroid Build Coastguard Worker "$multiline_expr_out" "$d" 246*5a6e8488SAndroid Build Coastguard Worker 247*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 248*5a6e8488SAndroid Build Coastguard Worker 249*5a6e8488SAndroid Build Coastguard Workerelse 250*5a6e8488SAndroid Build Coastguard Worker 251*5a6e8488SAndroid Build Coastguard Worker export DC_ENV_ARGS="'-x'" 252*5a6e8488SAndroid Build Coastguard Worker export DC_EXPR_EXIT="1" 253*5a6e8488SAndroid Build Coastguard Worker 254*5a6e8488SAndroid Build Coastguard Worker printf '4s stuff\n' 2> /dev/null | "$exe" "$@" > /dev/null 255*5a6e8488SAndroid Build Coastguard Worker 256*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" "environment var" 257*5a6e8488SAndroid Build Coastguard Worker 258*5a6e8488SAndroid Build Coastguard Worker "$exe" "$@" -e 4pR > /dev/null 259*5a6e8488SAndroid Build Coastguard Worker 260*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" "environment var" 261*5a6e8488SAndroid Build Coastguard Worker 262*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 263*5a6e8488SAndroid Build Coastguard Worker 264*5a6e8488SAndroid Build Coastguard Worker set +e 265*5a6e8488SAndroid Build Coastguard Worker 266*5a6e8488SAndroid Build Coastguard Worker # dc has an extra test for a case that someone found running this easter.dc 267*5a6e8488SAndroid Build Coastguard Worker # script. It went into an infinite loop, so we want to check that we did not 268*5a6e8488SAndroid Build Coastguard Worker # regress. 269*5a6e8488SAndroid Build Coastguard Worker printf 'three\n' 2> /dev/null | cut -c1-3 > /dev/null 270*5a6e8488SAndroid Build Coastguard Worker err=$? 271*5a6e8488SAndroid Build Coastguard Worker 272*5a6e8488SAndroid Build Coastguard Worker if [ "$err" -eq 0 ]; then 273*5a6e8488SAndroid Build Coastguard Worker 274*5a6e8488SAndroid Build Coastguard Worker printf 'Running dc Easter script...' 275*5a6e8488SAndroid Build Coastguard Worker 276*5a6e8488SAndroid Build Coastguard Worker easter_out="$outputdir/dc_outputs/easter.txt" 277*5a6e8488SAndroid Build Coastguard Worker easter_res="$outputdir/dc_outputs/easter_results.txt" 278*5a6e8488SAndroid Build Coastguard Worker 279*5a6e8488SAndroid Build Coastguard Worker outdir=$(dirname "$easter_out") 280*5a6e8488SAndroid Build Coastguard Worker 281*5a6e8488SAndroid Build Coastguard Worker if [ ! -d "$outdir" ]; then 282*5a6e8488SAndroid Build Coastguard Worker mkdir -p "$outdir" 283*5a6e8488SAndroid Build Coastguard Worker fi 284*5a6e8488SAndroid Build Coastguard Worker 285*5a6e8488SAndroid Build Coastguard Worker printf '4 April 2021\n' > "$easter_res" 286*5a6e8488SAndroid Build Coastguard Worker 287*5a6e8488SAndroid Build Coastguard Worker "$testdir/dc/scripts/easter.sh" "$exe" 2021 "$@" 2> /dev/null | cut -c1-12 > "$easter_out" 288*5a6e8488SAndroid Build Coastguard Worker err="$?" 289*5a6e8488SAndroid Build Coastguard Worker 290*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "Easter script" "$easter_out" "$easter_res" 291*5a6e8488SAndroid Build Coastguard Worker 292*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 293*5a6e8488SAndroid Build Coastguard Worker fi 294*5a6e8488SAndroid Build Coastguard Worker 295*5a6e8488SAndroid Build Coastguard Worker unset DC_ENV_ARGS 296*5a6e8488SAndroid Build Coastguard Worker unset DC_EXPR_EXIT 297*5a6e8488SAndroid Build Coastguard Worker 298*5a6e8488SAndroid Build Coastguard Worker printf 'Running dc extended register command tests...' 299*5a6e8488SAndroid Build Coastguard Worker 300*5a6e8488SAndroid Build Coastguard Worker ext_reg_out="$outputdir/dc_outputs/ext_reg.txt" 301*5a6e8488SAndroid Build Coastguard Worker ext_reg_res="$outputdir/dc_outputs/ext_reg_results.txt" 302*5a6e8488SAndroid Build Coastguard Worker 303*5a6e8488SAndroid Build Coastguard Worker outdir=$(dirname "$ext_reg_out") 304*5a6e8488SAndroid Build Coastguard Worker 305*5a6e8488SAndroid Build Coastguard Worker if [ ! -d "$outdir" ]; then 306*5a6e8488SAndroid Build Coastguard Worker mkdir -p "$outdir" 307*5a6e8488SAndroid Build Coastguard Worker fi 308*5a6e8488SAndroid Build Coastguard Worker 309*5a6e8488SAndroid Build Coastguard Worker printf '0\n' > "$ext_reg_res" 310*5a6e8488SAndroid Build Coastguard Worker 311*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$halt" | "$exe" "$@" -e "gxpR" 2> /dev/null > "$ext_reg_out" 312*5a6e8488SAndroid Build Coastguard Worker err="$?" 313*5a6e8488SAndroid Build Coastguard Worker 314*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "Extended register command" "$ext_reg_out" "$ext_reg_res" 315*5a6e8488SAndroid Build Coastguard Worker 316*5a6e8488SAndroid Build Coastguard Worker printf '1\n' > "$ext_reg_res" 317*5a6e8488SAndroid Build Coastguard Worker 318*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$halt" | "$exe" "$@" -x -e "gxpR" 2> /dev/null > "$ext_reg_out" 319*5a6e8488SAndroid Build Coastguard Worker err="$?" 320*5a6e8488SAndroid Build Coastguard Worker 321*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$err" "Extended register command" "$ext_reg_out" "$ext_reg_res" 322*5a6e8488SAndroid Build Coastguard Worker 323*5a6e8488SAndroid Build Coastguard Worker printf 'pass\n' 324*5a6e8488SAndroid Build Coastguard Worker 325*5a6e8488SAndroid Build Coastguard Workerfi 326*5a6e8488SAndroid Build Coastguard Worker 327*5a6e8488SAndroid Build Coastguard Workerout1="$outputdir/${d}_outputs/${d}_other.txt" 328*5a6e8488SAndroid Build Coastguard Workerout2="$outputdir/${d}_outputs/${d}_other_test.txt" 329*5a6e8488SAndroid Build Coastguard Worker 330*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s line length tests...' "$d" 331*5a6e8488SAndroid Build Coastguard Worker 332*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$numres" > "$out1" 333*5a6e8488SAndroid Build Coastguard Worker 334*5a6e8488SAndroid Build Coastguard Workerexport "$line_var"=80 335*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$num" 2> /dev/null | "$exe" "$@" > "$out2" 336*5a6e8488SAndroid Build Coastguard Worker 337*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "line length" "$out1" "$out2" 338*5a6e8488SAndroid Build Coastguard Worker 339*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$num70" > "$out1" 340*5a6e8488SAndroid Build Coastguard Worker 341*5a6e8488SAndroid Build Coastguard Workerexport "$line_var"=2147483647 342*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$num" 2> /dev/null | "$exe" "$@" > "$out2" 343*5a6e8488SAndroid Build Coastguard Worker 344*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "line length 2" "$out1" "$out2" 345*5a6e8488SAndroid Build Coastguard Worker 346*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$num2" > "$out1" 347*5a6e8488SAndroid Build Coastguard Worker 348*5a6e8488SAndroid Build Coastguard Workerexport "$line_var"=62 349*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$num" 2> /dev/null | "$exe" "$@" -L > "$out2" 350*5a6e8488SAndroid Build Coastguard Worker 351*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "line length 3" "$out1" "$out2" 352*5a6e8488SAndroid Build Coastguard Worker 353*5a6e8488SAndroid Build Coastguard Workerprintf '0\n' > "$out1" 354*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$lltest" 2> /dev/null | "$exe" "$@" -L > "$out2" 355*5a6e8488SAndroid Build Coastguard Worker 356*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "line length 3" "$out1" "$out2" 357*5a6e8488SAndroid Build Coastguard Worker 358*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 359*5a6e8488SAndroid Build Coastguard Worker 360*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$numres" > "$out1" 361*5a6e8488SAndroid Build Coastguard Workerexport "$line_var"=2147483647 362*5a6e8488SAndroid Build Coastguard Worker 363*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s arg tests...' "$d" 364*5a6e8488SAndroid Build Coastguard Worker 365*5a6e8488SAndroid Build Coastguard Workerf="$testdir/$d/add.txt" 366*5a6e8488SAndroid Build Coastguard Workerexprs=$(cat "$f") 367*5a6e8488SAndroid Build Coastguard Workerresults=$(cat "$testdir/$d/add_results.txt") 368*5a6e8488SAndroid Build Coastguard Worker 369*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n%s\n%s\n%s\n' "$results" "$results" "$results" "$results" > "$out1" 370*5a6e8488SAndroid Build Coastguard Worker 371*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" -e "$exprs" -f "$f" --expression "$exprs" --file "$f" -e "$halt" > "$out2" 372*5a6e8488SAndroid Build Coastguard Worker 373*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "arg" "$out1" "$out2" 374*5a6e8488SAndroid Build Coastguard Worker 375*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -- "$f" "$f" "$f" "$f" > "$out2" 376*5a6e8488SAndroid Build Coastguard Worker 377*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "arg" "$out1" "$out2" 378*5a6e8488SAndroid Build Coastguard Worker 379*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 380*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -i > /dev/null 2>&1 381*5a6e8488SAndroid Build Coastguard Workerfi 382*5a6e8488SAndroid Build Coastguard Worker 383*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -h > /dev/null 384*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "arg" 385*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -P > /dev/null 386*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "arg" 387*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -R > /dev/null 388*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "arg" 389*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -v > /dev/null 390*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "arg" 391*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -V > /dev/null 392*5a6e8488SAndroid Build Coastguard Workerchecktest_retcode "$d" "$?" "arg" 393*5a6e8488SAndroid Build Coastguard Worker 394*5a6e8488SAndroid Build Coastguard Workerout=$(printf '0.1\n-0.1\n1.1\n-1.1\n0.1\n-0.1\n') 395*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$out" > "$out1" 396*5a6e8488SAndroid Build Coastguard Worker 397*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 398*5a6e8488SAndroid Build Coastguard Worker data=$(printf '0.1\n-0.1\n1.1\n-1.1\n.1\n-.1\n') 399*5a6e8488SAndroid Build Coastguard Workerelse 400*5a6e8488SAndroid Build Coastguard Worker data=$(printf '0.1pR\n_0.1pR\n1.1pR\n_1.1pR\n.1pR\n_.1pR\n') 401*5a6e8488SAndroid Build Coastguard Workerfi 402*5a6e8488SAndroid Build Coastguard Worker 403*5a6e8488SAndroid Build Coastguard Workerprintf '%s\n' "$data" 2> /dev/null | "$exe" "$@" -z > "$out2" 404*5a6e8488SAndroid Build Coastguard Workerchecktest "$d" "$?" "leading zero" "$out1" "$out2" 405*5a6e8488SAndroid Build Coastguard Worker 406*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ] && [ "$extra_math" -ne 0 ]; then 407*5a6e8488SAndroid Build Coastguard Worker 408*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$halt" 2> /dev/null | "$exe" "$@" -lz "$testdir/bc/leadingzero.txt" > "$out2" 409*5a6e8488SAndroid Build Coastguard Worker 410*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "leading zero script" "$testdir/bc/leadingzero_results.txt" "$out2" 411*5a6e8488SAndroid Build Coastguard Worker 412*5a6e8488SAndroid Build Coastguard Workerfi 413*5a6e8488SAndroid Build Coastguard Worker 414*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" -f "saotehasotnehasthistohntnsahxstnhalcrgxgrlpyasxtsaosysxsatnhoy.txt" > /dev/null 2> "$out2" 415*5a6e8488SAndroid Build Coastguard Workererr="$?" 416*5a6e8488SAndroid Build Coastguard Worker 417*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "invalid file argument" "$out2" "$d" 418*5a6e8488SAndroid Build Coastguard Worker 419*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "-$opt" -e "$exprs" > /dev/null 2> "$out2" 420*5a6e8488SAndroid Build Coastguard Workererr="$?" 421*5a6e8488SAndroid Build Coastguard Worker 422*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "invalid option argument" "$out2" "$d" 423*5a6e8488SAndroid Build Coastguard Worker 424*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "--$lopt" -e "$exprs" > /dev/null 2> "$out2" 425*5a6e8488SAndroid Build Coastguard Workererr="$?" 426*5a6e8488SAndroid Build Coastguard Worker 427*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "invalid long option argument" "$out2" "$d" 428*5a6e8488SAndroid Build Coastguard Worker 429*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "-u" -e "$exprs" > /dev/null 2> "$out2" 430*5a6e8488SAndroid Build Coastguard Workererr="$?" 431*5a6e8488SAndroid Build Coastguard Worker 432*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "unrecognized option argument" "$out2" "$d" 433*5a6e8488SAndroid Build Coastguard Worker 434*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "--uniform" -e "$exprs" > /dev/null 2> "$out2" 435*5a6e8488SAndroid Build Coastguard Workererr="$?" 436*5a6e8488SAndroid Build Coastguard Worker 437*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "unrecognized long option argument" "$out2" "$d" 438*5a6e8488SAndroid Build Coastguard Worker 439*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" -f > /dev/null 2> "$out2" 440*5a6e8488SAndroid Build Coastguard Workererr="$?" 441*5a6e8488SAndroid Build Coastguard Worker 442*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "missing required argument to short option" "$out2" "$d" 443*5a6e8488SAndroid Build Coastguard Worker 444*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" --file > /dev/null 2> "$out2" 445*5a6e8488SAndroid Build Coastguard Workererr="$?" 446*5a6e8488SAndroid Build Coastguard Worker 447*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "missing required argument to long option" "$out2" "$d" 448*5a6e8488SAndroid Build Coastguard Worker 449*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" --version=5 > /dev/null 2> "$out2" 450*5a6e8488SAndroid Build Coastguard Workererr="$?" 451*5a6e8488SAndroid Build Coastguard Worker 452*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "given argument to long option with no argument" "$out2" "$d" 453*5a6e8488SAndroid Build Coastguard Worker 454*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" -: > /dev/null 2> "$out2" 455*5a6e8488SAndroid Build Coastguard Workererr="$?" 456*5a6e8488SAndroid Build Coastguard Worker 457*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "colon short option" "$out2" "$d" 458*5a6e8488SAndroid Build Coastguard Worker 459*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" --: > /dev/null 2> "$out2" 460*5a6e8488SAndroid Build Coastguard Workererr="$?" 461*5a6e8488SAndroid Build Coastguard Worker 462*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "colon long option" "$out2" "$d" 463*5a6e8488SAndroid Build Coastguard Worker 464*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 465*5a6e8488SAndroid Build Coastguard Worker 466*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s builtin variable arg tests...' "$d" 467*5a6e8488SAndroid Build Coastguard Worker 468*5a6e8488SAndroid Build Coastguard Workerif [ "$extra_math" -ne 0 ]; then 469*5a6e8488SAndroid Build Coastguard Worker 470*5a6e8488SAndroid Build Coastguard Worker out=$(printf '14\n15\n16\n17.25\n') 471*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$out" > "$out1" 472*5a6e8488SAndroid Build Coastguard Worker 473*5a6e8488SAndroid Build Coastguard Worker if [ "$d" = "bc" ]; then 474*5a6e8488SAndroid Build Coastguard Worker data=$(printf 's=scale;i=ibase;o=obase;t=seed@2;ibase=A;obase=A;s;i;o;t;') 475*5a6e8488SAndroid Build Coastguard Worker else 476*5a6e8488SAndroid Build Coastguard Worker data=$(printf 'J2@OIKAiAopRpRpRpR') 477*5a6e8488SAndroid Build Coastguard Worker fi 478*5a6e8488SAndroid Build Coastguard Worker 479*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$data" 2> /dev/null | "$exe" "$@" -S14 -I15 -O16 -E17.25 > "$out2" 480*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable args" "$out1" "$out2" 481*5a6e8488SAndroid Build Coastguard Worker 482*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$data" 2> /dev/null | "$exe" "$@" --scale=14 --ibase=15 --obase=16 --seed=17.25 > "$out2" 483*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable long args" "$out1" "$out2" 484*5a6e8488SAndroid Build Coastguard Worker 485*5a6e8488SAndroid Build Coastguard Workerelse 486*5a6e8488SAndroid Build Coastguard Worker 487*5a6e8488SAndroid Build Coastguard Worker out=$(printf '14\n15\n16\n') 488*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$out" > "$out1" 489*5a6e8488SAndroid Build Coastguard Worker 490*5a6e8488SAndroid Build Coastguard Worker if [ "$d" = "bc" ]; then 491*5a6e8488SAndroid Build Coastguard Worker data=$(printf 's=scale;i=ibase;o=obase;ibase=A;obase=A;s;i;o;') 492*5a6e8488SAndroid Build Coastguard Worker else 493*5a6e8488SAndroid Build Coastguard Worker data=$(printf 'OIKAiAopRpRpR') 494*5a6e8488SAndroid Build Coastguard Worker fi 495*5a6e8488SAndroid Build Coastguard Worker 496*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$data" 2> /dev/null | "$exe" "$@" -S14 -I15 -O16 > "$out2" 497*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable args" "$out1" "$out2" 498*5a6e8488SAndroid Build Coastguard Worker 499*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$data" 2> /dev/null | "$exe" "$@" --scale=14 --ibase=15 --obase=16 > "$out2" 500*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable long args" "$out1" "$out2" 501*5a6e8488SAndroid Build Coastguard Worker 502*5a6e8488SAndroid Build Coastguard Workerfi 503*5a6e8488SAndroid Build Coastguard Worker 504*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 505*5a6e8488SAndroid Build Coastguard Worker 506*5a6e8488SAndroid Build Coastguard Worker out=$(printf '100\n') 507*5a6e8488SAndroid Build Coastguard Worker printf '%s\n' "$out" > "$out1" 508*5a6e8488SAndroid Build Coastguard Worker 509*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" -S100 -l > "$out2" 510*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable args with math lib" "$out1" "$out2" 511*5a6e8488SAndroid Build Coastguard Worker 512*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" --scale=100 --mathlib > "$out2" 513*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable long args with math lib" "$out1" "$out2" 514*5a6e8488SAndroid Build Coastguard Worker 515*5a6e8488SAndroid Build Coastguard Worker export BC_ENV_ARGS="-l" 516*5a6e8488SAndroid Build Coastguard Worker 517*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" -S100 > "$out2" 518*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable args with math lib env arg" "$out1" "$out2" 519*5a6e8488SAndroid Build Coastguard Worker 520*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" --scale=100 > "$out2" 521*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable long args with math lib env arg" "$out1" "$out2" 522*5a6e8488SAndroid Build Coastguard Worker 523*5a6e8488SAndroid Build Coastguard Worker export BC_ENV_ARGS="-S100" 524*5a6e8488SAndroid Build Coastguard Worker 525*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" -l > "$out2" 526*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable args with math lib arg" "$out1" "$out2" 527*5a6e8488SAndroid Build Coastguard Worker 528*5a6e8488SAndroid Build Coastguard Worker export BC_ENV_ARGS="--scale=100" 529*5a6e8488SAndroid Build Coastguard Worker 530*5a6e8488SAndroid Build Coastguard Worker printf 'scale\n' 2> /dev/null | "$exe" "$@" -l > "$out2" 531*5a6e8488SAndroid Build Coastguard Worker checktest "$d" "$?" "builtin variable long args with math lib arg" "$out1" "$out2" 532*5a6e8488SAndroid Build Coastguard Worker 533*5a6e8488SAndroid Build Coastguard Workerfi 534*5a6e8488SAndroid Build Coastguard Worker 535*5a6e8488SAndroid Build Coastguard Workerprintf 'scale\n' 2> /dev/null | "$exe" "$@" --scale=18923c.rlg > /dev/null 2> "$out2" 536*5a6e8488SAndroid Build Coastguard Workererr="$?" 537*5a6e8488SAndroid Build Coastguard Worker 538*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "invalid command-line arg for builtin variable" "$out2" "$d" 539*5a6e8488SAndroid Build Coastguard Worker 540*5a6e8488SAndroid Build Coastguard Workerif [ "$extra_math" -ne 0 ]; then 541*5a6e8488SAndroid Build Coastguard Worker 542*5a6e8488SAndroid Build Coastguard Worker printf 'seed\n' 2> /dev/null | "$exe" "$@" --seed=18923c.rlg > /dev/null 2> "$out2" 543*5a6e8488SAndroid Build Coastguard Worker err="$?" 544*5a6e8488SAndroid Build Coastguard Worker 545*5a6e8488SAndroid Build Coastguard Worker checkerrtest "$d" "$err" "invalid command-line arg for seed" "$out2" "$d" 546*5a6e8488SAndroid Build Coastguard Worker 547*5a6e8488SAndroid Build Coastguard Workerfi 548*5a6e8488SAndroid Build Coastguard Worker 549*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 550*5a6e8488SAndroid Build Coastguard Worker 551*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s directory test...' "$d" 552*5a6e8488SAndroid Build Coastguard Worker 553*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "$testdir" > /dev/null 2> "$out2" 554*5a6e8488SAndroid Build Coastguard Workererr="$?" 555*5a6e8488SAndroid Build Coastguard Worker 556*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "directory" "$out2" "$d" 557*5a6e8488SAndroid Build Coastguard Worker 558*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 559*5a6e8488SAndroid Build Coastguard Worker 560*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s binary file test...' "$d" 561*5a6e8488SAndroid Build Coastguard Worker 562*5a6e8488SAndroid Build Coastguard Workerbin="/bin/sh" 563*5a6e8488SAndroid Build Coastguard Worker 564*5a6e8488SAndroid Build Coastguard Worker"$exe" "$@" "$bin" > /dev/null 2> "$out2" 565*5a6e8488SAndroid Build Coastguard Workererr="$?" 566*5a6e8488SAndroid Build Coastguard Worker 567*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "binary file" "$out2" "$d" 568*5a6e8488SAndroid Build Coastguard Worker 569*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 570*5a6e8488SAndroid Build Coastguard Worker 571*5a6e8488SAndroid Build Coastguard Workerprintf 'Running %s binary stdin test...' "$d" 572*5a6e8488SAndroid Build Coastguard Worker 573*5a6e8488SAndroid Build Coastguard Workercat "$bin" 2> /dev/null | "$exe" "$@" > /dev/null 2> "$out2" 574*5a6e8488SAndroid Build Coastguard Workererr="$?" 575*5a6e8488SAndroid Build Coastguard Worker 576*5a6e8488SAndroid Build Coastguard Workercheckerrtest "$d" "$err" "binary stdin" "$out2" "$d" 577*5a6e8488SAndroid Build Coastguard Worker 578*5a6e8488SAndroid Build Coastguard Workerprintf 'pass\n' 579*5a6e8488SAndroid Build Coastguard Worker 580*5a6e8488SAndroid Build Coastguard Workerif [ "$d" = "bc" ]; then 581*5a6e8488SAndroid Build Coastguard Worker 582*5a6e8488SAndroid Build Coastguard Worker printf 'Running %s limits tests...' "$d" 583*5a6e8488SAndroid Build Coastguard Worker printf 'limits\n' 2> /dev/null | "$exe" "$@" /dev/null > "$out2" 2>&1 584*5a6e8488SAndroid Build Coastguard Worker 585*5a6e8488SAndroid Build Coastguard Worker checktest_retcode "$d" "$?" "limits" 586*5a6e8488SAndroid Build Coastguard Worker 587*5a6e8488SAndroid Build Coastguard Worker if [ ! -s "$out2" ]; then 588*5a6e8488SAndroid Build Coastguard Worker err_exit "$d did not produce output on the limits test" 1 589*5a6e8488SAndroid Build Coastguard Worker fi 590*5a6e8488SAndroid Build Coastguard Worker 591*5a6e8488SAndroid Build Coastguard Worker exec printf 'pass\n' 592*5a6e8488SAndroid Build Coastguard Worker 593*5a6e8488SAndroid Build Coastguard Workerfi 594