diff --git a/AUTHORS b/AUTHORS index 0be46dc4..03580aee 100644 --- a/AUTHORS +++ b/AUTHORS @@ -28,3 +28,4 @@ List of contributors, in chronological order: * Charles Hsu (https://github.com/charz) * Clemens Rabe (https://github.com/seeraven) * TJ Merritt (https://github.com/tjmerritt) +* Matt Martyn (https://github.com/MMartyn) diff --git a/s3/public.go b/s3/public.go index b74788a0..e2c3f8fd 100644 --- a/s3/public.go +++ b/s3/public.go @@ -267,7 +267,7 @@ func (storage *PublishedStorage) LinkFromPool(publishedDirectory, baseName strin poolPath := filepath.Join(storage.prefix, relPath) if storage.pathCache == nil { - paths, md5s, err := storage.internalFilelist(storage.prefix, true) + paths, md5s, err := storage.internalFilelist("", true) if err != nil { return errors.Wrap(err, "error caching paths under prefix") } diff --git a/s3/public_test.go b/s3/public_test.go index 5990145a..354c6668 100644 --- a/s3/public_test.go +++ b/s3/public_test.go @@ -257,4 +257,19 @@ func (s *PublishedStorageSuite) TestLinkFromPool(c *C) { c.Check(err, IsNil) c.Check(s.GetFile(c, "pool/main/m/mars-invaders/mars-invaders_1.03.deb"), DeepEquals, []byte("Spam")) + + // for prefixed storage: + // first link from pool + err = s.prefixedStorage.LinkFromPool(filepath.Join("", "pool", "main", "m/mars-invaders"), "mars-invaders_1.03.deb", pool, src1, cksum1, false) + c.Check(err, IsNil) + + // 2nd link from pool, providing wrong path for source file + // + // this test should check that file already exists in S3 and skip upload (which would fail if not skipped) + s.prefixedStorage.pathCache = nil + err = s.prefixedStorage.LinkFromPool(filepath.Join("", "pool", "main", "m/mars-invaders"), "mars-invaders_1.03.deb", pool, "wrong-looks-like-pathcache-doesnt-work", cksum1, false) + c.Check(err, IsNil) + + c.Check(s.GetFile(c, "lala/pool/main/m/mars-invaders/mars-invaders_1.03.deb"), DeepEquals, []byte("Contents")) + }