1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-22 13:33:56 +03:00

tests: add a simple test that bootctl output is valid json

python's json.tool module is used because it does validation. jq is more forgiving.
Also, json is in the stdlib, so it should be always available.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-11-16 09:49:30 +01:00
parent b570204a97
commit 50f2c32cd5
3 changed files with 34 additions and 1 deletions

View File

@ -2583,7 +2583,7 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1
boot_link_with = [libsystemd_static, libshared_static]
endif
public_programs += executable(
exe = executable(
'bootctl',
'src/boot/bootctl.c',
include_directories : includes,
@ -2592,6 +2592,14 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1
versiondep],
install_rpath : rootpkglibdir,
install : true)
public_programs += exe
if want_tests != 'false'
test('test-bootctl-json',
test_bootctl_json_sh,
args : exe.full_path(),
depends : exe)
endif
public_programs += executable(
'systemd-bless-boot',

View File

@ -89,6 +89,7 @@ if install_tests
install_dir : testdata_dir)
endif
test_bootctl_json_sh = find_program('test-bootctl-json.sh')
test_fstab_generator_sh = find_program('test-fstab-generator.sh')
test_network_generator_conversion_sh = find_program('test-network-generator-conversion.sh')
test_systemctl_enable_sh = find_program('test-systemctl-enable.sh')

24
test/test-bootctl-json.sh Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
set -o pipefail
bootctl="${1:?}"
"$bootctl" --no-pager list >/dev/null || {
echo "$bootctl list failed, skipping tests" 1>&2
exit 77
}
set -x
"$bootctl" list --json=pretty | python3 -m json.tool >/dev/null
"$bootctl" list --json=short | python3 -m json.tool >/dev/null
command -v jq >/dev/null || {
echo "jq is not available, skipping jq tests" 1>&2
exit 0
}
"$bootctl" list --json=pretty | jq . >/dev/null
"$bootctl" list --json=short | jq . >/dev/null