mirror of https://github.com/aptly-dev/aptly
97 lines
3.5 KiB
Go
97 lines
3.5 KiB
Go
package deb
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
|
|
"github.com/aptly-dev/aptly/pgp"
|
|
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
type DebSuite struct {
|
|
debFile, debFile2, debFileWithXzControl, debFileWithZstdControl, dscFile, dscFileNoSign string
|
|
}
|
|
|
|
var _ = Suite(&DebSuite{})
|
|
|
|
func (s *DebSuite) SetUpSuite(c *C) {
|
|
_, _File, _, _ := runtime.Caller(0)
|
|
s.debFile = filepath.Join(filepath.Dir(_File), "../system/files/libboost-program-options-dev_1.49.0.1_i386.deb")
|
|
s.debFile2 = filepath.Join(filepath.Dir(_File), "../system/changes/hardlink_0.2.1_amd64.deb")
|
|
s.debFileWithXzControl = filepath.Join(filepath.Dir(_File), "../system/changes/libqt5concurrent5-dbgsym_5.9.1+dfsg-2+18.04+bionic+build4_amd64.ddeb")
|
|
s.debFileWithZstdControl = filepath.Join(filepath.Dir(_File), "../system/changes/libqt5concurrent5-dbgsym_5.15.2+dfsg-12_amd64.ddeb")
|
|
s.dscFile = filepath.Join(filepath.Dir(_File), "../system/files/pyspi_0.6.1-1.3.dsc")
|
|
s.dscFileNoSign = filepath.Join(filepath.Dir(_File), "../system/files/pyspi-0.6.1-1.3.stripped.dsc")
|
|
}
|
|
|
|
func (s *DebSuite) TestGetControlFileFromDeb(c *C) {
|
|
_, err := GetControlFileFromDeb("/no/such/file")
|
|
c.Check(err, ErrorMatches, ".*no such file or directory")
|
|
|
|
_, _File, _, _ := runtime.Caller(0)
|
|
_, err = GetControlFileFromDeb(_File)
|
|
c.Check(err, ErrorMatches, "^.+ar: missing global header")
|
|
|
|
st, err := GetControlFileFromDeb(s.debFile)
|
|
c.Check(err, IsNil)
|
|
c.Check(st["Version"], Equals, "1.49.0.1")
|
|
c.Check(st["Package"], Equals, "libboost-program-options-dev")
|
|
}
|
|
|
|
func (s *DebSuite) TestGetControlFileFromDebWithXzControl(c *C) {
|
|
// Has control.tar.xz archive inside.
|
|
st, err := GetControlFileFromDeb(s.debFileWithXzControl)
|
|
c.Check(err, IsNil)
|
|
c.Check(st["Version"], Equals, "5.9.1+dfsg-2+18.04+bionic+build4")
|
|
c.Check(st["Package"], Equals, "libqt5concurrent5-dbgsym")
|
|
}
|
|
|
|
func (s *DebSuite) TestGetControlFileFromDebWithZstdControl(c *C) {
|
|
// Has control.tar.zstd archive inside.
|
|
st, err := GetControlFileFromDeb(s.debFileWithZstdControl)
|
|
c.Check(err, IsNil)
|
|
c.Check(st["Version"], Equals, "5.15.2+dfsg-12")
|
|
c.Check(st["Package"], Equals, "libqt5concurrent5-dbgsym")
|
|
}
|
|
|
|
func (s *DebSuite) TestGetControlFileFromDsc(c *C) {
|
|
verifier := &pgp.GoVerifier{}
|
|
|
|
_, err := GetControlFileFromDsc("/no/such/file", verifier)
|
|
c.Check(err, ErrorMatches, ".*no such file or directory")
|
|
|
|
_, _File, _, _ := runtime.Caller(0)
|
|
_, err = GetControlFileFromDsc(_File, verifier)
|
|
c.Check(err, ErrorMatches, "malformed stanza syntax")
|
|
|
|
st, err := GetControlFileFromDsc(s.dscFile, verifier)
|
|
c.Check(err, IsNil)
|
|
c.Check(st["Version"], Equals, "0.6.1-1.3")
|
|
c.Check(st["Source"], Equals, "pyspi")
|
|
|
|
st, err = GetControlFileFromDsc(s.dscFileNoSign, verifier)
|
|
c.Check(err, IsNil)
|
|
c.Check(st["Version"], Equals, "0.6.1-1.4")
|
|
c.Check(st["Source"], Equals, "pyspi")
|
|
}
|
|
|
|
func (s *DebSuite) TestGetContentsFromDeb(c *C) {
|
|
f, err := os.Open(s.debFile)
|
|
c.Assert(err, IsNil)
|
|
contents, err := GetContentsFromDeb(f, s.debFile)
|
|
c.Check(err, IsNil)
|
|
c.Check(contents, DeepEquals, []string{"usr/share/doc/libboost-program-options-dev/changelog.gz",
|
|
"usr/share/doc/libboost-program-options-dev/copyright"})
|
|
c.Assert(f.Close(), IsNil)
|
|
|
|
f, err = os.Open(s.debFile2)
|
|
c.Assert(err, IsNil)
|
|
contents, err = GetContentsFromDeb(f, s.debFile2)
|
|
c.Check(err, IsNil)
|
|
c.Check(contents, DeepEquals, []string{"usr/bin/hardlink", "usr/share/man/man1/hardlink.1.gz",
|
|
"usr/share/doc/hardlink/changelog.gz", "usr/share/doc/hardlink/copyright", "usr/share/doc/hardlink/NEWS.Debian.gz"})
|
|
c.Assert(f.Close(), IsNil)
|
|
}
|