func (s *SnapTestSuite) TestLocalSnapSimple(c *C) { snapYaml, err := s.makeInstalledMockSnap() c.Assert(err, IsNil) snap, err := NewInstalledSnapPart(snapYaml, testOrigin) c.Assert(err, IsNil) c.Assert(snap, NotNil) c.Check(snap.Name(), Equals, "hello-app") c.Check(snap.Version(), Equals, "1.10") c.Check(snap.IsActive(), Equals, false) c.Check(snap.Description(), Equals, "Hello") c.Check(snap.IsInstalled(), Equals, true) services := snap.ServiceYamls() c.Assert(services, HasLen, 1) c.Assert(services[0].Name, Equals, "svc1") // ensure we get valid Date() st, err := os.Stat(snap.basedir) c.Assert(err, IsNil) c.Assert(snap.Date(), Equals, st.ModTime()) c.Assert(snap.basedir, Equals, filepath.Join(s.tempdir, "snaps", helloAppComposedName, "1.10")) c.Assert(snap.InstalledSize(), Not(Equals), -1) }
func snapInfo(pkgname string, includeStore, verbose bool) error { snap := snappy.ActiveSnapByName(pkgname) if snap == nil && includeStore { m := snappy.NewUbuntuStoreSnapRepository() var err error snap, err = m.Snap(pkgname) if err != nil { return fmt.Errorf("cannot get details for snap %q: %s", pkgname, err) } } if snap == nil { return fmt.Errorf("no snap '%s' found", pkgname) } // TRANSLATORS: the %s is a channel name fmt.Printf(i18n.G("channel: %s\n"), snap.Channel()) // TRANSLATORS: the %s is a version string fmt.Printf(i18n.G("version: %s\n"), snap.Version()) // TRANSLATORS: the %s is a date fmt.Printf(i18n.G("updated: %s\n"), snap.Date()) if verbose { // TRANSLATORS: the %s is a date fmt.Printf(i18n.G("installed: %s\n"), "n/a") // TRANSLATORS: the %s is a size fmt.Printf(i18n.G("binary-size: %v\n"), snap.InstalledSize()) // TRANSLATORS: the %s is a size fmt.Printf(i18n.G("data-size: %s\n"), "n/a") // FIXME: implement backup list per spec } return nil }
func snapInfo(pkgname string, includeStore, verbose bool) error { snap := snappy.ActiveSnapByName(pkgname) if snap == nil && includeStore { m := snappy.NewUbuntuStoreSnapRepository() snaps, err := m.Details(snappy.SplitOrigin(pkgname)) if err == nil && len(snaps) == 1 { snap = snaps[0] } } if snap == nil { return fmt.Errorf("No snap '%s' found", pkgname) } // TRANSLATORS: the %s is a channel name fmt.Printf(i18n.G("channel: %s\n"), snap.Channel()) // TRANSLATORS: the %s is a version string fmt.Printf(i18n.G("version: %s\n"), snap.Version()) // TRANSLATORS: the %s is a date fmt.Printf(i18n.G("updated: %s\n"), snap.Date()) if verbose { // TRANSLATORS: the %s is a date fmt.Printf(i18n.G("installed: %s\n"), "n/a") // TRANSLATORS: the %s is a size fmt.Printf(i18n.G("binary-size: %v\n"), snap.InstalledSize()) // TRANSLATORS: the %s is a size fmt.Printf(i18n.G("data-size: %s\n"), "n/a") // FIXME: implement backup list per spec } return nil }
func (s *SnapTestSuite) TestServicesWithPorts(c *C) { const packageHello = `name: hello-app version: 1.10 icon: meta/hello.svg binaries: - name: bin/hello services: - name: svc1 description: "Service #1" ports: external: ui: port: 8080/tcp nothing: port: 8081/tcp negotiable: yes - name: svc2 description: "Service #2" ` yamlFile, err := makeInstalledMockSnap(s.tempdir, packageHello) c.Assert(err, IsNil) snap, err := NewInstalledSnapPart(yamlFile, testOrigin) c.Assert(err, IsNil) c.Assert(snap, NotNil) c.Assert(snap.Name(), Equals, "hello-app") c.Assert(snap.Origin(), Equals, testOrigin) c.Assert(snap.Version(), Equals, "1.10") c.Assert(snap.IsActive(), Equals, false) services := snap.ServiceYamls() c.Assert(services, HasLen, 2) c.Assert(services[0].Name, Equals, "svc1") c.Assert(services[0].Description, Equals, "Service #1") external1Ui, ok := services[0].Ports.External["ui"] c.Assert(ok, Equals, true) c.Assert(external1Ui.Port, Equals, "8080/tcp") c.Assert(external1Ui.Negotiable, Equals, false) external1Nothing, ok := services[0].Ports.External["nothing"] c.Assert(ok, Equals, true) c.Assert(external1Nothing.Port, Equals, "8081/tcp") c.Assert(external1Nothing.Negotiable, Equals, true) c.Assert(services[1].Name, Equals, "svc2") c.Assert(services[1].Description, Equals, "Service #2") // ensure we get valid Date() st, err := os.Stat(snap.basedir) c.Assert(err, IsNil) c.Assert(snap.Date(), Equals, st.ModTime()) c.Assert(snap.basedir, Equals, filepath.Join(s.tempdir, "snaps", helloAppComposedName, "1.10")) c.Assert(snap.InstalledSize(), Not(Equals), -1) }
// FindSnapsByNameAndVersion returns the snaps with the name/version in the // given slice of snaps func FindSnapsByNameAndVersion(needle, version string, haystack []*Snap) []*Snap { name, developer := SplitDeveloper(needle) ignorens := developer == "" var found []*Snap for _, snap := range haystack { if snap.Name() == name && snap.Version() == version && (ignorens || snap.Developer() == developer) { found = append(found, snap) } } return found }
func (s *SnapTestSuite) TestServicesWithPorts(c *C) { const packageHello = `name: hello-snap version: 1.10 apps: hello: command: bin/hello svc1: command: svc1 type: forking description: "Service #1" ports: external: ui: port: 8080/tcp nothing: port: 8081/tcp negotiable: yes svc2: command: svc2 type: forking description: "Service #2" ` yamlFile, err := makeInstalledMockSnap(packageHello, 11) c.Assert(err, IsNil) snap, err := NewInstalledSnap(yamlFile) c.Assert(err, IsNil) c.Assert(snap, NotNil) c.Assert(snap.Name(), Equals, "hello-snap") c.Assert(snap.Developer(), Equals, testDeveloper) c.Assert(snap.Version(), Equals, "1.10") c.Assert(snap.IsActive(), Equals, false) apps := snap.Info().Apps c.Assert(apps, HasLen, 3) c.Assert(apps["svc1"].Name, Equals, "svc1") c.Assert(apps["svc2"].Name, Equals, "svc2") }
func (s *SnapTestSuite) TestLocalSnapSimple(c *C) { snapYaml, err := makeInstalledMockSnap("", 15) c.Assert(err, IsNil) snap, err := NewInstalledSnap(snapYaml) c.Assert(err, IsNil) c.Assert(snap, NotNil) c.Check(snap.Name(), Equals, "hello-snap") c.Check(snap.Version(), Equals, "1.10") c.Check(snap.IsActive(), Equals, false) c.Check(snap.Info().Summary(), Equals, "hello in summary") c.Check(snap.Info().Description(), Equals, "Hello...") c.Check(snap.Info().Revision, Equals, 15) mountDir := snap.Info().MountDir() _, err = os.Stat(mountDir) c.Assert(err, IsNil) c.Assert(mountDir, Equals, filepath.Join(dirs.SnapSnapsDir, helloSnapComposedName, "15")) }