1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
summary: The appstream-metadata interface grants access to package metadata
details: |
A number of Linux distributions use the AppStream format to
provide metadata about both installed and available packages.
The appstream-metadata interface makes this information available
to a confined application by creating bind mounts from the host
system to equivalent points in the sandbox. Together with an
interface granting access to the host system packaging system
(e.g. via PackageKit), it is possible to confine a graphical
package manager.
systems: [-ubuntu-core-*]
prepare: |
"$TESTSTOOLS"/snaps-state install-local test-snapd-appstream-metadata
# Set up some fake Appstream metadata on the host system
mkdir -p /usr/share/metainfo
echo "Appstream metainfo 1" > /usr/share/metainfo/test1.metainfo.xml
mkdir -p /usr/share/appdata
echo "Appstream metainfo 2" > /usr/share/appdata/test2.metainfo.xml
mkdir -p /usr/share/app-info/xmls
echo "Appstream app-info 1" > /usr/share/app-info/xmls/test1.xml
mkdir -p /var/cache/app-info/xmls
echo "Appstream app-info 2" > /var/cache/app-info/xmls/test2.xml
# Apt exposes Appstream metadata via absolute symlinks to
# /var/lib/apt/lists
mkdir -p /var/lib/apt/lists
echo "Appstream app-info 3" | gzip -c > /var/lib/apt/lists/test3.yml.gz
mkdir -p /var/lib/app-info/yaml
ln -s /var/lib/apt/lists/test3.yml.gz /var/lib/app-info/yaml
restore: |
rm -f /usr/share/metainfo/test1.metainfo.xml
rm -f /usr/share/appdata/test2.metainfo.xml
rm -f /usr/share/app-info/xmls/test1.xml
rm -f /var/cache/app-info/xmls/test2.xml
rm -f /var/lib/app-info/yaml/test3.yml.gz
rm -f /var/lib/apt/lists/test3.yml.gz
execute: |
echo "The plug is disconnected by default"
snap connections test-snapd-appstream-metadata | MATCH "appstream-metadata +test-snapd-appstream-metadata:appstream-metadata +- +-"
echo "The plug can be connected"
snap connect test-snapd-appstream-metadata:appstream-metadata
snap connections test-snapd-appstream-metadata | MATCH "appstream-metadata +test-snapd-appstream-metadata:appstream-metadata +:appstream-metadata +manual"
echo "Appstream metadata is now available from the sandbox"
test-snapd-appstream-metadata.sh -c "cat /usr/share/metainfo/test1.metainfo.xml" | MATCH "Appstream metainfo 1"
test-snapd-appstream-metadata.sh -c "cat /usr/share/appdata/test2.metainfo.xml" | MATCH "Appstream metainfo 2"
test-snapd-appstream-metadata.sh -c "cat /usr/share/app-info/xmls/test1.xml" | MATCH "Appstream app-info 1"
test-snapd-appstream-metadata.sh -c "cat /var/cache/app-info/xmls/test2.xml" | MATCH "Appstream app-info 2"
test-snapd-appstream-metadata.sh -c "cat /var/lib/app-info/yaml/test3.yml.gz" | gunzip -c | MATCH "Appstream app-info 3"
|