mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-06 05:30:57 +00:00
3fe8a09928
Package has been split into multiple structure loaded on demand: files, extra, depends. They're saved and loaded completely separately.
94 lines
2.4 KiB
Go
94 lines
2.4 KiB
Go
package debian
|
|
|
|
import (
|
|
"github.com/smira/aptly/database"
|
|
. "launchpad.net/gocheck"
|
|
)
|
|
|
|
type PackageCollectionSuite struct {
|
|
collection *PackageCollection
|
|
p *Package
|
|
db database.Storage
|
|
}
|
|
|
|
var _ = Suite(&PackageCollectionSuite{})
|
|
|
|
func (s *PackageCollectionSuite) SetUpTest(c *C) {
|
|
s.p = NewPackageFromControlFile(packageStanza.Copy())
|
|
s.db, _ = database.OpenDB(c.MkDir())
|
|
s.collection = NewPackageCollection(s.db)
|
|
}
|
|
|
|
func (s *PackageCollectionSuite) TearDownTest(c *C) {
|
|
s.db.Close()
|
|
}
|
|
|
|
func (s *PackageCollectionSuite) TestUpdate(c *C) {
|
|
// package doesn't exist, update ok
|
|
err := s.collection.Update(s.p)
|
|
c.Assert(err, IsNil)
|
|
res, err := s.collection.ByKey(s.p.Key(""))
|
|
c.Assert(err, IsNil)
|
|
c.Assert(res.Equals(s.p), Equals, true)
|
|
|
|
// same package, ok
|
|
p2 := NewPackageFromControlFile(packageStanza.Copy())
|
|
err = s.collection.Update(p2)
|
|
c.Assert(err, IsNil)
|
|
res, err = s.collection.ByKey(p2.Key(""))
|
|
c.Assert(err, IsNil)
|
|
c.Assert(res.Equals(s.p), Equals, true)
|
|
|
|
// change some metadata
|
|
p2.Source = "lala"
|
|
err = s.collection.Update(p2)
|
|
c.Assert(err, IsNil)
|
|
res, err = s.collection.ByKey(p2.Key(""))
|
|
c.Assert(err, IsNil)
|
|
c.Assert(res.Equals(s.p), Equals, false)
|
|
c.Assert(res.Equals(p2), Equals, true)
|
|
|
|
// change file info
|
|
p2 = NewPackageFromControlFile(packageStanza.Copy())
|
|
p2.UpdateFiles(nil)
|
|
res, err = s.collection.ByKey(p2.Key(""))
|
|
err = s.collection.Update(p2)
|
|
c.Assert(err, ErrorMatches, ".*conflict with existing packge")
|
|
p2 = NewPackageFromControlFile(packageStanza.Copy())
|
|
files := p2.Files()
|
|
files[0].Checksums.MD5 = "abcdef"
|
|
p2.UpdateFiles(files)
|
|
res, err = s.collection.ByKey(p2.Key(""))
|
|
err = s.collection.Update(p2)
|
|
c.Assert(err, ErrorMatches, ".*conflict with existing packge")
|
|
}
|
|
|
|
func (s *PackageCollectionSuite) TestByKey(c *C) {
|
|
err := s.collection.Update(s.p)
|
|
c.Assert(err, IsNil)
|
|
|
|
p2, err := s.collection.ByKey(s.p.Key(""))
|
|
c.Assert(err, IsNil)
|
|
c.Assert(p2.Equals(s.p), Equals, true)
|
|
}
|
|
|
|
func (s *PackageCollectionSuite) TestAllPackageRefs(c *C) {
|
|
err := s.collection.Update(s.p)
|
|
c.Assert(err, IsNil)
|
|
|
|
refs := s.collection.AllPackageRefs()
|
|
c.Check(refs.Len(), Equals, 1)
|
|
c.Check(refs.Refs[0], DeepEquals, s.p.Key(""))
|
|
}
|
|
|
|
func (s *PackageCollectionSuite) TestDeleteByKey(c *C) {
|
|
err := s.collection.Update(s.p)
|
|
c.Assert(err, IsNil)
|
|
|
|
err = s.collection.DeleteByKey(s.p.Key(""))
|
|
c.Check(err, IsNil)
|
|
|
|
_, err = s.collection.ByKey(s.p.Key(""))
|
|
c.Check(err, ErrorMatches, "key not found")
|
|
}
|