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:
+9
-1
@@ -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',
|
||||
|
||||
@@ -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')
|
||||
|
||||
Executable
+24
@@ -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
|
||||
Reference in New Issue
Block a user