| #!/usr/bin/env bash |
| |
| # This script runs a given executable using qemu, and compare its standard |
| # output with an expected plugin output. |
| # Each line of output is searched (as a regexp) in the expected plugin output. |
| |
| set -euo pipefail |
| |
| die() |
| { |
| echo "$@" 1>&2 |
| exit 1 |
| } |
| |
| check() |
| { |
| file=$1 |
| pattern=$2 |
| grep "$pattern" "$file" > /dev/null || die "\"$pattern\" not found in $file" |
| } |
| |
| [ $# -eq 3 ] || die "usage: qemu_bin exe plugin_out_file" |
| |
| qemu_bin=$1; shift |
| exe=$1;shift |
| plugin_out=$1; shift |
| |
| expected() |
| { |
| $qemu_bin $exe || |
| die "running $exe failed" |
| } |
| |
| expected | while read line; do |
| check "$plugin_out" "$line" |
| done |