From fb9b90e7150ea575ddaceead45328b8c9bdbc46a Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Sat, 15 Feb 2014 16:33:00 +0400 Subject: [PATCH] Tests for downloading with sources, flat and regular repos. --- debian/package_test.go | 34 +++++++------- debian/remote.go | 1 - debian/remote_test.go | 101 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 115 insertions(+), 21 deletions(-) diff --git a/debian/package_test.go b/debian/package_test.go index 553374af..0392964b 100644 --- a/debian/package_test.go +++ b/debian/package_test.go @@ -88,16 +88,16 @@ func (s *PackageSuite) TestNewSourceFromPara(c *C) { c.Check(p.Files, HasLen, 3) c.Check(p.Files[0].Filename, Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.dsc") - c.Check(p.Files[0].Checksums.Size, Equals, int64(2583)) - c.Check(p.Files[0].Checksums.MD5, Equals, "eb2a7a57c92ebac9d3d1c2d2d719f290") - c.Check(p.Files[0].Checksums.SHA1, Equals, "a70b87bba4391c0138cc9cc75efa747c4eeea2d7") - c.Check(p.Files[0].Checksums.SHA256, Equals, "36ae7f68974bd69450229244510faa8f8056709913770218821069e6cce6b4b8") + c.Check(p.Files[0].Checksums.Size, Equals, int64(3)) + c.Check(p.Files[0].Checksums.MD5, Equals, "900150983cd24fb0d6963f7d28e17f72") + c.Check(p.Files[0].Checksums.SHA1, Equals, "a9993e364706816aba3e25717850c26c9cd0d89d") + c.Check(p.Files[0].Checksums.SHA256, Equals, "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") c.Check(p.Files[1].Filename, Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0.orig.tar.gz") - c.Check(p.Files[1].Checksums.Size, Equals, int64(10049)) - c.Check(p.Files[1].Checksums.MD5, Equals, "f280abdc753beea4243d99530f023f12") - c.Check(p.Files[1].Checksums.SHA1, Equals, "c5bea16095ae1685941193370d20756e036d61a7") - c.Check(p.Files[1].Checksums.SHA256, Equals, "9d362301892bd647a361755bde28f0a39644a5bbb2ff5300060373ee29d9d87a") + c.Check(p.Files[1].Checksums.Size, Equals, int64(4)) + c.Check(p.Files[1].Checksums.MD5, Equals, "e2fc714c4727ee9395f324cd2e7f331f") + c.Check(p.Files[1].Checksums.SHA1, Equals, "81fe8bfe87576c3ecb22426f8e57847382917acf") + c.Check(p.Files[1].Checksums.SHA256, Equals, "88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589") c.Check(p.Files[2].Filename, Equals, "pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.debian.tar.gz") @@ -326,20 +326,20 @@ Architecture: all Standards-Version: 3.9.3 Format: 3.0 (quilt) Files: - eb2a7a57c92ebac9d3d1c2d2d719f290 2583 access-modifier-checker_1.0-4.dsc - f280abdc753beea4243d99530f023f12 10049 access-modifier-checker_1.0.orig.tar.gz - 182b18d7a4bfd1a4e6bfda886f986766 4310 access-modifier-checker_1.0-4.debian.tar.gz + 900150983cd24fb0d6963f7d28e17f72 3 access-modifier-checker_1.0-4.dsc + e2fc714c4727ee9395f324cd2e7f331f 4 access-modifier-checker_1.0.orig.tar.gz + ab56b4d92b40713acc5af89985d4b786 5 access-modifier-checker_1.0-4.debian.tar.gz Dm-Upload-Allowed: yes Vcs-Browser: http://git.debian.org/?p=pkg-java/access-modifier-checker.git Vcs-Git: git://git.debian.org/git/pkg-java/access-modifier-checker.git Checksums-Sha1: - a70b87bba4391c0138cc9cc75efa747c4eeea2d7 2583 access-modifier-checker_1.0-4.dsc - c5bea16095ae1685941193370d20756e036d61a7 10049 access-modifier-checker_1.0.orig.tar.gz - 54033d40ae2f35eb147df0876c649eb9d2eb86bc 4310 access-modifier-checker_1.0-4.debian.tar.gz + a9993e364706816aba3e25717850c26c9cd0d89d 3 access-modifier-checker_1.0-4.dsc + 81fe8bfe87576c3ecb22426f8e57847382917acf 4 access-modifier-checker_1.0.orig.tar.gz + 03de6c570bfe24bfc328ccd7ca46b76eadaf4334 5 access-modifier-checker_1.0-4.debian.tar.gz Checksums-Sha256: - 36ae7f68974bd69450229244510faa8f8056709913770218821069e6cce6b4b8 2583 access-modifier-checker_1.0-4.dsc - 9d362301892bd647a361755bde28f0a39644a5bbb2ff5300060373ee29d9d87a 10049 access-modifier-checker_1.0.orig.tar.gz - 23852c63f7b5511b4c827a443ff0f92926fc71efc57dc47b49cb2fd9136d8f95 4310 access-modifier-checker_1.0-4.debian.tar.gz + ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad 3 access-modifier-checker_1.0-4.dsc + 88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589 4 access-modifier-checker_1.0.orig.tar.gz + 36bbe50ed96841d10443bcb670d6554f0a34b761be67ec9c4a8ad2c0c44ca42c 5 access-modifier-checker_1.0-4.debian.tar.gz Homepage: https://github.com/kohsuke/access-modifier Package-List: libaccess-modifier-checker-java deb java optional diff --git a/debian/remote.go b/debian/remote.go index e7fe68bf..21d3a566 100644 --- a/debian/remote.go +++ b/debian/remote.go @@ -393,7 +393,6 @@ func (repo *RemoteRepo) Download(d utils.Downloader, packageCollection *PackageC return nil }) - if err != nil { return fmt.Errorf("unable to build download queue: %s", err) } diff --git a/debian/remote_test.go b/debian/remote_test.go index f7fa9f76..8b590991 100644 --- a/debian/remote_test.go +++ b/debian/remote_test.go @@ -130,10 +130,18 @@ func (s *RemoteRepoSuite) TestBinaryURL(c *C) { c.Assert(s.repo.BinaryURL("main", "amd64").String(), Equals, "http://mirror.yandex.ru/debian/dists/squeeze/main/binary-amd64/Packages") } +func (s *RemoteRepoSuite) TestSourcesURL(c *C) { + c.Assert(s.repo.SourcesURL("main").String(), Equals, "http://mirror.yandex.ru/debian/dists/squeeze/main/source/Sources") +} + func (s *RemoteRepoSuite) TestFlatBinaryURL(c *C) { c.Assert(s.flat.FlatBinaryURL().String(), Equals, "http://repos.express42.com/virool/precise/Packages") } +func (s *RemoteRepoSuite) TestFlatSourcesURL(c *C) { + c.Assert(s.flat.FlatSourcesURL().String(), Equals, "http://repos.express42.com/virool/precise/Sources") +} + func (s *RemoteRepoSuite) TestPackageURL(c *C) { c.Assert(s.repo.PackageURL("pool/main/0/0ad/0ad_0~r11863-2_i386.deb").String(), Equals, "http://mirror.yandex.ru/debian/pool/main/0/0ad/0ad_0~r11863-2_i386.deb") @@ -237,6 +245,48 @@ func (s *RemoteRepoSuite) TestDownload(c *C) { c.Check(pkg.Name, Equals, "amanda-client") } +func (s *RemoteRepoSuite) TestDownloadWithSources(c *C) { + s.repo.Architectures = []string{"i386"} + s.repo.DownloadSources = true + + err := s.repo.Fetch(s.downloader, nil) + c.Assert(err, IsNil) + + s.downloader.ExpectError("http://mirror.yandex.ru/debian/dists/squeeze/main/binary-i386/Packages.bz2", errors.New("HTTP 404")) + s.downloader.ExpectError("http://mirror.yandex.ru/debian/dists/squeeze/main/binary-i386/Packages.gz", errors.New("HTTP 404")) + s.downloader.ExpectResponse("http://mirror.yandex.ru/debian/dists/squeeze/main/binary-i386/Packages", examplePackagesFile) + s.downloader.ExpectError("http://mirror.yandex.ru/debian/dists/squeeze/main/source/Sources.bz2", errors.New("HTTP 404")) + s.downloader.ExpectError("http://mirror.yandex.ru/debian/dists/squeeze/main/source/Sources.gz", errors.New("HTTP 404")) + s.downloader.ExpectResponse("http://mirror.yandex.ru/debian/dists/squeeze/main/source/Sources", exampleSourcesFile) + s.downloader.AnyExpectResponse("http://mirror.yandex.ru/debian/pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb", "xyz") + s.downloader.AnyExpectResponse("http://mirror.yandex.ru/debian/pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.dsc", "abc") + s.downloader.AnyExpectResponse("http://mirror.yandex.ru/debian/pool/main/a/access-modifier-checker/access-modifier-checker_1.0.orig.tar.gz", "abcd") + s.downloader.AnyExpectResponse("http://mirror.yandex.ru/debian/pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.debian.tar.gz", "abcde") + + err = s.repo.Download(s.downloader, s.packageCollection, s.packageRepo, false) + c.Assert(err, IsNil) + c.Assert(s.downloader.Empty(), Equals, true) + c.Assert(s.repo.packageRefs, NotNil) + + pkg, err := s.packageCollection.ByKey(s.repo.packageRefs.Refs[0]) + c.Assert(err, IsNil) + + result, err := pkg.VerifyFiles(s.packageRepo) + c.Check(result, Equals, true) + c.Check(err, IsNil) + + c.Check(pkg.Name, Equals, "amanda-client") + + pkg, err = s.packageCollection.ByKey(s.repo.packageRefs.Refs[1]) + c.Assert(err, IsNil) + + result, err = pkg.VerifyFiles(s.packageRepo) + c.Check(result, Equals, true) + c.Check(err, IsNil) + + c.Check(pkg.Name, Equals, "access-modifier-checker") +} + func (s *RemoteRepoSuite) TestDownloadFlat(c *C) { downloader := utils.NewFakeDownloader() downloader.ExpectResponse("http://repos.express42.com/virool/precise/Release", exampleReleaseFile) @@ -263,6 +313,49 @@ func (s *RemoteRepoSuite) TestDownloadFlat(c *C) { c.Check(pkg.Name, Equals, "amanda-client") } +func (s *RemoteRepoSuite) TestDownloadWithSourcesFlat(c *C) { + s.flat.DownloadSources = true + + downloader := utils.NewFakeDownloader() + downloader.ExpectResponse("http://repos.express42.com/virool/precise/Release", exampleReleaseFile) + downloader.ExpectError("http://repos.express42.com/virool/precise/Packages.bz2", errors.New("HTTP 404")) + downloader.ExpectError("http://repos.express42.com/virool/precise/Packages.gz", errors.New("HTTP 404")) + downloader.ExpectResponse("http://repos.express42.com/virool/precise/Packages", examplePackagesFile) + downloader.ExpectError("http://repos.express42.com/virool/precise/Sources.bz2", errors.New("HTTP 404")) + downloader.ExpectError("http://repos.express42.com/virool/precise/Sources.gz", errors.New("HTTP 404")) + downloader.ExpectResponse("http://repos.express42.com/virool/precise/Sources", exampleSourcesFile) + downloader.AnyExpectResponse("http://repos.express42.com/virool/precise/pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb", "xyz") + downloader.AnyExpectResponse("http://repos.express42.com/virool/precise/pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.dsc", "abc") + downloader.AnyExpectResponse("http://repos.express42.com/virool/precise/pool/main/a/access-modifier-checker/access-modifier-checker_1.0.orig.tar.gz", "abcd") + downloader.AnyExpectResponse("http://repos.express42.com/virool/precise/pool/main/a/access-modifier-checker/access-modifier-checker_1.0-4.debian.tar.gz", "abcde") + + err := s.flat.Fetch(downloader, nil) + c.Assert(err, IsNil) + + err = s.flat.Download(downloader, s.packageCollection, s.packageRepo, false) + c.Assert(err, IsNil) + c.Assert(downloader.Empty(), Equals, true) + c.Assert(s.flat.packageRefs, NotNil) + + pkg, err := s.packageCollection.ByKey(s.flat.packageRefs.Refs[0]) + c.Assert(err, IsNil) + + result, err := pkg.VerifyFiles(s.packageRepo) + c.Check(result, Equals, true) + c.Check(err, IsNil) + + c.Check(pkg.Name, Equals, "amanda-client") + + pkg, err = s.packageCollection.ByKey(s.flat.packageRefs.Refs[1]) + c.Assert(err, IsNil) + + result, err = pkg.VerifyFiles(s.packageRepo) + c.Check(result, Equals, true) + c.Check(err, IsNil) + + c.Check(pkg.Name, Equals, "access-modifier-checker") +} + type RemoteRepoCollectionSuite struct { PackageListMixinSuite db database.Storage @@ -426,7 +519,7 @@ MD5Sum: 4059d198768f9f8dc9372dc1c54bc3c3 14 main/debian-installer/binary-powerpc/Packages.bz2 9d10bb61e59bd799891ae4fbcf447ec9 29 main/debian-installer/binary-powerpc/Packages.gz 3481d65651306df1596dca9078c2506a 135 main/source/Release - 0531474bd4630bfcfd39048be830483d 1119 main/source/Sources + dd09503813f711817457551858f6ec2f 2003 main/source/Sources 3d83a489f1bd3c04226aa6520b8a6d07 656 main/source/Sources.bz2 b062b5b77094aeeb05ca8dbb1ecf68a9 592 main/source/Sources.gz SHA1: @@ -466,7 +559,7 @@ SHA1: 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 main/debian-installer/binary-powerpc/Packages.bz2 3df6ca52b6e8ecfb4a8fac6b8e02c777e3c7960d 29 main/debian-installer/binary-powerpc/Packages.gz 49cfec0c9b1df3a25e983a3ddf29d15b0e376e02 135 main/source/Release - 4987db83999b0a8bbbbeeb183f066cadb87a5fa5 1119 main/source/Sources + dfa81a35ac2eebcefdc51ae73486c480e277ef1b 2003 main/source/Sources ecb8afea11030a5df46941cb8ec297ca24c85736 656 main/source/Sources.bz2 923e71383969c91146f12fa8cd121397f2467a2e 592 main/source/Sources.gz SHA256: @@ -506,7 +599,7 @@ SHA256: d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 main/debian-installer/binary-powerpc/Packages.bz2 825d493158fe0f50ca1acd70367aefa391170563af2e4ee9cedbcbe6796c8384 29 main/debian-installer/binary-powerpc/Packages.gz d683102993b6f11067ce86d73111f067e36a199e9dc1f4295c8b19c274dc9ef8 135 main/source/Release - a8707486566f1623f0e50c0f8f61d93a93d79fb3043b6e1c407fc9f2afb002ce 1119 main/source/Sources + 4d911b084c12c71ce973743a3c27fc4efd18d7b8faa6ee936add9cca8e2c6ccf 2003 main/source/Sources d178f1e310218d9f0f16c37d0780637f1cf3640a94a7fb0e24dc940c51b1e115 656 main/source/Sources.bz2 080228b550da407fb8ac73fb30b37323468fd2b2de98dd56a324ee7d701f6103 592 main/source/Sources.gz` @@ -530,3 +623,5 @@ MD5sum: d16fb36f0911f878998c136191af705e SHA1: 66b27417d37e024c46526c2f6d358a754fc552f3 SHA256: 3608bca1e44ea6c4d268eb6db02260269892c0b42b86bbf1e77a6fa16c3c9282 ` + +const exampleSourcesFile = sourcePackageMeta