Merge pull request #7763 from edsantiago/bats_better_parse_table
system tests: helpers: safer parse_table
This commit is contained in:
commit
08cc91926d
|
|
@ -19,8 +19,8 @@ graphRoot:
|
||||||
graphStatus:
|
graphStatus:
|
||||||
imageStore:\\\s\\\+number: 1
|
imageStore:\\\s\\\+number: 1
|
||||||
runRoot:
|
runRoot:
|
||||||
cgroupManager:
|
cgroupManager: \\\(systemd\\\|cgroupfs\\\)
|
||||||
cgroupVersion: v
|
cgroupVersion: v[12]
|
||||||
"
|
"
|
||||||
while read expect; do
|
while read expect; do
|
||||||
is "$output" ".*$expect" "output includes '$expect'"
|
is "$output" ".*$expect" "output includes '$expect'"
|
||||||
|
|
@ -36,6 +36,8 @@ cgroupVersion: v
|
||||||
tests="
|
tests="
|
||||||
host.buildahVersion | [0-9.]
|
host.buildahVersion | [0-9.]
|
||||||
host.conmon.path | $expr_path
|
host.conmon.path | $expr_path
|
||||||
|
host.cgroupManager | \\\(systemd\\\|cgroupfs\\\)
|
||||||
|
host.cgroupVersion | v[12]
|
||||||
host.ociRuntime.path | $expr_path
|
host.ociRuntime.path | $expr_path
|
||||||
store.configFile | $expr_path
|
store.configFile | $expr_path
|
||||||
store.graphDriverName | [a-z0-9]\\\+\\\$
|
store.graphDriverName | [a-z0-9]\\\+\\\$
|
||||||
|
|
|
||||||
|
|
@ -376,7 +376,12 @@ function parse_table() {
|
||||||
while read col; do
|
while read col; do
|
||||||
dprint "col=<<$col>>"
|
dprint "col=<<$col>>"
|
||||||
row+=("$col")
|
row+=("$col")
|
||||||
done < <(echo "$line" | tr '|' '\012' | sed -e 's/^ *//' -e 's/\\/\\\\/g')
|
done < <(echo "$line" | sed -E -e 's/(^|\s)\|(\s|$)/\n /g' | sed -e 's/^ *//' -e 's/\\/\\\\/g')
|
||||||
|
# the above seds:
|
||||||
|
# 1) Convert '|' to newline, but only if bracketed by spaces or
|
||||||
|
# at beginning/end of line (this allows 'foo|bar' in tests);
|
||||||
|
# 2) then remove leading whitespace;
|
||||||
|
# 3) then double-escape all backslashes
|
||||||
|
|
||||||
printf "%q " "${row[@]}"
|
printf "%q " "${row[@]}"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ while read x y z; do
|
||||||
check_result "$x" "''" "empty string - left-hand"
|
check_result "$x" "''" "empty string - left-hand"
|
||||||
check_result "$y" "''" "empty string - middle"
|
check_result "$y" "''" "empty string - middle"
|
||||||
check_result "$z" "''" "empty string - right"
|
check_result "$z" "''" "empty string - right"
|
||||||
done < <(parse_table " | |")
|
done < <(parse_table " | |")
|
||||||
|
|
||||||
# Quotes
|
# Quotes
|
||||||
while read x y z;do
|
while read x y z;do
|
||||||
|
|
@ -108,6 +108,13 @@ while read x y z;do
|
||||||
check_result "$3" "g" "double quotes - token split - 3"
|
check_result "$3" "g" "double quotes - token split - 3"
|
||||||
done < <(parse_table "a 'b c' | d \"e f\" g | h")
|
done < <(parse_table "a 'b c' | d \"e f\" g | h")
|
||||||
|
|
||||||
|
# Split on '|' only when bracketed by spaces or at beginning/end of line
|
||||||
|
while read x y z;do
|
||||||
|
check_result "$x" "|x" "pipe in strings - pipe at start"
|
||||||
|
check_result "$y" "y|y1" "pipe in strings - pipe in middle"
|
||||||
|
check_result "$z" "z|" "pipe in strings - pipe at end"
|
||||||
|
done < <(parse_table "|x | y|y1 | z|")
|
||||||
|
|
||||||
# END test the parse_table helper
|
# END test the parse_table helper
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# BEGIN dprint
|
# BEGIN dprint
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue