2017-11-16 05:28:03 +03:00
#!/bin/bash
set -xeuo pipefail
dn = $( cd $( dirname $0 ) && pwd )
. ${ dn } /libcomposetest.sh
prepare_compose_test "basic-unified"
2018-11-01 22:13:30 +03:00
# Test --print-only, currently requires --repo. We also
# just in this test (for now) use ${basearch} to test substitution.
pysetjsonmember "ref" '"fedora/stable/${basearch}/basic-unified"'
2018-10-30 17:19:49 +03:00
rpm-ostree compose tree --repo= ${ repobuild } --print-only ${ treefile } > treefile.json
# Verify it's valid JSON
jq -r .ref < treefile.json > ref.txt
2018-11-01 22:13:30 +03:00
# Test substitution of ${basearch}
2018-10-30 17:19:49 +03:00
assert_file_has_content_literal ref.txt " ${ treeref } "
2017-11-16 05:28:03 +03:00
# Test metadata json with objects, arrays, numbers
cat > metadata.json <<EOF
{
"exampleos.gitrepo" : {
"rev" : "97ec21c614689e533d294cdae464df607b526ab9" ,
"src" : "https://gitlab.com/exampleos/custom-atomic-host"
} ,
"exampleos.tests" : [ "smoketested" , "e2e" ]
}
EOF
runcompose --ex-unified-core --add-metadata-from-json metadata.json
2018-12-06 00:51:40 +03:00
# Run it again, but without RPMOSTREE_PRESERVE_TMPDIR. Should be a no-op. This
# exercises fd handling in the tree context.
rpm-ostree compose tree ${ compose_base_argv } ${ treefile } " $@ "
echo "ok no cachedir"
2017-11-16 05:28:03 +03:00
. ${ dn } /libbasic-test.sh
basic_test
# This one is done by postprocessing /var
ostree --repo= ${ repobuild } cat ${ treeref } /usr/lib/tmpfiles.d/pkg-filesystem.conf > autovar.txt
# Picked this one at random as an example of something that won't likely be
# converted to tmpfiles.d upstream. But if it is, we can change this test.
assert_file_has_content_literal autovar.txt 'd /var/cache 0755 root root - -'
ostree --repo= ${ repobuild } cat ${ treeref } /usr/lib/tmpfiles.d/pkg-chrony.conf > autovar.txt
# And this one has a non-root uid
assert_file_has_content_literal autovar.txt 'd /var/log/chrony 0755 chrony chrony - -'
2018-09-07 17:48:28 +03:00
# see rpmostree-importer.c
if ostree --repo= ${ repobuild } cat ${ treeref } /usr/lib/tmpfiles.d/pkg-rpm.conf > rpm.txt 2>/dev/null; then
assert_not_file_has_content rpm.txt 'd /var/lib/rpm'
fi
2017-11-16 05:28:03 +03:00
echo "ok autovar"
2017-11-17 23:06:50 +03:00
2018-04-09 21:10:33 +03:00
# And verify we're not hardlinking zero-sized files since this path isn't using
# rofiles-fuse
co = ${ repobuild } /tmp/usr-etc
ostree --repo= ${ repobuild } checkout -UHz --subpath= /usr/etc ${ treeref } ${ co }
# Verify the files exist and are zero-sized
for f in ${ co } /sub{ u,g} id; do
test -f " $f "
test '!' -s " $f "
done
if files_are_hardlinked ${ co } /sub{ u,g} id; then
fatal "Hardlinked zero-sized files without cachedir"
fi
rm ${ co } -rf
echo "ok no cachedir zero-sized hardlinks"
2019-05-08 07:13:43 +03:00
# And redo it to trigger relabeling. Also test --no-parent at the same time.
2017-11-17 23:06:50 +03:00
origrev = $( ostree --repo= ${ repobuild } rev-parse ${ treeref } )
2019-05-08 07:13:43 +03:00
runcompose --force-nocache --ex-unified-core --no-parent
2017-11-17 23:06:50 +03:00
newrev = $( ostree --repo= ${ repobuild } rev-parse ${ treeref } )
assert_not_streq " ${ origrev } " " ${ newrev } "
echo "ok rerun"
2019-05-08 07:13:43 +03:00
# And check that --no-parent worked.
if ostree rev-parse ${ newrev } ^; then
assert_not_reached "New revision has a parent even with --no-parent?"
fi
echo "ok --no-parent"