1
0
mirror of https://github.com/sstephenson/bats.git synced 2024-09-29 20:48:27 +02:00

exec-test: Use printf -v in bats_extract_line

Also replaces `sed` invocation with a `while` loop, saving a subprocess.
This commit is contained in:
Mike Bland 2017-02-15 10:26:28 -05:00
parent 698fa766a3
commit d294689bdd
No known key found for this signature in database
GPG Key ID: 5121C73A6E07384B

View File

@ -157,13 +157,12 @@ bats_print_failed_command() {
local status="$2"
local filename
local lineno
local failed_line
local failed_command
bats_frame_filename "$frame" 'filename'
bats_frame_lineno "$frame" 'lineno'
local failed_line="$(bats_extract_line "$filename" "$lineno")"
local failed_command
bats_extract_line "$filename" "$lineno" 'failed_line'
bats_strip_string "$failed_line" 'failed_command'
printf '%s' "# \`${failed_command}' "
@ -194,9 +193,15 @@ bats_frame_filename() {
}
bats_extract_line() {
local filename="$1"
local lineno="$2"
sed -n "${lineno}p" "$filename"
local __bats_extract_line_line
local __bats_extract_line_index='0'
while IFS= read -r __bats_extract_line_line; do
if [[ "$((++__bats_extract_line_index))" -eq "$2" ]]; then
printf -v "$3" '%s' "${__bats_extract_line_line%$'\r'}"
break
fi
done <"$1"
}
bats_strip_string() {