#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
WORK="$ROOT/outputs/linux/linux-script"
mkdir -p -- "$WORK"
sum_values() {
  local input_file=$1
  [[ -r "$input_file" ]] || { printf 'unreadable input\n' >&2; return 2; }
  awk 'BEGIN {total=0; bad=0} /^[0-9]+$/ {total+=$0; next}
    {print "invalid integer at line " NR > "/dev/stderr"; bad=1}
    END {if (bad) exit 2; print total}' "$input_file"
}
printf '%s\n' 1 2 3 > "$WORK/valid.txt"
sum_values "$WORK/valid.txt" > "$WORK/result.txt"
printf 'sum: '; cat "$WORK/result.txt"
test "$(cat "$WORK/result.txt")" = 6
printf '%s\n' 1 bad > "$WORK/invalid.txt"
if sum_values "$WORK/invalid.txt" > "$WORK/rejected.txt" 2> "$WORK/error.log"; then
  printf 'validation unexpectedly accepted bad data\n' >&2; exit 1
else
  printf '%s\n' 'bad data rejected as expected'
  cat "$WORK/error.log"
fi
