# Allow snap-confine to be killed
signal (receive) peer=unconfined,
+
+ # Required when using unpatched upstream kernel
+ capability sys_ptrace,
+ # Debian compiles snap-confine without AppArmor, so allow running snaps unconfined
+ /usr/lib/snapd/snap-exec uxr,
}
-i= Constrain listing to specific interfaces
[interfaces command arguments]
- <snap>:<slot or plug>: Constrain listing to a specific snap or snap:name
+ <snap>:<slot or plug>: Constrain listing to a specific snap or
+ snap:name
`
rest, err := Parser().ParseArgs([]string{"interfaces", "--help"})
c.Assert(err.Error(), Equals, msg)
//go:generate update-pot
-import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- /* this is actually "github.com/ojii/gettext.go", however because
- https://github.com/ojii/gettext.go/pull/4
- is not merged as of this writtting we want to use this fork
- */
- "github.com/mvo5/gettext.go"
-
- "github.com/snapcore/snapd/osutil"
-)
-
-// TEXTDOMAIN is the message domain used by snappy; see dgettext(3)
-// for more information.
-var (
- TEXTDOMAIN = "snappy"
- locale gettext.Catalog
- translations gettext.Translations
-)
-
-func init() {
- bindTextDomain(TEXTDOMAIN, "/usr/share/locale")
- setLocale("")
-}
-
-func langpackResolver(root string, locale string, domain string) string {
-
- // first check for the real locale (e.g. de_DE)
- // then try to simplify the locale (e.g. de_DE -> de)
- locales := []string{locale, strings.SplitN(locale, "_", 2)[0]}
- for _, locale := range locales {
- r := filepath.Join(locale, "LC_MESSAGES", fmt.Sprintf("%s.mo", domain))
-
- // ubuntu uses /usr/lib/locale-langpack and patches the glibc gettext
- // implementation
- langpack := filepath.Join(root, "..", "locale-langpack", r)
- if osutil.FileExists(langpack) {
- return langpack
- }
-
- regular := filepath.Join(root, r)
- if osutil.FileExists(regular) {
- return regular
- }
- }
-
- return ""
-}
+import ()
func bindTextDomain(domain, dir string) {
- translations = gettext.NewTranslations(dir, domain, langpackResolver)
}
func setLocale(loc string) {
- if loc == "" {
- loc = os.Getenv("LC_MESSAGES")
- if loc == "" {
- loc = os.Getenv("LANG")
- }
- }
- // de_DE.UTF-8, de_DE@euro all need to get simplified
- loc = strings.Split(loc, "@")[0]
- loc = strings.Split(loc, ".")[0]
-
- locale = translations.Locale(loc)
}
// G is the shorthand for Gettext
func G(msgid string) string {
- return locale.Gettext(msgid)
-}
-
-// NG is the shorthand for NGettext
-func NG(msgid string, msgidPlural string, n uint32) string {
- return locale.NGettext(msgid, msgidPlural, n)
+ return msgid
}
+++ /dev/null
-// -*- Mode: Go; indent-tabs-mode: t -*-
-
-/*
- * Copyright (C) 2014-2015 Canonical Ltd
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package i18n
-
-import (
- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
- "testing"
-
- . "gopkg.in/check.v1"
-)
-
-// Hook up check.v1 into the "go test" runner
-func Test(t *testing.T) { TestingT(t) }
-
-var mockLocalePo = []byte(`
-msgid ""
-msgstr ""
-"Project-Id-Version: snappy\n"
-"Report-Msgid-Bugs-To: snappy-devel@lists.ubuntu.com\n"
-"POT-Creation-Date: 2015-06-16 09:08+0200\n"
-"Language: en_DK\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;>\n"
-
-msgid "plural_1"
-msgid_plural "plural_2"
-msgstr[0] "translated plural_1"
-msgstr[1] "translated plural_2"
-
-msgid "singular"
-msgstr "translated singular"
-`)
-
-func makeMockTranslations(c *C, localeDir string) {
- fullLocaleDir := filepath.Join(localeDir, "en_DK", "LC_MESSAGES")
- err := os.MkdirAll(fullLocaleDir, 0755)
- c.Assert(err, IsNil)
-
- po := filepath.Join(fullLocaleDir, "snappy-test.po")
- mo := filepath.Join(fullLocaleDir, "snappy-test.mo")
- err = ioutil.WriteFile(po, mockLocalePo, 0644)
- c.Assert(err, IsNil)
-
- cmd := exec.Command("msgfmt", po, "--output-file", mo)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err = cmd.Run()
- c.Assert(err, IsNil)
-}
-
-type i18nTestSuite struct {
- origLang string
- origLcMessages string
-}
-
-var _ = Suite(&i18nTestSuite{})
-
-func (s *i18nTestSuite) SetUpTest(c *C) {
- // this dir contains a special hand-crafted en_DK/snappy-test.mo
- // file
- localeDir := c.MkDir()
- makeMockTranslations(c, localeDir)
-
- // we use a custom test mo file
- TEXTDOMAIN = "snappy-test"
-
- s.origLang = os.Getenv("LANG")
- s.origLcMessages = os.Getenv("LC_MESSAGES")
-
- bindTextDomain("snappy-test", localeDir)
- os.Setenv("LANG", "en_DK.UTF-8")
- setLocale("")
-}
-
-func (s *i18nTestSuite) TearDownTest(c *C) {
- os.Setenv("LANG", s.origLang)
- os.Setenv("LC_MESSAGES", s.origLcMessages)
-}
-
-func (s *i18nTestSuite) TestTranslatedSingular(c *C) {
- // no G() to avoid adding the test string to snappy-pot
- var Gtest = G
- c.Assert(Gtest("singular"), Equals, "translated singular")
-}
-
-func (s *i18nTestSuite) TestTranslatesPlural(c *C) {
- // no NG() to avoid adding the test string to snappy-pot
- var NGtest = NG
- c.Assert(NGtest("plural_1", "plural_2", 1), Equals, "translated plural_1")
-}
-
-func (s *i18nTestSuite) TestTranslatedMissingLangNoCrash(c *C) {
- setLocale("invalid")
-
- // no G() to avoid adding the test string to snappy-pot
- var Gtest = G
- c.Assert(Gtest("singular"), Equals, "singular")
-}
-
-func (s *i18nTestSuite) TestInvalidTextDomainDir(c *C) {
- bindTextDomain("snappy-test", "/random/not/existing/dir")
- setLocale("invalid")
-
- // no G() to avoid adding the test string to snappy-pot
- var Gtest = G
- c.Assert(Gtest("singular"), Equals, "singular")
-}
"os"
"unicode"
- "github.com/cheggaaa/pb"
+ "gopkg.in/cheggaaa/pb.v1"
"golang.org/x/crypto/ssh/terminal"
)
+++ /dev/null
-summary: Test that i18n works
-
-execute: |
- LANG=de_DE.UTF-8 snap changes everything | MATCH "Ja, ja, allerdings."
"revision": "6b9493b3cb60367edd942144879646604089e3f7",
"revisionTime": "2016-02-27T09:34:14Z"
},
- {
- "checksumSHA1": "MXOfmoFN5PBz/N5pDNrFe9ugYf8=",
- "path": "github.com/mvo5/gettext.go",
- "revision": "da4fdf605f1b0e2aa523423db5c0a3f727d62019",
- "revisionTime": "2016-12-13T07:12:38Z"
- },
- {
- "checksumSHA1": "wClBtrHsGvzusCkIFdF78Iak6y0=",
- "path": "github.com/mvo5/gettext.go/pluralforms",
- "revision": "da4fdf605f1b0e2aa523423db5c0a3f727d62019",
- "revisionTime": "2016-12-13T07:12:38Z"
- },
{
"checksumSHA1": "bzUdFxQ29mPK0lwgFVcF0GFN74Q=",
"path": "github.com/mvo5/goconfigparser",