Skip to content

Commit c805c31

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

5 files changed

Lines changed: 152 additions & 8 deletions

tests/unit/bash/bash_os_linux_conditional.bats.jinja

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,42 @@
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)" # 1.4.0
10+
BATS_TEARDOWN_STARTED= # 1.3.0
11+
is_old_bats=1
12+
else
13+
is_old_bats=0
14+
fi
15+
pushd "${BATS_TEST_TMPDIR}" || exit 1
716
os_release_path="os-release"
817
}
918

19+
teardown() {
20+
if (( is_old_bats )); then
21+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
22+
>&2 echo "INTERNAL ERROR"
23+
exit 3
24+
fi
25+
local tmppath="$(readlink -f -- "${BATS_TEST_TMPDIR}")"
26+
if [[ ! "${tmppath}" =~ ^/tmp/ ]] || [[ ! -d "${tmppath}" ]]; then
27+
>&2 echo "INTERNAL ERROR"
28+
exit 3
29+
fi
30+
local xpwd="$(readlink -f -- "$(pwd)")"
31+
if [[ "${tmppath}" != "${xpwd}" ]]; then
32+
>&2 echo "INTERNAL ERROR"
33+
exit 3
34+
fi
35+
popd || exit 1
36+
rm -rf -- "${tmppath}"
37+
BATS_TEST_TMPDIR=""
38+
fi
39+
}
40+
1041
@test "bash_os_linux_conditional - test OS release - RHEL" {
1142
cat << EOF > "$os_release_path"
1243
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: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,42 @@ 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)" # 1.4.0
14+
BATS_TEARDOWN_STARTED= # 1.3.0
15+
is_old_bats=1
16+
else
17+
is_old_bats=0
18+
fi
19+
pushd "${BATS_TEST_TMPDIR}" || exit 1
1120
mkdir -p sssd_test
1221
}
1322

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

tests/unit/bash/test_bash_replace_or_append.bats.jinja

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,43 @@ 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)" # 1.4.0
18+
BATS_TEARDOWN_STARTED= # 1.3.0
19+
is_old_bats=1
20+
else
21+
is_old_bats=0
22+
fi
23+
pushd "${BATS_TEST_TMPDIR}" || exit 1
1524
tmp_file=test.sh
1625
touch "$tmp_file"
1726
}
1827

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

tests/unit/bash/test_set_config_file.bats.jinja

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,43 @@ function call_set_config_file_rsyslog {
1717
create=true, separator=" ", separator_regex=" ") }}}
1818
}
1919

20+
is_old_bats=0
21+
2022
setup() {
21-
pushd "${BATS_TEST_TMPDIR}"
23+
if [[ -z "${BATS_TEST_TMPDIR:-}" ]] || [[ ! -d "${BATS_TEST_TMPDIR}" ]]; then
24+
BATS_TEST_TMPDIR="$(mktemp -d)" # 1.4.0
25+
BATS_TEARDOWN_STARTED= # 1.3.0
26+
is_old_bats=1
27+
else
28+
is_old_bats=0
29+
fi
30+
pushd "${BATS_TEST_TMPDIR}" || exit 1
2231
tmp_file=test.conf
2332
touch "$tmp_file"
2433
}
2534

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

0 commit comments

Comments
 (0)