Commit 86300291 authored by Emeric Verschuur's avatar Emeric Verschuur
Browse files

wip

parent 72fd4d7e
Loading
Loading
Loading
Loading
Loading
+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
+177 −163

File changed.

Preview size limit exceeded, changes collapsed.

+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
@@ -18,6 +18,8 @@
# specific language governing permissions and limitations
# under the License.

set -e

. bashopts.sh
trap 'bashopts_exit_handle' ERR

@@ -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() {
@@ -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() {
@@ -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() {
@@ -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"

@@ -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"
}

@@ -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() {
@@ -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() {
@@ -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() {