From 0e9ccb4481f105ff907cb4ee3a264b724941bf40 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Thu, 6 Feb 2014 19:55:55 +0400 Subject: [PATCH] Publishing repository without signer (no signed files). --- debian/publish.go | 16 +++++++++------- debian/publish_test.go | 37 ++++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/debian/publish.go b/debian/publish.go index c908db5a..7b28e70c 100644 --- a/debian/publish.go +++ b/debian/publish.go @@ -232,14 +232,16 @@ func (p *PublishedRepo) Publish(repo *Repository, packageCollection *PackageColl releaseFilename := releaseFile.Name() releaseFile.Close() - err = signer.DetachedSign(releaseFilename, releaseFilename+".gpg") - if err != nil { - return fmt.Errorf("unable to sign Release file: %s", err) - } + if signer != nil { + err = signer.DetachedSign(releaseFilename, releaseFilename+".gpg") + if err != nil { + return fmt.Errorf("unable to sign Release file: %s", err) + } - err = signer.ClearSign(releaseFilename, filepath.Join(filepath.Dir(releaseFilename), "InRelease")) - if err != nil { - return fmt.Errorf("unable to sign Release file: %s", err) + err = signer.ClearSign(releaseFilename, filepath.Join(filepath.Dir(releaseFilename), "InRelease")) + if err != nil { + return fmt.Errorf("unable to sign Release file: %s", err) + } } return nil diff --git a/debian/publish_test.go b/debian/publish_test.go index 666b1421..f8a97e55 100644 --- a/debian/publish_test.go +++ b/debian/publish_test.go @@ -8,8 +8,25 @@ import ( "path/filepath" ) +type pathExistsChecker struct { + *CheckerInfo +} + +var PathExists = &pathExistsChecker{ + &CheckerInfo{Name: "PathExists", Params: []string{"path"}}, +} + +func (checker *pathExistsChecker) Check(params []interface{}, names []string) (result bool, error string) { + _, err := os.Stat(params[0].(string)) + return err == nil, "" +} + type NullSigner struct{} +func (n *NullSigner) Init() error { + return nil +} + func (n *NullSigner) SetKey(keyRef string) { } @@ -165,6 +182,13 @@ func (s *PublishedRepoSuite) TestPublish(c *C) { c.Assert(err, IsNil) } +func (s *PublishedRepoSuite) TestPublishNoSigner(c *C) { + err := s.repo.Publish(s.packageRepo, s.packageCollection, nil) + c.Assert(err, IsNil) + + c.Check(filepath.Join(s.packageRepo.RootPath, "public/ppa/dists/squeeze/Release"), PathExists) +} + func (s *PublishedRepoSuite) TestString(c *C) { c.Check(s.repo.String(), Equals, "ppa/squeeze (main) publishes [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze") @@ -304,19 +328,6 @@ func (s *PublishedRepoCollectionSuite) TestBySnapshot(c *C) { c.Check(s.collection.BySnapshot(s.snap2), DeepEquals, []*PublishedRepo{s.repo2}) } -type pathExistsChecker struct { - *CheckerInfo -} - -var PathExists = &pathExistsChecker{ - &CheckerInfo{Name: "PathExists", Params: []string{"path"}}, -} - -func (checker *pathExistsChecker) Check(params []interface{}, names []string) (result bool, error string) { - _, err := os.Stat(params[0].(string)) - return err == nil, "" -} - type PublishedRepoRemoveSuite struct { PackageListMixinSuite db database.Storage