本文整理汇总了Golang中github.com/snapcore/snapd/snap.InfoFromSnapYaml函数的典型用法代码示例。如果您正苦于以下问题:Golang InfoFromSnapYaml函数的具体用法?Golang InfoFromSnapYaml怎么用?Golang InfoFromSnapYaml使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了InfoFromSnapYaml函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: MockSnap
// MockSnap puts a snap.yaml file on disk so to mock an installed snap, based on the provided arguments.
//
// The caller is responsible for mocking root directory with dirs.SetRootDir()
// and for altering the overlord state if required.
func MockSnap(c *check.C, yamlText string, snapContents string, sideInfo *snap.SideInfo) *snap.Info {
c.Assert(sideInfo, check.Not(check.IsNil))
// Parse the yaml (we need the Name).
snapInfo, err := snap.InfoFromSnapYaml([]byte(yamlText))
c.Assert(err, check.IsNil)
// Set SideInfo so that we can use MountDir below
snapInfo.SideInfo = *sideInfo
// Put the YAML on disk, in the right spot.
metaDir := filepath.Join(snapInfo.MountDir(), "meta")
err = os.MkdirAll(metaDir, 0755)
c.Assert(err, check.IsNil)
err = ioutil.WriteFile(filepath.Join(metaDir, "snap.yaml"), []byte(yamlText), 0644)
c.Assert(err, check.IsNil)
// Write the .snap to disk
err = os.MkdirAll(filepath.Dir(snapInfo.MountFile()), 0755)
c.Assert(err, check.IsNil)
err = ioutil.WriteFile(snapInfo.MountFile(), []byte(snapContents), 0644)
c.Assert(err, check.IsNil)
snapInfo.Size = int64(len(snapContents))
return snapInfo
}
开发者ID:pedronis,项目名称:snappy,代码行数:30,代码来源:snaptest.go
示例2: TestFindCommandNoCommand
func (s *snapExecSuite) TestFindCommandNoCommand(c *C) {
info, err := snap.InfoFromSnapYaml(mockYaml)
c.Assert(err, IsNil)
_, err = findCommand(info.Apps["nostop"], "stop")
c.Check(err, ErrorMatches, `no "stop" command found for "nostop"`)
}
开发者ID:niemeyer,项目名称:snapd,代码行数:7,代码来源:main_test.go
示例3: ReadInfo
func (f *fakeSnappyBackend) ReadInfo(name string, si *snap.SideInfo) (*snap.Info, error) {
if name == "borken" {
return nil, errors.New(`cannot read info for "borken" snap`)
}
// naive emulation for now, always works
info := &snap.Info{SuggestedName: name, SideInfo: *si}
info.Type = snap.TypeApp
if name == "gadget" {
info.Type = snap.TypeGadget
}
if name == "core" {
info.Type = snap.TypeOS
}
if name == "alias-snap" {
var err error
info, err = snap.InfoFromSnapYaml([]byte(`name: alias-snap
apps:
cmd1:
aliases: [alias1, alias1.cmd1]
cmd2:
aliases: [alias2]
cmd3:
aliases: [alias3]
cmd4:
aliases: [alias4]
cmd5:
aliases: [alias5]
`))
if err != nil {
panic(err)
}
info.SideInfo = *si
}
return info, nil
}
开发者ID:pedronis,项目名称:snappy,代码行数:35,代码来源:backend_test.go
示例4: TestFindCommandInvalidCommand
func (s *snapExecSuite) TestFindCommandInvalidCommand(c *C) {
info, err := snap.InfoFromSnapYaml(mockYaml)
c.Assert(err, IsNil)
_, err = findCommand(info.Apps["app"], "xxx")
c.Check(err, ErrorMatches, `cannot use "xxx" command`)
}
开发者ID:niemeyer,项目名称:snapd,代码行数:7,代码来源:main_test.go
示例5: TestUnmarshalSlotsImplicitlyDefinedExplicitlyBoundToApps
func (s *YamlSuite) TestUnmarshalSlotsImplicitlyDefinedExplicitlyBoundToApps(c *C) {
// NOTE: yaml content cannot use tabs, indent the section with spaces.
info, err := snap.InfoFromSnapYaml([]byte(`
name: snap
apps:
app:
slots: ["network-client"]
`))
c.Assert(err, IsNil)
c.Check(info.Name(), Equals, "snap")
c.Check(info.Plugs, HasLen, 0)
c.Check(info.Slots, HasLen, 1)
c.Check(info.Apps, HasLen, 1)
slot := info.Slots["network-client"]
app := info.Apps["app"]
c.Assert(slot, DeepEquals, &snap.SlotInfo{
Snap: info,
Name: "network-client",
Interface: "network-client",
Apps: map[string]*snap.AppInfo{app.Name: app},
})
c.Assert(app, DeepEquals, &snap.AppInfo{
Snap: info,
Name: "app",
Slots: map[string]*snap.SlotInfo{slot.Name: slot},
})
}
开发者ID:elopio,项目名称:snappy,代码行数:27,代码来源:info_snap_yaml_test.go
示例6: TestCheckSnapGadgetCannotBeInstalledOnClassic
func (s *checkSnapSuite) TestCheckSnapGadgetCannotBeInstalledOnClassic(c *C) {
reset := release.MockOnClassic(true)
defer reset()
st := state.New(nil)
st.Lock()
defer st.Unlock()
const yaml = `name: gadget
type: gadget
version: 1
`
info, err := snap.InfoFromSnapYaml([]byte(yaml))
c.Assert(err, IsNil)
var openSnapFile = func(path string, si *snap.SideInfo) (*snap.Info, snap.Container, error) {
return info, nil, nil
}
restore := snapstate.MockOpenSnapFile(openSnapFile)
defer restore()
st.Unlock()
err = snapstate.CheckSnap(st, "snap-path", nil, nil, snapstate.Flags{})
st.Lock()
c.Check(err, ErrorMatches, "cannot install a gadget snap on classic")
}
开发者ID:niemeyer,项目名称:snapd,代码行数:27,代码来源:check_snap_test.go
示例7: TestUnmarshalExplicitGlobalPlugBoundToHook
func (s *YamlSuite) TestUnmarshalExplicitGlobalPlugBoundToHook(c *C) {
// NOTE: yaml content cannot use tabs, indent the section with spaces.
info, err := snap.InfoFromSnapYaml([]byte(`
name: snap
plugs:
test-plug: test-interface
hooks:
test-hook:
plugs: ["test-plug"]
`))
c.Assert(err, IsNil)
c.Check(info.Name(), Equals, "snap")
c.Check(info.Plugs, HasLen, 1)
c.Check(info.Slots, HasLen, 0)
c.Check(info.Apps, HasLen, 0)
c.Check(info.Hooks, HasLen, 1)
plug, ok := info.Plugs["test-plug"]
c.Assert(ok, Equals, true, Commentf("Expected plugs to include 'test-plug'"))
hook, ok := info.Hooks["test-hook"]
c.Assert(ok, Equals, true, Commentf("Expected hooks to include 'test-hook'"))
c.Check(plug, DeepEquals, &snap.PlugInfo{
Snap: info,
Name: "test-plug",
Interface: "test-interface",
Hooks: map[string]*snap.HookInfo{hook.Name: hook},
})
c.Check(hook, DeepEquals, &snap.HookInfo{
Snap: info,
Name: "test-hook",
Plugs: map[string]*snap.PlugInfo{plug.Name: plug},
})
}
开发者ID:elopio,项目名称:snappy,代码行数:34,代码来源:info_snap_yaml_test.go
示例8: TestUnmarshalEmpty
func (s *YamlSuite) TestUnmarshalEmpty(c *C) {
info, err := snap.InfoFromSnapYaml([]byte(``))
c.Assert(err, IsNil)
c.Assert(info.Plugs, HasLen, 0)
c.Assert(info.Slots, HasLen, 0)
c.Assert(info.Apps, HasLen, 0)
}
开发者ID:elopio,项目名称:snappy,代码行数:7,代码来源:info_snap_yaml_test.go
示例9: TestUnmarshalHookFiltersOutUnsupportedHooks
func (s *YamlSuite) TestUnmarshalHookFiltersOutUnsupportedHooks(c *C) {
s.restore()
hookType := snap.NewHookType(regexp.MustCompile("test-.*"))
s.restore = snap.MockSupportedHookTypes([]*snap.HookType{hookType})
// NOTE: yaml content cannot use tabs, indent the section with spaces.
info, err := snap.InfoFromSnapYaml([]byte(`
name: snap
hooks:
test-hook:
foo-hook:
`))
c.Assert(err, IsNil)
c.Check(info.Name(), Equals, "snap")
c.Check(info.Plugs, HasLen, 0)
c.Check(info.Slots, HasLen, 0)
c.Check(info.Apps, HasLen, 0)
c.Check(info.Hooks, HasLen, 1)
hook, ok := info.Hooks["test-hook"]
c.Assert(ok, Equals, true, Commentf("Expected hooks to include 'test-hook'"))
c.Check(hook, DeepEquals, &snap.HookInfo{
Snap: info,
Name: "test-hook",
Plugs: nil,
})
}
开发者ID:elopio,项目名称:snappy,代码行数:28,代码来源:info_snap_yaml_test.go
示例10: TestSnapRunSnapExecEnv
func (s *HTestSuite) TestSnapRunSnapExecEnv(c *C) {
info, err := snap.InfoFromSnapYaml(mockYaml)
c.Assert(err, IsNil)
info.SideInfo.Revision = snap.R(42)
usr, err := user.Current()
c.Assert(err, IsNil)
homeEnv := os.Getenv("HOME")
defer os.Setenv("HOME", homeEnv)
for _, withHomeEnv := range []bool{true, false} {
if !withHomeEnv {
os.Setenv("HOME", "")
}
env := snapEnv(info)
c.Check(env, DeepEquals, map[string]string{
"HOME": fmt.Sprintf("%s/snap/snapname/42", usr.HomeDir),
"SNAP": fmt.Sprintf("%s/snapname/42", dirs.SnapMountDir),
"SNAP_ARCH": arch.UbuntuArchitecture(),
"SNAP_COMMON": "/var/snap/snapname/common",
"SNAP_DATA": "/var/snap/snapname/42",
"SNAP_LIBRARY_PATH": "/var/lib/snapd/lib/gl:",
"SNAP_NAME": "snapname",
"SNAP_REEXEC": "",
"SNAP_REVISION": "42",
"SNAP_USER_COMMON": fmt.Sprintf("%s/snap/snapname/common", usr.HomeDir),
"SNAP_USER_DATA": fmt.Sprintf("%s/snap/snapname/42", usr.HomeDir),
"SNAP_VERSION": "1.0",
"XDG_RUNTIME_DIR": fmt.Sprintf("/run/user/%d/snap.snapname", os.Geteuid()),
})
}
}
开发者ID:pedronis,项目名称:snappy,代码行数:34,代码来源:snapenv_test.go
示例11: TestCheckSnapGadgetMissingPrior
func (s *checkSnapSuite) TestCheckSnapGadgetMissingPrior(c *C) {
err := os.MkdirAll(filepath.Dir(dirs.SnapFirstBootStamp), 0755)
c.Assert(err, IsNil)
err = ioutil.WriteFile(dirs.SnapFirstBootStamp, nil, 0644)
c.Assert(err, IsNil)
reset := release.MockOnClassic(false)
defer reset()
st := state.New(nil)
st.Lock()
defer st.Unlock()
const yaml = `name: gadget
type: gadget
version: 1
`
info, err := snap.InfoFromSnapYaml([]byte(yaml))
c.Assert(err, IsNil)
var openSnapFile = func(path string, si *snap.SideInfo) (*snap.Info, snap.Container, error) {
return info, nil, nil
}
restore := snapstate.MockOpenSnapFile(openSnapFile)
defer restore()
st.Unlock()
err = snapstate.CheckSnap(st, "snap-path", nil, 0)
st.Lock()
c.Check(err, ErrorMatches, "cannot find original gadget snap")
}
开发者ID:clobrano,项目名称:snappy,代码行数:32,代码来源:check_snap_test.go
示例12: prepare
func prepare(sourceDir, targetDir, buildDir string) (snapName string, err error) {
// ensure we have valid content
yaml, err := ioutil.ReadFile(filepath.Join(sourceDir, "meta", "snap.yaml"))
if err != nil {
return "", err
}
info, err := snap.InfoFromSnapYaml(yaml)
if err != nil {
return "", err
}
err = snap.Validate(info)
if err != nil {
return "", err
}
if err := copyToBuildDir(sourceDir, buildDir); err != nil {
return "", err
}
// build the package
snapName = fmt.Sprintf("%s_%s_%v.snap", info.Name(), info.Version, debArchitecture(info))
if targetDir != "" {
snapName = filepath.Join(targetDir, snapName)
if _, err := os.Stat(targetDir); os.IsNotExist(err) {
if err := os.MkdirAll(targetDir, 0755); err != nil {
return "", err
}
}
}
return snapName, nil
}
开发者ID:pedronis,项目名称:snappy,代码行数:35,代码来源:build.go
示例13: TestSimple
func (s *InfoSnapYamlTestSuite) TestSimple(c *C) {
info, err := snap.InfoFromSnapYaml(mockYaml)
c.Assert(err, IsNil)
c.Assert(info.Name(), Equals, "foo")
c.Assert(info.Version, Equals, "1.0")
c.Assert(info.Type, Equals, snap.TypeApp)
}
开发者ID:elopio,项目名称:snappy,代码行数:7,代码来源:info_snap_yaml_test.go
示例14: TestUnmarshalStandaloneSlotWithIntAndListAndMap
func (s *YamlSuite) TestUnmarshalStandaloneSlotWithIntAndListAndMap(c *C) {
// NOTE: yaml content cannot use tabs, indent the section with spaces.
info, err := snap.InfoFromSnapYaml([]byte(`
name: snap
slots:
iface:
interface: complex
i: 3
l: [1,2]
m:
a: "A"
`))
c.Assert(err, IsNil)
c.Check(info.Name(), Equals, "snap")
c.Check(info.Plugs, HasLen, 0)
c.Check(info.Slots, HasLen, 1)
c.Assert(info.Slots["iface"], DeepEquals, &snap.SlotInfo{
Snap: info,
Name: "iface",
Interface: "complex",
Attrs: map[string]interface{}{
"i": int64(3),
"l": []interface{}{int64(1), int64(2)},
"m": map[string]interface{}{"a": "A"},
},
})
}
开发者ID:elopio,项目名称:snappy,代码行数:27,代码来源:info_snap_yaml_test.go
示例15: TestGenServiceFileWithBusName
func (s *servicesWrapperGenSuite) TestGenServiceFileWithBusName(c *C) {
yamlText := `
name: snap
version: 1.0
apps:
app:
command: bin/start
stop-command: bin/stop
post-stop-command: bin/stop --post
stop-timeout: 10s
bus-name: foo.bar.baz
daemon: dbus
`
info, err := snap.InfoFromSnapYaml([]byte(yamlText))
c.Assert(err, IsNil)
info.Revision = snap.R(44)
app := info.Apps["app"]
wrapperText, err := wrappers.GenerateSnapServiceFile(app)
c.Assert(err, IsNil)
c.Assert(wrapperText, Equals, expectedDbusService)
}
开发者ID:niemeyer,项目名称:snapd,代码行数:25,代码来源:services_gen_test.go
示例16: TestGenerateSnapServiceFileRestart
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFileRestart(c *C) {
yamlTextTemplate := `
name: snap
apps:
app:
restart-condition: %s
`
for name, cond := range systemd.RestartMap {
yamlText := fmt.Sprintf(yamlTextTemplate, cond)
info, err := snap.InfoFromSnapYaml([]byte(yamlText))
c.Assert(err, IsNil)
info.Revision = snap.R(44)
app := info.Apps["app"]
wrapperText, err := wrappers.GenerateSnapServiceFile(app)
c.Assert(err, IsNil)
if cond == systemd.RestartNever {
c.Check(wrapperText, Matches,
`(?ms).*^Restart=no$.*`, Commentf(name))
} else {
c.Check(wrapperText, Matches,
`(?ms).*^Restart=`+name+`$.*`, Commentf(name))
}
}
}
开发者ID:niemeyer,项目名称:snapd,代码行数:26,代码来源:services_gen_test.go
示例17: TestCheckSnapGadgetNoPrior
func (s *checkSnapSuite) TestCheckSnapGadgetNoPrior(c *C) {
reset := release.MockOnClassic(false)
defer reset()
st := state.New(nil)
st.Lock()
defer st.Unlock()
st.Set("seeded", true)
const yaml = `name: gadget
type: gadget
version: 1
`
info, err := snap.InfoFromSnapYaml([]byte(yaml))
c.Assert(err, IsNil)
var openSnapFile = func(path string, si *snap.SideInfo) (*snap.Info, snap.Container, error) {
return info, nil, nil
}
restore := snapstate.MockOpenSnapFile(openSnapFile)
defer restore()
st.Unlock()
err = snapstate.CheckSnap(st, "snap-path", nil, nil, snapstate.Flags{})
st.Lock()
c.Check(err, IsNil)
}
开发者ID:niemeyer,项目名称:snapd,代码行数:27,代码来源:check_snap_test.go
示例18: TestSanitizePlugWithPrivilegedTrue
func (s *DockerSupportInterfaceSuite) TestSanitizePlugWithPrivilegedTrue(c *C) {
var mockSnapYaml = []byte(`name: docker
version: 1.0
plugs:
privileged:
interface: docker-support
privileged-containers: true
`)
info, err := snap.InfoFromSnapYaml(mockSnapYaml)
c.Assert(err, IsNil)
info.SideInfo = snap.SideInfo{Developer: "docker"}
plug := &interfaces.Plug{PlugInfo: info.Plugs["privileged"]}
err = s.iface.SanitizePlug(plug)
c.Assert(err, IsNil)
snippet, err := s.iface.ConnectedPlugSnippet(plug, s.slot, interfaces.SecurityAppArmor)
c.Assert(err, IsNil)
c.Assert(string(snippet), testutil.Contains, `change_profile -> *,`)
snippet, err = s.iface.ConnectedPlugSnippet(plug, s.slot, interfaces.SecuritySecComp)
c.Assert(err, IsNil)
c.Assert(string(snippet), testutil.Contains, `@unrestricted`)
}
开发者ID:pedronis,项目名称:snappy,代码行数:25,代码来源:docker_support_test.go
示例19: TestDaemonEverythingExample
func (s *YamlSuite) TestDaemonEverythingExample(c *C) {
y := []byte(`name: wat
version: 42
apps:
svc:
command: svc1
description: svc one
stop-timeout: 25s
daemon: forking
stop-command: stop-cmd
post-stop-command: post-stop-cmd
restart-condition: on-abnormal
bus-name: busName
`)
info, err := snap.InfoFromSnapYaml(y)
c.Assert(err, IsNil)
c.Check(info.Apps, DeepEquals, map[string]*snap.AppInfo{
"svc": {
Snap: info,
Name: "svc",
Command: "svc1",
Daemon: "forking",
RestartCond: systemd.RestartOnAbnormal,
StopTimeout: timeout.Timeout(25 * time.Second),
StopCommand: "stop-cmd",
PostStopCommand: "post-stop-cmd",
BusName: "busName",
},
})
}
开发者ID:pedronis,项目名称:snappy,代码行数:30,代码来源:info_snap_yaml_test.go
示例20: TestSnapYamlEpochDefault
func (s *YamlSuite) TestSnapYamlEpochDefault(c *C) {
y := []byte(`name: binary
version: 1.0
`)
info, err := snap.InfoFromSnapYaml(y)
c.Assert(err, IsNil)
c.Assert(info.Epoch, Equals, "0")
}
开发者ID:elopio,项目名称:snappy,代码行数:8,代码来源:info_snap_yaml_test.go
注:本文中的github.com/snapcore/snapd/snap.InfoFromSnapYaml函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论