summaryrefslogtreecommitdiff
diff options
-rw-r--r--interfaces/builtin/system_packages_doc.go18
-rw-r--r--interfaces/builtin/system_packages_doc_test.go30
-rw-r--r--tests/main/interfaces-system-packages-doc/task.yaml8
3 files changed, 49 insertions, 7 deletions
diff --git a/interfaces/builtin/system_packages_doc.go b/interfaces/builtin/system_packages_doc.go
index 1cde33ba2b..56791b1fa3 100644
--- a/interfaces/builtin/system_packages_doc.go
+++ b/interfaces/builtin/system_packages_doc.go
@@ -40,6 +40,8 @@ const systemPackagesDocConnectedPlugAppArmor = `
# Description: can access documentation of system packages.
/usr/share/doc/{,**} r,
+/usr/share/cups/doc-root/{,**} r,
+/usr/share/gimp/2.0/help/{,**} r,
/usr/share/gtk-doc/{,**} r,
/usr/share/libreoffice/help/{,**} r,
/usr/share/xubuntu-docs/{,**} r,
@@ -56,6 +58,12 @@ func (iface *systemPackagesDocInterface) AppArmorConnectedPlug(spec *apparmor.Sp
emit(" mount options=(bind) /var/lib/snapd/hostfs/usr/share/doc/ -> /usr/share/doc/,\n")
emit(" remount options=(bind, ro) /usr/share/doc/,\n")
emit(" umount /usr/share/doc/,\n")
+ emit(" mount options=(bind) /var/lib/snapd/hostfs/usr/share/cups/doc-root/ -> /usr/share/cups/doc-root/,\n")
+ emit(" remount options=(bind, ro) /usr/share/cups/doc-root/,\n")
+ emit(" umount /usr/share/cups/doc-root/,\n")
+ emit(" mount options=(bind) /var/lib/snapd/hostfs/usr/share/gimp/2.0/help/ -> /usr/share/gimp/2.0/help/,\n")
+ emit(" remount options=(bind, ro) /usr/share/gimp/2.0/help/,\n")
+ emit(" umount /usr/share/gimp/2.0/help/,\n")
emit(" mount options=(bind) /var/lib/snapd/hostfs/usr/share/gtk-doc/ -> /usr/share/gtk-doc/,\n")
emit(" remount options=(bind, ro) /usr/share/gtk-doc/,\n")
emit(" umount /usr/share/gtk-doc/,\n")
@@ -78,6 +86,16 @@ func (iface *systemPackagesDocInterface) MountConnectedPlug(spec *mount.Specific
Options: []string{"bind", "ro"},
})
spec.AddMountEntry(osutil.MountEntry{
+ Name: "/var/lib/snapd/hostfs/usr/share/cups/doc-root",
+ Dir: "/usr/share/cups/doc-root",
+ Options: []string{"bind", "ro"},
+ })
+ spec.AddMountEntry(osutil.MountEntry{
+ Name: "/var/lib/snapd/hostfs/usr/share/gimp/2.0/help",
+ Dir: "/usr/share/gimp/2.0/help",
+ Options: []string{"bind", "ro"},
+ })
+ spec.AddMountEntry(osutil.MountEntry{
Name: "/var/lib/snapd/hostfs/usr/share/gtk-doc",
Dir: "/usr/share/gtk-doc",
Options: []string{"bind", "ro"},
diff --git a/interfaces/builtin/system_packages_doc_test.go b/interfaces/builtin/system_packages_doc_test.go
index 280e688552..b3cf9e915f 100644
--- a/interfaces/builtin/system_packages_doc_test.go
+++ b/interfaces/builtin/system_packages_doc_test.go
@@ -86,6 +86,8 @@ func (s *systemPackagesDocSuite) TestAppArmorSpec(c *C) {
c.Assert(spec.SecurityTags(), DeepEquals, []string{"snap.consumer.app"})
c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "# Description: can access documentation of system packages.")
c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "/usr/share/doc/{,**} r,")
+ c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "/usr/share/cups/doc-root/{,**} r,")
+ c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "/usr/share/gimp/2.0/help/{,**} r,")
c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "/usr/share/libreoffice/help/{,**} r,")
c.Assert(spec.SnippetForTag("snap.consumer.app"), testutil.Contains, "/usr/share/xubuntu-docs/{,**} r,")
@@ -95,6 +97,14 @@ func (s *systemPackagesDocSuite) TestAppArmorSpec(c *C) {
c.Check(updateNS, testutil.Contains, " remount options=(bind, ro) /usr/share/doc/,\n")
c.Check(updateNS, testutil.Contains, " umount /usr/share/doc/,\n")
+ c.Check(updateNS, testutil.Contains, " mount options=(bind) /var/lib/snapd/hostfs/usr/share/cups/doc-root/ -> /usr/share/cups/doc-root/,\n")
+ c.Check(updateNS, testutil.Contains, " remount options=(bind, ro) /usr/share/cups/doc-root/,\n")
+ c.Check(updateNS, testutil.Contains, " umount /usr/share/cups/doc-root/,\n")
+
+ c.Check(updateNS, testutil.Contains, " mount options=(bind) /var/lib/snapd/hostfs/usr/share/gimp/2.0/help/ -> /usr/share/gimp/2.0/help/,\n")
+ c.Check(updateNS, testutil.Contains, " remount options=(bind, ro) /usr/share/gimp/2.0/help/,\n")
+ c.Check(updateNS, testutil.Contains, " umount /usr/share/gimp/2.0/help/,\n")
+
c.Check(updateNS, testutil.Contains, " mount options=(bind) /var/lib/snapd/hostfs/usr/share/gtk-doc/ -> /usr/share/gtk-doc/,\n")
c.Check(updateNS, testutil.Contains, " remount options=(bind, ro) /usr/share/gtk-doc/,\n")
c.Check(updateNS, testutil.Contains, " umount /usr/share/gtk-doc/,\n")
@@ -123,19 +133,25 @@ func (s *systemPackagesDocSuite) TestMountSpec(c *C) {
c.Assert(spec.AddConnectedPlug(s.iface, s.plug, s.coreSlot), IsNil)
entries := spec.MountEntries()
- c.Assert(entries, HasLen, 4)
+ c.Assert(entries, HasLen, 6)
c.Check(entries[0].Name, Equals, "/var/lib/snapd/hostfs/usr/share/doc")
c.Check(entries[0].Dir, Equals, "/usr/share/doc")
c.Check(entries[0].Options, DeepEquals, []string{"bind", "ro"})
- c.Check(entries[1].Name, Equals, "/var/lib/snapd/hostfs/usr/share/gtk-doc")
- c.Check(entries[1].Dir, Equals, "/usr/share/gtk-doc")
+ c.Check(entries[1].Name, Equals, "/var/lib/snapd/hostfs/usr/share/cups/doc-root")
+ c.Check(entries[1].Dir, Equals, "/usr/share/cups/doc-root")
c.Check(entries[1].Options, DeepEquals, []string{"bind", "ro"})
- c.Check(entries[2].Name, Equals, "/var/lib/snapd/hostfs/usr/share/libreoffice/help")
- c.Check(entries[2].Dir, Equals, "/usr/share/libreoffice/help")
+ c.Check(entries[2].Name, Equals, "/var/lib/snapd/hostfs/usr/share/gimp/2.0/help")
+ c.Check(entries[2].Dir, Equals, "/usr/share/gimp/2.0/help")
c.Check(entries[2].Options, DeepEquals, []string{"bind", "ro"})
- c.Check(entries[3].Name, Equals, "/var/lib/snapd/hostfs/usr/share/xubuntu-docs")
- c.Check(entries[3].Dir, Equals, "/usr/share/xubuntu-docs")
+ c.Check(entries[3].Name, Equals, "/var/lib/snapd/hostfs/usr/share/gtk-doc")
+ c.Check(entries[3].Dir, Equals, "/usr/share/gtk-doc")
c.Check(entries[3].Options, DeepEquals, []string{"bind", "ro"})
+ c.Check(entries[4].Name, Equals, "/var/lib/snapd/hostfs/usr/share/libreoffice/help")
+ c.Check(entries[4].Dir, Equals, "/usr/share/libreoffice/help")
+ c.Check(entries[4].Options, DeepEquals, []string{"bind", "ro"})
+ c.Check(entries[5].Name, Equals, "/var/lib/snapd/hostfs/usr/share/xubuntu-docs")
+ c.Check(entries[5].Dir, Equals, "/usr/share/xubuntu-docs")
+ c.Check(entries[5].Options, DeepEquals, []string{"bind", "ro"})
entries = spec.UserMountEntries()
c.Assert(entries, HasLen, 0)
diff --git a/tests/main/interfaces-system-packages-doc/task.yaml b/tests/main/interfaces-system-packages-doc/task.yaml
index 1a1b957abe..c91589c96a 100644
--- a/tests/main/interfaces-system-packages-doc/task.yaml
+++ b/tests/main/interfaces-system-packages-doc/task.yaml
@@ -13,6 +13,10 @@ prepare: |
echo text >/usr/share/xubuntu-docs/content
mkdir -p /usr/share/gtk-doc
echo text >/usr/share/gtk-doc/content
+ mkdir -p /usr/share/cups/doc-root
+ echo text >/usr/share/cups/doc-root/content
+ mkdir -p /usr/share/gimp/2.0/help
+ echo text >/usr/share/gimp/2.0/help/content
restore: |
snap remove --purge test-snapd-app
@@ -29,6 +33,8 @@ execute: |
test-snapd-app.sh -c 'cat /usr/share/libreoffice/help/content' | MATCH text
test-snapd-app.sh -c 'cat /usr/share/xubuntu-docs/content' | MATCH text
test-snapd-app.sh -c 'cat /usr/share/gtk-doc/content' | MATCH text
+ test-snapd-app.sh -c 'cat /usr/share/cups/doc-root/content' | MATCH text
+ test-snapd-app.sh -c 'cat /usr/share/gimp/2.0/help/content' | MATCH text
# The interface can be disconnected
snap disconnect test-snapd-app:system-packages-doc
@@ -36,3 +42,5 @@ execute: |
not test-snapd-app.sh -c 'test -e /usr/share/libreoffice/help/content'
not test-snapd-app.sh -c 'test -e /usr/share/xubuntu-docs/content'
not test-snapd-app.sh -c 'test -e /usr/share/gtk-doc/content'
+ not test-snapd-app.sh -c 'test -e /usr/share/cups/doc-root/content'
+ not test-snapd-app.sh -c 'test -e /usr/share/gimp/2.0/help/content'