From 9c7d576132a760645e3a6b3ebdf51c4aef532794 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Thu, 23 Apr 2020 18:00:03 -0500 Subject: storage/filesystem: dotgit, add a test for reading refs from a directory Specifically, the problem demonstrated is that on some OS (e.g. FreeBSD), read() on a directory will succeed. The current implementation will accept that and return incorrect results, rather than rejecting the directory. --- storage/filesystem/dotgit/dotgit_test.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'storage') diff --git a/storage/filesystem/dotgit/dotgit_test.go b/storage/filesystem/dotgit/dotgit_test.go index d57ff15..403f5ff 100644 --- a/storage/filesystem/dotgit/dotgit_test.go +++ b/storage/filesystem/dotgit/dotgit_test.go @@ -93,9 +93,15 @@ func testSetRefs(c *C, dir *DotGit) { ), nil) c.Assert(err, IsNil) + err = dir.SetRef(plumbing.NewReferenceFromStrings( + "refs/heads/feature/baz", + "e8d3ffab552895c19b9fcf7aa264d277cde33881", + ), nil) + c.Assert(err, IsNil) + refs, err := dir.Refs() c.Assert(err, IsNil) - c.Assert(refs, HasLen, 2) + c.Assert(refs, HasLen, 3) ref := findReference(refs, "refs/heads/foo") c.Assert(ref, NotNil) @@ -108,6 +114,12 @@ func testSetRefs(c *C, dir *DotGit) { ref = findReference(refs, "bar") c.Assert(ref, IsNil) + _, err = dir.readReferenceFile(".", "refs/heads/feature/baz") + c.Assert(err, IsNil) + + _, err = dir.readReferenceFile(".", "refs/heads/feature") + c.Assert(err, NotNil) + ref, err = dir.Ref("refs/heads/foo") c.Assert(err, IsNil) c.Assert(ref, NotNil) -- cgit