Files
shell-scripting-templates/test/alerts.bats
Nathaniel Landau 8bb89541e8 Squashed commit of the following:
commit 61bf734812cb62ba6e0ec224bc15f7928705a8a2
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Thu Oct 21 15:44:21 2021 -0400

    Major overhaul continued

     - rename templates
     - add checks utilities
     - add new array utilities
     - rename files
     - add assorted utilities
     - improve documentation

commit 546178fff3b526f492eb0eeffc63f79537e75de3
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Wed Oct 20 16:31:14 2021 -0400

    Update conventions

commit f6d0642f85518efda9c5d8472b99d1c14163e381
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Wed Oct 20 09:47:09 2021 -0400

    minor formatting changes

commit 2217612b55e3f9faf803a2d0c937ea2261206505
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Tue Oct 19 17:59:09 2021 -0400

    add new functions

commit 347ba7aa738dcd6a5ad9d70886b38da3a17dc89e
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Tue Oct 19 12:06:44 2021 -0400

    major overhaul

    - Add standaloneTemplate.sh
    - Rework README
    - Refactor inline documentation
    - Enforce coding standards
    - Remove CSV utilities
    - Add new array utilities
    - add _useGNUutils_
    - more ...

commit cd8e0d49aef25eeaf6b3e71a3c9e1f29ab9b06f5
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Sun Oct 17 09:56:08 2021 -0400

    Add debug functions

commit f7c5c0a3d19815dcc6ba80b5f5a2ebb77ef88b07
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Sat Oct 16 21:10:01 2021 -0400

    add new array functions

    _joinArray_, _isEmptyArray_, _sortArray_, _reverseSortArray_, and _mergearrays_

commit d8bc3d8cabdbcee3c479f97b43a45bdfe3bdafe0
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Fri Oct 15 17:27:12 2021 -0400

    add _columnize_

commit 2fd2ae9435f476bc3968c3eb0d793db4bf1d9eaf
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Mon Oct 11 22:17:45 2021 -0400

    _progressBar_: Fix unbound variable

commit e8933d15fc955a1acc665e9a081f131e681855d5
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Sun Oct 10 11:50:42 2021 -0400

    _alert_: header now underlined

commit c9ce894361dec7d3513c038794a155519baf26bc
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Tue Oct 5 09:49:42 2021 -0400

    _alert_: line numbers to gray

commit 4aaddd336ce613f629a7e6a62ef3b27ffc24d22d
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Fri Oct 8 15:05:20 2021 -0400

    _usage_ to stdout

commit e2372fc3122ec1f20acc27f04d29b3785f014e25
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Tue Oct 5 09:38:26 2021 -0400

    _setPATH_: remove unneeded logic

commit e60c75b6c954ac4bd146e2758252168027b9a43d
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Tue Oct 5 09:25:38 2021 -0400

    _findSource_: bugfix

commit 0e84912e1ccd7203e5beff9f8737f8374f4aa5d8
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Thu Sep 30 16:29:25 2021 -0400

    add requirements to documentation

commit 2c24843e3ada591e1868a94416e40b5ac0aa4994
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Thu Sep 30 15:34:10 2021 -0400

    _uniqueFilename_: improve extension handling

commit 08bc2dfdcc8632efee9179e9c960a574fc17cf0c
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Mon Sep 27 15:13:53 2021 -0400

    improve hooks script

commit 641918f1559d3b3aa38a9bbdf418938b2b81c176
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Fri Sep 24 08:16:52 2021 -0400

    _inArry_: case insensitivity

commit eae10f170680540fdb4a1222add7e54f8785ea63
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Mon Sep 20 18:31:44 2021 -0400

    clean up alerting

commit 700acd56f57fd57db84ef0e232ef41cdd7aee43c
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Mon Sep 20 18:22:11 2021 -0400

    refactor _execute_

commit d893f86900a9fed9d91a0c9cc06c13b6b34d9926
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Mon Sep 20 18:19:18 2021 -0400

    'fatal' replaces 'die'

commit 3326857bf127bef36cd9982246aa5b826d796d0a
Author: Nathaniel Landau <nate@natelandau.com>
Date:   Fri Sep 17 08:29:50 2021 -0400

    _execute_: ensure quiet and verbose work together
2021-10-21 16:03:27 -04:00

253 lines
6.6 KiB
Bash
Executable File

#!/usr/bin/env bats
#shellcheck disable
load 'test_helper/bats-support/load'
load 'test_helper/bats-file/load'
load 'test_helper/bats-assert/load'
######## SETUP TESTS ########
ROOTDIR="$(git rev-parse --show-toplevel)"
ALERTS="${ROOTDIR}/utilities/alerts.bash"
if test -f "${ALERTS}" >&2; then
source "${ALERTS}"
else
echo "Sourcefile not found: ${ALERTS}" >&2
printf "Can not run tests.\n" >&2
exit 1
fi
setup() {
TESTDIR="$(temp_make)"
curPath="${PWD}"
BATSLIB_FILE_PATH_REM="#${TEST_TEMP_DIR}"
BATSLIB_FILE_PATH_ADD='<temp>'
pushd "${TESTDIR}" >&2
######## DEFAULT FLAGS ########
LOGFILE="${TESTDIR}/logs/log.txt"
QUIET=false
LOGLEVEL=ERROR
VERBOSE=false
FORCE=false
DRYRUN=false
_setColors_ # Set Color Constants
set -o errtrace
set -o nounset
set -o pipefail
}
teardown() {
set +o nounset
set +o errtrace
set +o pipefail
popd >&2
temp_del "${TESTDIR}"
}
######## RUN TESTS ########
@test "Sanity..." {
run true
assert_success
assert_output ""
}
@test "_alert_: success" {
run success "testing"
assert_output --regexp "\[success\] testing"
}
@test "_alert_: quiet" {
QUIET=true
run notice "testing"
assert_success
refute_output --partial "testing"
}
@test "_alert_: warning" {
run warning "testing"
assert_output --regexp "\[warning\] testing"
}
@test "_alert_: notice" {
run notice "testing"
assert_output --regexp "\[ notice\] testing"
}
@test "_alert_: notice: with LINE" {
run notice "testing" "$LINENO"
assert_output --regexp ".*\[ notice\] testing .*\(line: [0-9]{1,3}\)"
}
@test "_alert_: refute debug" {
run debug "testing"
refute_output --partial "[ debug] testing"
}
@test "_alert_: assert debug" {
VERBOSE=true
run debug "testing"
assert_output --partial "[ debug] testing"
}
@test "_alert_: header" {
run header "testing"
assert_output --regexp "\[ header\] testing"
}
@test "_alert_: info" {
run info "testing"
assert_output --regexp "[0-9]+:[0-9]+:[0-9]+ (AM|PM) \[ info\] testing"
}
@test "_alert_: fatal: with LINE" {
run fatal "testing" "$LINENO"
assert_line --index 0 --regexp ".*\[ fatal\] testing .*\(line: [0-9]{1,3}\) \( run:.*\)"
}
@test "_alert_: error" {
run error "testing"
assert_output --regexp ".*\[ error\] testing .*\( run:.*\)"
}
@test "_alert_: input" {
run input "testing"
assert_output --partial "[ input] testing"
}
@test "_alert_: logging FATAL" {
LOGLEVEL=FATAL
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
run fatal "testing fatal"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ fatal\] \[.*\] testing fatal \("
assert_line --index 1 ""
assert_line --index 2 ""
assert_line --index 3 ""
assert_line --index 4 ""
assert_line --index 5 ""
}
@test "_alert_: logging ERROR" {
LOGLEVEL=ERROR
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error"
assert_line --index 1 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error 2"
assert_line --index 2 ""
assert_line --index 3 ""
assert_line --index 4 ""
assert_line --index 5 ""
}
@test "_alert_: logging WARN" {
LOGLEVEL=WARN
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error"
assert_line --index 1 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error 2"
assert_line --index 2 --regexp "[0-9]+:[0-9]+:[0-9]+ \[warning\] \[.*\] testing warning"
assert_line --index 3 ""
assert_line --index 4 ""
assert_line --index 5 ""
}
@test "_alert_: logging INFO" {
LOGLEVEL=INFO
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error"
assert_line --index 1 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error 2"
assert_line --index 2 --regexp "[0-9]+:[0-9]+:[0-9]+ \[warning\] \[.*\] testing warning"
assert_line --index 3 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ notice\] \[.*\] testing notice"
assert_line --index 4 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ info\] \[.*\] testing info"
assert_line --index 5 ""
}
@test "_alert_: logging NOTICE" {
LOGLEVEL=NOTICE
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error"
assert_line --index 1 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error 2"
assert_line --index 2 --regexp "[0-9]+:[0-9]+:[0-9]+ \[warning\] \[.*\] testing warning"
assert_line --index 3 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ notice\] \[.*\] testing notice"
assert_line --index 4 ""
}
@test "_alert_: logging DEBUG" {
LOGLEVEL=DEBUG
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
set +o nounset
assert_file_exist "${LOGFILE}"
run cat "${LOGFILE}"
assert_line --index 0 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error"
assert_line --index 1 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ error\] \[.*\] testing error 2"
assert_line --index 2 --regexp "[0-9]+:[0-9]+:[0-9]+ \[warning\] \[.*\] testing warning"
assert_line --index 3 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ notice\] \[.*\] testing notice"
assert_line --index 4 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ info\] \[.*\] testing info"
assert_line --index 5 --regexp "[0-9]+:[0-9]+:[0-9]+ \[ debug\] \[.*\] testing debug"
}
@test "_alert_: logging OFF" {
LOGLEVEL=OFF
run error "testing error"
run error "testing error 2"
run warning "testing warning"
run notice "testing notice"
run info "testing info"
run debug "testing debug"
assert_file_not_exist "${LOGFILE}"
}