# HG changeset patch # User Franz Glasner # Date 1726613177 -7200 # Node ID 55c024c809cac38c2d8e13ecb861b33dfdd00c98 # Parent 22d35878f6f8a10c75d0f1adc00fbc8d15701867 Begin unittests for farray.sh using "cram" diff -r 22d35878f6f8 -r 55c024c809ca tests/farray-array.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/farray-array.t Wed Sep 18 00:46:17 2024 +0200 @@ -0,0 +1,72 @@ +Basic tests of farray.sh's farray_XXX functions + +Shell is /bin/sh. + +Setup +===== + + $ . "${TESTDIR}/testsetup.sh" + $ _p_datadir="${TESTDIR}/../share/local-bsdtools" + $ . "${_p_datadir}/farray.sh" + +Create an empty array + + $ farray_create EMPTY + $ farray_print_length EMPTY + 0 (no-eol) + $ farray_length _var EMPTY + $ test ${_var} -eq 0 + $ farray_debug EMPTY + DEBUG: array `EMPTY' has length 0 + $ farray_destroy EMPTY + $ check_no_array_artifacts + +Create and destroy an array + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'90 ' + $ farray_print_length TEST + 5 (no-eol) + $ farray_length _var TEST + $ test ${_var} -eq 5 + $ farray_debug TEST + DEBUG: array `TEST' has length 5 + DEBUG: its contents: + DEBUG: 1: `0' + DEBUG: 2: `1' + DEBUG: 3: `2' + DEBUG: 4: `3 4 5' + DEBUG: 5: `" 678" \'90 ' + $ farray_destroy TEST + $ check_no_array_artifacts + +Create, clear and destroy an array + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'90 ' + $ farray_print_length TEST + 5 (no-eol) + $ farray_length _var TEST + $ test ${_var} -eq 5 + $ farray_debug TEST + DEBUG: array `TEST' has length 5 + DEBUG: its contents: + DEBUG: 1: `0' + DEBUG: 2: `1' + DEBUG: 3: `2' + DEBUG: 4: `3 4 5' + DEBUG: 5: `" 678" \'90 ' + $ farray_clear TEST + $ farray_print_length TEST + 0 (no-eol) + $ farray_length _var TEST + $ test ${_var} -eq 0 + $ farray_destroy TEST + $ check_no_array_artifacts + +Duplicate destruction + + $ farray_create TEST 1 2 3 + $ farray_destroy TEST + $ farray_destroy TEST + ERROR: farray `TEST' does not exist: token empty + [1] + $ check_no_array_artifacts diff -r 22d35878f6f8 -r 55c024c809ca tests/testsetup.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testsetup.sh Wed Sep 18 00:46:17 2024 +0200 @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Test helpers for the shell unittests using cram. +# + +#: +#: Check that no global variables that hold any array storage are left. +#: +#: Returns: +#: int: 0 if no unexpected storage is left, 1 otherwise +#: +check_no_array_artifacts() { + # _farr_A_ is the storage prefix for arrays + if set | grep -E -e '^_farr_A_.*='; then + return 1 + else + return 0 + fi +}