Loading .gitlab-ci.yml +8 −2 Original line number Diff line number Diff line stages: - test tests: image: ubuntu:16.04 tests-bash-4.3: image: bash:4.3 script: - ./test.sh stage: test tests-bash-4.4: image: bash:4.4 script: - ./test.sh stage: test bashopts.sh +177 −163 File changed.Preview size limit exceeded, changes collapsed. Show changes test.sh +12 −40 Original line number Diff line number Diff line #!/bin/bash -e #!/usr/bin/env bash # Copyright 2017-2018 Emeric Verschuur <emeric@mbedsys.org> # # Licensed to the Apache Software Foundation (ASF) under one Loading @@ -18,6 +18,8 @@ # specific language governing permissions and limitations # under the License. set -e . bashopts.sh trap 'bashopts_exit_handle' ERR Loading Loading @@ -47,14 +49,14 @@ _test_case_2() { bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc bashopts_declare -n base_path -l base -o b -d "Base path" -t string -v "/opt/test" -i -s bashopts_declare -n base_path -l base -o b -d "Base path" -t string -v "/opt/test" -i bashopts_declare -n config_path -l config -o c -d "Configuration path" -t string -x "\$base_path/myconf.cfg" -s bashopts_parse_args --base /tmp -n bashopts_process_opts req_test_eq "$config_path" "/tmp/myconf.cfg" req_test_eq "$(cat /tmp/bashopts_testrc)" "base_path=/tmp" req_test_eq "$(cat /tmp/bashopts_testrc)" "config_path=/tmp/myconf.cfg" } _test_case_3() { Loading Loading @@ -155,7 +157,7 @@ _test_case_10() { bashopts_declare -n simple_val -s -l value -d "Simple value" -t string -v 'val' bashopts_parse_args --value=test req_test_eq "$(bashopts_process_opts 2>&1)" "[WARN] No settings file specified" req_test_eq "$(bashopts_process_opts 2>&1)" "[WARN] Option simple_val: No settings file specified" } _test_case_11() { Loading @@ -164,7 +166,7 @@ _test_case_11() { bashopts_declare -n simple_val -s -l value -d "Simple value" -t string -v 'val' bashopts_parse_args --value=test req_test_eq "$(bashopts_process_opts 2>&1 | grep 'WARN')" "[WARN] Please check the settings file" req_test_eq "$(bashopts_process_opts 2>&1 | grep 'WARN')" "[WARN] Option simple_val: Please check the settings file" } _test_case_12() { Loading Loading @@ -235,37 +237,6 @@ _test_case_15() { req_test_eq "$(cat /tmp/bashopts_testrc)" 'array_value=([0]="value 1" [1]="value 3")' } _test_case_16() { rm -f /tmp/bashopts_testrc bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc bashopts_declare -n array_value -l value -m add -d "Array value" -s -i -t string -x '("value 1" "value 2")' bashopts_parse_args --value "" bashopts_process_opts > /dev/null <<< '( "value 1" "value 2" )' req_test_eq "${#array_value[@]}" "2" req_test_eq "${array_value[0]}" "value 1" req_test_eq "${array_value[1]}" "value 2" if [ -f /tmp/bashopts_testrc ]; then echo "file /tmp/bashopts_testrc should not be present" exit 1 fi } _test_case_17() { rm -f /tmp/bashopts_testrc bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc -p bashopts_declare -n a_value -l value -d "A value" -s -i -t string -v "default value" bashopts_parse_args bashopts_process_opts > /dev/null <<< "" req_test_eq "$a_value" "default value" req_test_eq "$(cat /tmp/bashopts_testrc)" "a_value='default value'" } _test_case_18() { bashopts_setup -n "$0" -d "Test case $0" Loading Loading @@ -310,7 +281,7 @@ _test_case_20() { req_test_eq "$(echo "$(bashopts_process_option -n value -k is_eq_to_null -r 2>&1 > /dev/null <<< "na")" \ | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] Not equal to NULL' req_test_eq "$(echo "$(bashopts_process_option -n value -k is_eq_to_null -r 2>&1 > /dev/null <<< "()")" \ | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] At least one value required' | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] Option value: At least one value required' bashopts_process_option -n value -k is_eq_to_null -r > /dev/null 2>&1 <<< "NULL" } Loading @@ -322,7 +293,7 @@ _test_case_21() { bashopts_parse_args -n bashopts_process_opts req_test_eq "$(echo "$(bashopts_process_option -n value -k is_not_empty -r 2>&1 > /dev/null)" \ | grep '^\[ERR' | head -n 1)" '[ERRO] At least one value required' | grep '^\[ERR' | head -n 1)" '[ERRO] Option value: At least one value required' } _test_case_22() { Loading Loading @@ -351,9 +322,10 @@ _test_case_24() { bashopts_parse_args bashopts_process_opts # NOTE: Fix answer again after a is_eq_to_null check failure req_test_eq "$( (bashopts_process_option -n value -k is_eq_to_null -r 2>&1 <<< "NUL" \ || true) | grep -E '^* A str value$' | wc -l )" "2" || true) | grep '^* A str value$' | wc -l )" "2" } _test_case_25() { Loading @@ -362,7 +334,7 @@ _test_case_25() { bashopts_declare -n value -l value -d "A str value" -t string -r req_test_eq "$( (bashopts_process_opts 2>&1 <<< "" \ || true) | grep -E '^* A str value$' | wc -l )" "2" || true) | grep '^* A str value$' | wc -l )" "2" } _test_case_26() { Loading Loading
.gitlab-ci.yml +8 −2 Original line number Diff line number Diff line stages: - test tests: image: ubuntu:16.04 tests-bash-4.3: image: bash:4.3 script: - ./test.sh stage: test tests-bash-4.4: image: bash:4.4 script: - ./test.sh stage: test
test.sh +12 −40 Original line number Diff line number Diff line #!/bin/bash -e #!/usr/bin/env bash # Copyright 2017-2018 Emeric Verschuur <emeric@mbedsys.org> # # Licensed to the Apache Software Foundation (ASF) under one Loading @@ -18,6 +18,8 @@ # specific language governing permissions and limitations # under the License. set -e . bashopts.sh trap 'bashopts_exit_handle' ERR Loading Loading @@ -47,14 +49,14 @@ _test_case_2() { bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc bashopts_declare -n base_path -l base -o b -d "Base path" -t string -v "/opt/test" -i -s bashopts_declare -n base_path -l base -o b -d "Base path" -t string -v "/opt/test" -i bashopts_declare -n config_path -l config -o c -d "Configuration path" -t string -x "\$base_path/myconf.cfg" -s bashopts_parse_args --base /tmp -n bashopts_process_opts req_test_eq "$config_path" "/tmp/myconf.cfg" req_test_eq "$(cat /tmp/bashopts_testrc)" "base_path=/tmp" req_test_eq "$(cat /tmp/bashopts_testrc)" "config_path=/tmp/myconf.cfg" } _test_case_3() { Loading Loading @@ -155,7 +157,7 @@ _test_case_10() { bashopts_declare -n simple_val -s -l value -d "Simple value" -t string -v 'val' bashopts_parse_args --value=test req_test_eq "$(bashopts_process_opts 2>&1)" "[WARN] No settings file specified" req_test_eq "$(bashopts_process_opts 2>&1)" "[WARN] Option simple_val: No settings file specified" } _test_case_11() { Loading @@ -164,7 +166,7 @@ _test_case_11() { bashopts_declare -n simple_val -s -l value -d "Simple value" -t string -v 'val' bashopts_parse_args --value=test req_test_eq "$(bashopts_process_opts 2>&1 | grep 'WARN')" "[WARN] Please check the settings file" req_test_eq "$(bashopts_process_opts 2>&1 | grep 'WARN')" "[WARN] Option simple_val: Please check the settings file" } _test_case_12() { Loading Loading @@ -235,37 +237,6 @@ _test_case_15() { req_test_eq "$(cat /tmp/bashopts_testrc)" 'array_value=([0]="value 1" [1]="value 3")' } _test_case_16() { rm -f /tmp/bashopts_testrc bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc bashopts_declare -n array_value -l value -m add -d "Array value" -s -i -t string -x '("value 1" "value 2")' bashopts_parse_args --value "" bashopts_process_opts > /dev/null <<< '( "value 1" "value 2" )' req_test_eq "${#array_value[@]}" "2" req_test_eq "${array_value[0]}" "value 1" req_test_eq "${array_value[1]}" "value 2" if [ -f /tmp/bashopts_testrc ]; then echo "file /tmp/bashopts_testrc should not be present" exit 1 fi } _test_case_17() { rm -f /tmp/bashopts_testrc bashopts_setup -n "$0" -d "Test case $0" -s /tmp/bashopts_testrc -p bashopts_declare -n a_value -l value -d "A value" -s -i -t string -v "default value" bashopts_parse_args bashopts_process_opts > /dev/null <<< "" req_test_eq "$a_value" "default value" req_test_eq "$(cat /tmp/bashopts_testrc)" "a_value='default value'" } _test_case_18() { bashopts_setup -n "$0" -d "Test case $0" Loading Loading @@ -310,7 +281,7 @@ _test_case_20() { req_test_eq "$(echo "$(bashopts_process_option -n value -k is_eq_to_null -r 2>&1 > /dev/null <<< "na")" \ | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] Not equal to NULL' req_test_eq "$(echo "$(bashopts_process_option -n value -k is_eq_to_null -r 2>&1 > /dev/null <<< "()")" \ | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] At least one value required' | grep '^\[ERR' | tail -n 1 || true)" '[ERRO] Option value: At least one value required' bashopts_process_option -n value -k is_eq_to_null -r > /dev/null 2>&1 <<< "NULL" } Loading @@ -322,7 +293,7 @@ _test_case_21() { bashopts_parse_args -n bashopts_process_opts req_test_eq "$(echo "$(bashopts_process_option -n value -k is_not_empty -r 2>&1 > /dev/null)" \ | grep '^\[ERR' | head -n 1)" '[ERRO] At least one value required' | grep '^\[ERR' | head -n 1)" '[ERRO] Option value: At least one value required' } _test_case_22() { Loading Loading @@ -351,9 +322,10 @@ _test_case_24() { bashopts_parse_args bashopts_process_opts # NOTE: Fix answer again after a is_eq_to_null check failure req_test_eq "$( (bashopts_process_option -n value -k is_eq_to_null -r 2>&1 <<< "NUL" \ || true) | grep -E '^* A str value$' | wc -l )" "2" || true) | grep '^* A str value$' | wc -l )" "2" } _test_case_25() { Loading @@ -362,7 +334,7 @@ _test_case_25() { bashopts_declare -n value -l value -d "A str value" -t string -r req_test_eq "$( (bashopts_process_opts 2>&1 <<< "" \ || true) | grep -E '^* A str value$' | wc -l )" "2" || true) | grep '^* A str value$' | wc -l )" "2" } _test_case_26() { Loading