mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08: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:
10
meson.build
10
meson.build
@@ -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')
|
||||
|
||||
24
test/test-bootctl-json.sh
Executable file
24
test/test-bootctl-json.sh
Executable 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
|
||||
Reference in New Issue
Block a user