diff options
| -rw-r--r-- | interfaces/builtin/system_packages_doc.go | 18 | ||||
| -rw-r--r-- | interfaces/builtin/system_packages_doc_test.go | 30 | ||||
| -rw-r--r-- | tests/main/interfaces-system-packages-doc/task.yaml | 8 |
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' |
