From ffc12d2070b3b2a153e1d86cda9201a75050b9c6 Mon Sep 17 00:00:00 2001 From: Pavel Rehak Date: Sat, 26 May 2018 14:21:21 +0200 Subject: [PATCH 1/3] Test case - array. --- t/Makefile.am | 2 +- t/t0008-array.sh | 36 ++++++++++++++++++++++++++++++++++++ t/t0008/array.ini | 6 ++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100755 t/t0008-array.sh create mode 100644 t/t0008/array.ini diff --git a/t/Makefile.am b/t/Makefile.am index 165f303..603ac6b 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -1,4 +1,4 @@ TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ $(top_srcdir)/build-aux/tap-driver.sh -TESTS = t0001-whitespace.sh t0002-invalid.sh t0003-sections.sh t0004-comments.sh t0005-new_var.sh t0006-duplication.sh t0007-unwanted_file.sh +TESTS = t0001-whitespace.sh t0002-invalid.sh t0003-sections.sh t0004-comments.sh t0005-new_var.sh t0006-duplication.sh t0007-unwanted_file.sh t0008-array.sh EXTRA_DIST = $(TESTS) diff --git a/t/t0008-array.sh b/t/t0008-array.sh new file mode 100755 index 0000000..1339893 --- /dev/null +++ b/t/t0008-array.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +test_description="check array" + +. setup.sh + +DIR_TEST=$SHARNESS_TEST_DIRECTORY/t0008 + +test_array() +{ +export COVERAGE_NAME=array_parser +cp ../.simplecov . + +# Parse sec1 array +cfg_parser $DIR_TEST/array.ini +cfg_section_sec1 +[ $var1 = foo ] || return 1 +[ ${var1[1]} = bar ] || return 1 + +# Update sec2 var +var2=foo_new +cfg_update sec2 var2 +cfg_writer > array.out + +# Parse sec1 array again +cfg_parser array.out +cfg_section_sec1 +[ $var1 = foo ] || return 1 +[ ${var1[1]} = bar ] || return 1 +} + +test_expect_success "Parse array" " + test_expect_code 0 test_array +" + +test_done diff --git a/t/t0008/array.ini b/t/t0008/array.ini new file mode 100644 index 0000000..0279c59 --- /dev/null +++ b/t/t0008/array.ini @@ -0,0 +1,6 @@ +[sec1] +var1=foo bar +var2=foo2 +[sec2] +var1=foo bar +var2=foo2 From dcbd07d911e1184361acfd96e6c75069c2aabbf6 Mon Sep 17 00:00:00 2001 From: Alberto Fanjul Date: Fri, 28 Aug 2020 21:10:25 +0200 Subject: [PATCH 2/3] protect variables from fail on whitespace --- t/t0008-array.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/t/t0008-array.sh b/t/t0008-array.sh index 1339893..91cf169 100755 --- a/t/t0008-array.sh +++ b/t/t0008-array.sh @@ -14,8 +14,9 @@ cp ../.simplecov . # Parse sec1 array cfg_parser $DIR_TEST/array.ini cfg_section_sec1 -[ $var1 = foo ] || return 1 -[ ${var1[1]} = bar ] || return 1 +echo "$var1" +[ "$var1" = foo ] || return 1 +[ "${var1[1]}" = bar ] || return 2 # Update sec2 var var2=foo_new @@ -25,8 +26,9 @@ cfg_writer > array.out # Parse sec1 array again cfg_parser array.out cfg_section_sec1 -[ $var1 = foo ] || return 1 -[ ${var1[1]} = bar ] || return 1 +echo "$var1" +[ "$var1" = foo ] || return 3 +[ "${var1[1]}" = bar ] || return 4 } test_expect_success "Parse array" " From 54d57f6941b61764639084ebae9e513df153038b Mon Sep 17 00:00:00 2001 From: Alberto Fanjul Date: Fri, 28 Aug 2020 21:10:49 +0200 Subject: [PATCH 3/3] Avoid to wrap values in commas --- bash-ini-parser | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bash-ini-parser b/bash-ini-parser index 3daf302..9e7f10a 100755 --- a/bash-ini-parser +++ b/bash-ini-parser @@ -129,10 +129,10 @@ function cfg_writer { eval 'local length=${#'$var'[*]}' # test if var is an array if [ $length == 1 ] then - echo $var=\"${!var}\" #output var + echo $var=${!var} #output var else echo ";$var is an array" # add comment denoting var is an array - eval 'echo $var=\"${'$var'[*]}\"' # output array var + eval 'echo $var=${'$var'[*]}' # output array var fi done done