1cef69cf8a
Prep for "Rust-as-main", where I want to build libdnf statically. And this really completes the "library thinout" story because now we avoid dragging our *private* `libdnf.so` into the caller's address space, which can cause potential conflicts if they're also linking the system one. (Which could easily occur with something like gnome-software) All we were using libdnf for (indirectly via libsolv) is comparing version strings but librpm can already do that for us.
83 lines
2.8 KiB
Bash
Executable File
83 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
. ${KOLA_EXT_DATA}/libtest.sh
|
|
cd $(mktemp -d)
|
|
|
|
# make sure that package-related entries are always present,
|
|
# even when they're empty
|
|
rpm-ostree status --json > status.json
|
|
assert_jq status.json \
|
|
'.deployments[0]["packages"]' \
|
|
'.deployments[0]["requested-packages"]' \
|
|
'.deployments[0]["requested-local-packages"]' \
|
|
'.deployments[0]["base-removals"]' \
|
|
'.deployments[0]["requested-base-removals"]' \
|
|
'.deployments[0]["layered-commit-meta"]|not'
|
|
rm status.json
|
|
echo "ok empty pkg arrays, and commit meta correct in status json"
|
|
|
|
# Ensure we return an error when passing a wrong option.
|
|
rpm-ostree --help | awk '/^$/ {in_commands=0} {if(in_commands==1){print $0}} /^Builtin Commands:/ {in_commands=1}' > commands.txt
|
|
while read cmd; do
|
|
if rpm-ostree ${cmd} --n0t-3xisting-0ption &>/dev/null; then
|
|
assert_not_reached "command ${cmd} --n0t-3xisting-0ption was successful"
|
|
fi
|
|
done < commands.txt
|
|
echo "ok error on unknown command options"
|
|
|
|
rpm-ostree status --jsonpath '$.deployments[0].booted' > jsonpath.txt
|
|
assert_file_has_content_literal jsonpath.txt 'true'
|
|
echo "ok jsonpath"
|
|
|
|
# Verify operations as non-root
|
|
runuser -u core rpm-ostree status
|
|
echo "ok status doesn't require root"
|
|
|
|
# StateRoot is only in --verbose
|
|
rpm-ostree status > status.txt
|
|
assert_not_file_has_content status.txt StateRoot:
|
|
rpm-ostree status -v > status.txt
|
|
assert_file_has_content status.txt StateRoot:
|
|
echo "ok status text"
|
|
|
|
# Also check that we can do status as non-root non-active
|
|
runuser -u bin rpm-ostree status
|
|
echo "ok status doesn't require active PAM session"
|
|
|
|
rpm-ostree status -b > status.txt
|
|
assert_streq $(grep -F -e 'ostree://' status.txt | wc -l) "1"
|
|
assert_file_has_content status.txt BootedDeployment:
|
|
echo "ok status -b"
|
|
|
|
if rpm-ostree nosuchcommand --nosuchoption 2>err.txt; then
|
|
assert_not_reached "Expected an error for nosuchcommand"
|
|
fi
|
|
assert_file_has_content err.txt 'Unknown.*command'
|
|
echo "ok error on unknown command"
|
|
|
|
stateroot=$(dirname $(ls /ostree/deploy/*/var))
|
|
ospath=/org/projectatomic/rpmostree1/${stateroot//-/_}
|
|
# related: https://github.com/coreos/fedora-coreos-config/issues/194
|
|
(export LANG=C.utf8
|
|
# And for some reason this one is set in kola runs but not interactive shells
|
|
unset LC_ALL
|
|
gdbus call \
|
|
--system --dest org.projectatomic.rpmostree1 \
|
|
--object-path /org/projectatomic/rpmostree1/fedora_coreos \
|
|
--method org.projectatomic.rpmostree1.OSExperimental.Moo true > moo.txt
|
|
assert_file_has_content moo.txt '🐄')
|
|
echo "ok moo"
|
|
|
|
# Reload as root https://github.com/projectatomic/rpm-ostree/issues/976
|
|
rpm-ostree reload
|
|
echo "ok reload"
|
|
|
|
# See rpmostree-scripts.c
|
|
grep ^DEFAULT /etc/crypto-policies/config
|
|
echo "ok crypto-policies DEFAULT backend"
|
|
|
|
ldd /usr/lib64/librpmostree-1.so.1 > rpmostree-lib-deps.txt
|
|
assert_not_file_has_content rpmostree-lib-deps.txt libdnf
|
|
echo "ok lib deps"
|