Skip to content

Commit 0e7920e

Browse files
committed
fix: execute_tests: handle older versions
Seems Debian 10 has 0.4.0, so need to disable some features.
1 parent acd83ac commit 0e7920e

5 files changed

Lines changed: 148 additions & 8 deletions

tests/unit/bash/bash_os_linux_conditional.bats.jinja

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,41 @@
22

33
set -pu
44

5+
is_old_bats=0
6+
57
setup() {
6-
pushd "${BATS_TEST_TMPDIR}"
8+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
9+
BATS_TEST_TMPDIR="$(mktemp -d)"
10+
is_old_bats=1
11+
else
12+
is_old_bats=0
13+
fi
14+
pushd "${BATS_TEST_TMPDIR}" || exit 1
715
os_release_path="os-release"
816
}
917

18+
teardown() {
19+
if (( is_old_bats )); then
20+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
21+
>&2 echo "INTERNAL ERROR"
22+
exit 3
23+
fi
24+
local tmppath="$(readlink -f -- "${BATS_TEST_TMPDIR}")"
25+
if [[ ! "${tmppath}" =~ ^/tmp/ ]] || [[ ! -d "${tmppath}" ]]; then
26+
>&2 echo "INTERNAL ERROR"
27+
exit 3
28+
fi
29+
local xpwd="$(readlink -f -- "$(pwd)")"
30+
if [[ "${tmppath}" != "${xpwd}" ]]; then
31+
>&2 echo "INTERNAL ERROR"
32+
exit 3
33+
fi
34+
popd || exit 1
35+
rm -rf -- "${tmppath}"
36+
BATS_TEST_TMPDIR=""
37+
fi
38+
}
39+
1040
@test "bash_os_linux_conditional - test OS release - RHEL" {
1141
cat << EOF > "$os_release_path"
1242
NAME="Red Hat Enterprise Linux"

tests/unit/bash/execute_tests.sh

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ while (( $# )); do
3636
esac
3737
done
3838

39+
bats_version="$(bats -v)" || :
40+
case "${bats_version##* }" in
41+
# Debian 10 v0.4.0
42+
# Usage: bats [-c] [-p | -t]
43+
""|"0."*|"1.0."*|"1.1."*)
44+
OPT_parallel=0
45+
OPT_verbose=0
46+
OPT_debug=0
47+
;;
48+
# Ubuntu 22.04
49+
# Error: Bad command line option '--print-output-on-failure'
50+
"1.2."*|"1.3."*|"1.4."*)
51+
OPT_verbose=0
52+
OPT_debug=0
53+
;;
54+
esac
55+
3956
PYTHON_EXECUTABLE="$1"; shift
4057
TESTS_ROOT="$1"; shift
4158
TESTDIR="$1"; shift
@@ -46,17 +63,20 @@ mkdir -p "${OUTDIR}"
4663
bats_opts=()
4764

4865
if (( OPT_parallel )); then
49-
bats_opts+=(--jobs "$(nproc)")
66+
bats_opts+=(--jobs "$(nproc)") # 1.2.0
5067
fi
5168

5269
if (( OPT_verbose > 1 )); then
53-
bats_opts+=(--verbose-run)
70+
bats_opts+=(--verbose-run) # 1.5.0
5471
elif (( OPT_verbose == 1 )); then
55-
bats_opts+=(--print-output-on-failure)
72+
bats_opts+=(--print-output-on-failure) # 1.5.0
5673
fi
5774

5875
if (( OPT_debug )); then
59-
bats_opts+=(--no-tempdir-cleanup --trace)
76+
bats_opts+=(
77+
--no-tempdir-cleanup # 1.4.0
78+
--trace # 1.5.0
79+
)
6080
fi
6181

6282
rc=0

tests/unit/bash/test_bash_ensure_ini_config.bats.jinja

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,41 @@ function call_bash_ensure_ini_config {
66
{{{ bash_ensure_ini_config("$1", "$2", "$3", "$4") | indent(4) }}}
77
}
88

9+
is_old_bats=0
10+
911
setup() {
10-
pushd "${BATS_TEST_TMPDIR}"
12+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
13+
BATS_TEST_TMPDIR="$(mktemp -d)"
14+
is_old_bats=1
15+
else
16+
is_old_bats=0
17+
fi
18+
pushd "${BATS_TEST_TMPDIR}" || exit 1
1119
mkdir -p sssd_test
1220
}
1321

22+
teardown() {
23+
if (( is_old_bats )); then
24+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
25+
>&2 echo "INTERNAL ERROR"
26+
exit 3
27+
fi
28+
local tmppath="$(readlink -f -- "${BATS_TEST_TMPDIR}")"
29+
if [[ ! "${tmppath}" =~ ^/tmp/ ]] || [[ ! -d "${tmppath}" ]]; then
30+
>&2 echo "INTERNAL ERROR"
31+
exit 3
32+
fi
33+
local xpwd="$(readlink -f -- "$(pwd)")"
34+
if [[ "${tmppath}" != "${xpwd}" ]]; then
35+
>&2 echo "INTERNAL ERROR"
36+
exit 3
37+
fi
38+
popd || exit 1
39+
rm -rf -- "${tmppath}"
40+
BATS_TEST_TMPDIR=""
41+
fi
42+
}
43+
1444
@test "bash_ensure_ini_config - Basic value remediation" {
1545
printf "[pam]\npam_cert_auth = false\n" > sssd_test/sssd.conf
1646
expected_output="[pam]\npam_cert_auth = true\n"

tests/unit/bash/test_bash_replace_or_append.bats.jinja

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,42 @@ function call_bash_replace_or_append_w_format {
1010
{{{ bash_replace_or_append("$1", "$2", "$3", "$4") | indent(4) }}}
1111
}
1212

13+
is_old_bats=0
14+
1315
setup() {
14-
pushd "${BATS_TEST_TMPDIR}"
16+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
17+
BATS_TEST_TMPDIR="$(mktemp -d)"
18+
is_old_bats=1
19+
else
20+
is_old_bats=0
21+
fi
22+
pushd "${BATS_TEST_TMPDIR}" || exit 1
1523
tmp_file=test.sh
1624
touch "$tmp_file"
1725
}
1826

27+
teardown() {
28+
if (( is_old_bats )); then
29+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
30+
>&2 echo "INTERNAL ERROR"
31+
exit 3
32+
fi
33+
local tmppath="$(readlink -f -- "${BATS_TEST_TMPDIR}")"
34+
if [[ ! "${tmppath}" =~ ^/tmp/ ]] || [[ ! -d "${tmppath}" ]]; then
35+
>&2 echo "INTERNAL ERROR"
36+
exit 3
37+
fi
38+
local xpwd="$(readlink -f -- "$(pwd)")"
39+
if [[ "${tmppath}" != "${xpwd}" ]]; then
40+
>&2 echo "INTERNAL ERROR"
41+
exit 3
42+
fi
43+
popd || exit 1
44+
rm -rf -- "${tmppath}"
45+
BATS_TEST_TMPDIR=""
46+
fi
47+
}
48+
1949
@test "bash_replace_or_append - Basic value remediation" {
2050
printf "%s\n" "kernel.randomize_va_space = 5" > "$tmp_file"
2151
expected_output="kernel.randomize_va_space = 2\n"

tests/unit/bash/test_set_config_file.bats.jinja

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,42 @@ function call_set_config_file_rsyslog {
1616
parameter="\$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") }}}
1717
}
1818

19+
is_old_bats=0
20+
1921
setup() {
20-
pushd "${BATS_TEST_TMPDIR}"
22+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
23+
BATS_TEST_TMPDIR="$(mktemp -d)"
24+
is_old_bats=1
25+
else
26+
is_old_bats=0
27+
fi
28+
pushd "${BATS_TEST_TMPDIR}" || exit 1
2129
tmp_file=test.conf
2230
touch "$tmp_file"
2331
}
2432

33+
teardown() {
34+
if (( is_old_bats )); then
35+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
36+
>&2 echo "INTERNAL ERROR"
37+
exit 3
38+
fi
39+
local tmppath="$(readlink -f -- "${BATS_TEST_TMPDIR}")"
40+
if [[ ! "${tmppath}" =~ ^/tmp/ ]] || [[ ! -d "${tmppath}" ]]; then
41+
>&2 echo "INTERNAL ERROR"
42+
exit 3
43+
fi
44+
local xpwd="$(readlink -f -- "$(pwd)")"
45+
if [[ "${tmppath}" != "${xpwd}" ]]; then
46+
>&2 echo "INTERNAL ERROR"
47+
exit 3
48+
fi
49+
popd || exit 1
50+
rm -rf -- "${tmppath}"
51+
BATS_TEST_TMPDIR=""
52+
fi
53+
}
54+
2555
@test "set_config_file - Basic value remediation" {
2656
printf "%s\n" "Compression yes" > "$tmp_file"
2757
expected_output="Compression no\n"

0 commit comments

Comments
 (0)