diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-07-19 22:05:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-19 22:05:00 +0200 |
commit | 2d10f1023e609894174b21bdf8d3738010099335 (patch) | |
tree | 929b050b54039af69b4eae6306429feafa9d8268 /storage/filesystem/internal/dotgit | |
parent | 8738a04708b91683d5804b4c648c871fdeb87f82 (diff) | |
parent | 87888eaab1caa52b6b073f610508e0f65b4141f6 (diff) | |
download | go-git-2d10f1023e609894174b21bdf8d3738010099335.tar.gz |
Merge pull request #491 from smola/error-checks
*: add more IO error checks
Diffstat (limited to 'storage/filesystem/internal/dotgit')
-rw-r--r-- | storage/filesystem/internal/dotgit/dotgit.go | 8 | ||||
-rw-r--r-- | storage/filesystem/internal/dotgit/writers_test.go | 28 |
2 files changed, 30 insertions, 6 deletions
diff --git a/storage/filesystem/internal/dotgit/dotgit.go b/storage/filesystem/internal/dotgit/dotgit.go index b672d4b..e2ff51b 100644 --- a/storage/filesystem/internal/dotgit/dotgit.go +++ b/storage/filesystem/internal/dotgit/dotgit.go @@ -253,10 +253,10 @@ func (d *DotGit) SetRef(r *plumbing.Reference) error { return err } - if _, err := f.Write([]byte(content)); err != nil { - return err - } - return f.Close() + defer ioutil.CheckClose(f, &err) + + _, err = f.Write([]byte(content)) + return err } // Refs scans the git directory collecting references, which it returns. diff --git a/storage/filesystem/internal/dotgit/writers_test.go b/storage/filesystem/internal/dotgit/writers_test.go index d2c7b6f..1342396 100644 --- a/storage/filesystem/internal/dotgit/writers_test.go +++ b/storage/filesystem/internal/dotgit/writers_test.go @@ -12,6 +12,7 @@ import ( . "gopkg.in/check.v1" "gopkg.in/src-d/go-billy.v3/osfs" + "gopkg.in/src-d/go-git.v4/plumbing/format/packfile" ) func (s *SuiteDotGit) TestNewObjectPack(c *C) { @@ -35,13 +36,30 @@ func (s *SuiteDotGit) TestNewObjectPack(c *C) { c.Assert(w.Close(), IsNil) - stat, err := fs.Stat(fmt.Sprintf("objects/pack/pack-%s.pack", f.PackfileHash)) + pfPath := fmt.Sprintf("objects/pack/pack-%s.pack", f.PackfileHash) + idxPath := fmt.Sprintf("objects/pack/pack-%s.idx", f.PackfileHash) + + stat, err := fs.Stat(pfPath) c.Assert(err, IsNil) c.Assert(stat.Size(), Equals, int64(84794)) - stat, err = fs.Stat(fmt.Sprintf("objects/pack/pack-%s.idx", f.PackfileHash)) + stat, err = fs.Stat(idxPath) c.Assert(err, IsNil) c.Assert(stat.Size(), Equals, int64(1940)) + + pf, err := fs.Open(pfPath) + c.Assert(err, IsNil) + pfs := packfile.NewScanner(pf) + _, objects, err := pfs.Header() + c.Assert(err, IsNil) + for i := uint32(0); i < objects; i++ { + _, err := pfs.NextObjectHeader() + if err != nil { + c.Assert(err, IsNil) + break + } + } + c.Assert(pfs.Close(), IsNil) } func (s *SuiteDotGit) TestNewObjectPackUnused(c *C) { @@ -63,6 +81,12 @@ func (s *SuiteDotGit) TestNewObjectPackUnused(c *C) { info, err := fs.ReadDir("objects/pack") c.Assert(err, IsNil) c.Assert(info, HasLen, 0) + + // check clean up of temporary files + info, err = fs.ReadDir("") + for _, fi := range info { + c.Assert(fi.IsDir(), Equals, true) + } } func (s *SuiteDotGit) TestSyncedReader(c *C) { |