func (s *ReleaseTestSuite) TestForceDevMode(c *C) { // Restore real OS info at the end of this function. defer release.MockReleaseInfo(&release.OS{})() distros := []struct { id string idVersion string devmode bool }{ // Please keep this list sorted {id: "arch", devmode: true}, {id: "debian", devmode: true}, {id: "elementary", devmode: true}, {id: "elementary", idVersion: "0.4", devmode: false}, {id: "fedora", devmode: true}, {id: "gentoo", devmode: true}, {id: "neon", devmode: false}, {id: "opensuse", devmode: true}, {id: "rhel", devmode: true}, {id: "ubuntu", devmode: false}, } for _, distro := range distros { rel := &release.OS{ID: distro.id, VersionID: distro.idVersion} c.Logf("checking distribution %#v", rel) release.MockReleaseInfo(rel) c.Assert(release.ReleaseInfo.ForceDevMode(), Equals, distro.devmode) } }
func (s *ReleaseTestSuite) TestReleaseInfo(c *C) { reset := release.MockReleaseInfo(&release.OS{ ID: "distro-id", }) defer reset() c.Assert(release.ReleaseInfo.ID, Equals, "distro-id") }
func (s *policySuite) TestOnClassicInstallation(c *C) { r1 := release.MockOnClassic(false) defer r1() r2 := release.MockReleaseInfo(&release.ReleaseInfo) defer r2() tests := []struct { distro string // "" => not classic installYaml string err string // "" => no error }{ {"", `name: install-snap slots: install-slot-on-classic-distros:`, `installation not allowed by "install-slot-on-classic-distros" slot rule.*`}, {"debian", `name: install-snap slots: install-slot-on-classic-distros:`, ""}, {"", `name: install-snap plugs: install-plug-on-classic-distros:`, `installation not allowed by "install-plug-on-classic-distros" plug rule.*`}, {"debian", `name: install-snap plugs: install-plug-on-classic-distros:`, ""}, } for _, t := range tests { if t.distro == "" { release.OnClassic = false } else { release.OnClassic = true release.ReleaseInfo = release.OS{ ID: t.distro, } } installSnap := snaptest.MockInfo(c, t.installYaml, nil) cand := policy.InstallCandidate{ Snap: installSnap, BaseDeclaration: s.baseDecl, } err := cand.Check() if t.err == "" { c.Check(err, IsNil) } else { c.Check(err, ErrorMatches, t.err) } } }
func (s *policySuite) TestSlotOnClassicCheckConnection(c *C) { r1 := release.MockOnClassic(false) defer r1() r2 := release.MockReleaseInfo(&release.ReleaseInfo) defer r2() tests := []struct { distro string // "" => not classic iface string err string // "" => no error }{ {"ubuntu", "slot-on-classic-true", ""}, {"", "slot-on-classic-true", `connection not allowed by slot rule of interface "slot-on-classic-true"`}, {"", "slot-on-classic-false", ""}, {"ubuntu", "slot-on-classic-false", "connection not allowed.*"}, {"ubuntu", "slot-on-classic-distros", ""}, {"debian", "slot-on-classic-distros", ""}, {"", "slot-on-classic-distros", "connection not allowed.*"}, {"other", "slot-on-classic-distros", "connection not allowed.*"}, } for _, t := range tests { if t.distro == "" { release.OnClassic = false } else { release.OnClassic = true release.ReleaseInfo = release.OS{ ID: t.distro, } } cand := policy.ConnectCandidate{ Plug: s.plugSnap.Plugs[t.iface], Slot: s.slotSnap.Slots[t.iface], BaseDeclaration: s.baseDecl, } err := cand.Check() if t.err == "" { c.Check(err, IsNil) } else { c.Check(err, ErrorMatches, t.err) } } }