summaryrefslogtreecommitdiff
path: root/test/system/helpers.bash
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2020-09-23 15:16:11 -0600
committerEd Santiago <santiago@redhat.com>2020-09-23 16:38:05 -0600
commite62848752561640ecad72901938d0c0c5c17ed9a (patch)
tree1499488ad50ee978d587b9096c5eccf63f642a64 /test/system/helpers.bash
parenta6b300ef7ee19da0c590af9bbcd1a35de7fa8c84 (diff)
downloadpodman-e62848752561640ecad72901938d0c0c5c17ed9a.tar.gz
podman-e62848752561640ecad72901938d0c0c5c17ed9a.tar.bz2
podman-e62848752561640ecad72901938d0c0c5c17ed9a.zip
system tests: helpers: safer parse_table
The parse_table() helper has until now dumbly split lines on every single '|' character. This prevents us from running simple tests such as 'cgroupManager: (systemd|cgroupfs)'. We now use an ugly but robust sed expression to split on '|' but *only* when surrounded by spaces and/or beginning or end of line. This is safe because, for readability, all tables already keep the '|' symbols well separated from table content. Add tests. And, the whole reason behind this, add an actual real test for cgroupManager and cgroupVersion. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test/system/helpers.bash')
-rw-r--r--test/system/helpers.bash7
1 files changed, 6 insertions, 1 deletions
diff --git a/test/system/helpers.bash b/test/system/helpers.bash
index 514ba249e..112b73962 100644
--- a/test/system/helpers.bash
+++ b/test/system/helpers.bash
@@ -376,7 +376,12 @@ function parse_table() {
while read col; do
dprint "col=<<$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 "\n"