diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-07-19 22:04:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-19 22:04:46 +0200 |
commit | 8738a04708b91683d5804b4c648c871fdeb87f82 (patch) | |
tree | 017b15080dee8bd64026c9358d832e61d12674d5 /utils/merkletrie | |
parent | 595dfe6e53a038da4949263ea2d9a7a0020c48b7 (diff) | |
parent | 4a7e7cddc0e4f88085b263693c87635254de7f35 (diff) | |
download | go-git-8738a04708b91683d5804b4c648c871fdeb87f82.tar.gz |
Merge pull request #493 from src-d/windows
*: several windows support fixes
Diffstat (limited to 'utils/merkletrie')
-rw-r--r-- | utils/merkletrie/filesystem/node.go | 6 | ||||
-rw-r--r-- | utils/merkletrie/filesystem/node_test.go | 10 | ||||
-rw-r--r-- | utils/merkletrie/index/node.go | 18 | ||||
-rw-r--r-- | utils/merkletrie/index/node_test.go | 29 |
4 files changed, 35 insertions, 28 deletions
diff --git a/utils/merkletrie/filesystem/node.go b/utils/merkletrie/filesystem/node.go index a8f3b86..f763e08 100644 --- a/utils/merkletrie/filesystem/node.go +++ b/utils/merkletrie/filesystem/node.go @@ -3,7 +3,7 @@ package filesystem import ( "io" "os" - "path/filepath" + "path" "gopkg.in/src-d/go-billy.v3" "gopkg.in/src-d/go-git.v4/plumbing" @@ -53,7 +53,7 @@ func (n *node) Hash() []byte { } func (n *node) Name() string { - return filepath.Base(n.path) + return path.Base(n.path) } func (n *node) IsDir() bool { @@ -107,7 +107,7 @@ func (n *node) calculateChildren() error { } func (n *node) newChildNode(file os.FileInfo) (*node, error) { - path := filepath.Join(n.path, file.Name()) + path := path.Join(n.path, file.Name()) hash, err := n.calculateHash(path, file) if err != nil { diff --git a/utils/merkletrie/filesystem/node_test.go b/utils/merkletrie/filesystem/node_test.go index bf1178a..42dd82e 100644 --- a/utils/merkletrie/filesystem/node_test.go +++ b/utils/merkletrie/filesystem/node_test.go @@ -4,6 +4,7 @@ import ( "bytes" "io" "os" + "path" "testing" . "gopkg.in/check.v1" @@ -133,18 +134,19 @@ func (s *NoderSuite) TestDiffChangeModeNotRelevant(c *C) { } func (s *NoderSuite) TestDiffDirectory(c *C) { + dir := path.Join("qux", "bar") fsA := memfs.New() - fsA.MkdirAll("qux/bar", 0644) + fsA.MkdirAll(dir, 0644) fsB := memfs.New() - fsB.MkdirAll("qux/bar", 0644) + fsB.MkdirAll(dir, 0644) ch, err := merkletrie.DiffTree( NewRootNode(fsA, map[string]plumbing.Hash{ - "qux/bar": plumbing.NewHash("aa102815663d23f8b75a47e7a01965dcdc96468c"), + dir: plumbing.NewHash("aa102815663d23f8b75a47e7a01965dcdc96468c"), }), NewRootNode(fsB, map[string]plumbing.Hash{ - "qux/bar": plumbing.NewHash("19102815663d23f8b75a47e7a01965dcdc96468c"), + dir: plumbing.NewHash("19102815663d23f8b75a47e7a01965dcdc96468c"), }), IsEquals, ) diff --git a/utils/merkletrie/index/node.go b/utils/merkletrie/index/node.go index 859c097..9622622 100644 --- a/utils/merkletrie/index/node.go +++ b/utils/merkletrie/index/node.go @@ -1,7 +1,7 @@ package index import ( - "path/filepath" + "path" "strings" "gopkg.in/src-d/go-git.v4/plumbing/format/index" @@ -28,19 +28,19 @@ func NewRootNode(idx *index.Index) noder.Noder { m := map[string]*node{rootNode: {isDir: true}} for _, e := range idx.Entries { - parts := strings.Split(e.Name, string(filepath.Separator)) + parts := strings.Split(e.Name, string("/")) - var path string + var fullpath string for _, part := range parts { - parent := path - path = filepath.Join(path, part) + parent := fullpath + fullpath = path.Join(fullpath, part) - if _, ok := m[path]; ok { + if _, ok := m[fullpath]; ok { continue } - n := &node{path: path} - if path == e.Name { + n := &node{path: fullpath} + if fullpath == e.Name { n.entry = e } else { n.isDir = true @@ -74,7 +74,7 @@ func (n *node) Hash() []byte { } func (n *node) Name() string { - return filepath.Base(n.path) + return path.Base(n.path) } func (n *node) IsDir() bool { diff --git a/utils/merkletrie/index/node_test.go b/utils/merkletrie/index/node_test.go index 00da8da..283ca74 100644 --- a/utils/merkletrie/index/node_test.go +++ b/utils/merkletrie/index/node_test.go @@ -2,6 +2,7 @@ package index import ( "bytes" + "path/filepath" "testing" . "gopkg.in/check.v1" @@ -43,15 +44,17 @@ func (s *NoderSuite) TestDiff(c *C) { func (s *NoderSuite) TestDiffChange(c *C) { indexA := &index.Index{ - Entries: []*index.Entry{ - {Name: "bar/baz/bar", Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d")}, - }, + Entries: []*index.Entry{{ + Name: filepath.Join("bar", "baz", "bar"), + Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d"), + }}, } indexB := &index.Index{ - Entries: []*index.Entry{ - {Name: "bar/baz/foo", Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d")}, - }, + Entries: []*index.Entry{{ + Name: filepath.Join("bar", "baz", "foo"), + Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d"), + }}, } ch, err := merkletrie.DiffTree(NewRootNode(indexA), NewRootNode(indexB), isEquals) @@ -61,15 +64,17 @@ func (s *NoderSuite) TestDiffChange(c *C) { func (s *NoderSuite) TestDiffDir(c *C) { indexA := &index.Index{ - Entries: []*index.Entry{ - {Name: "foo", Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d")}, - }, + Entries: []*index.Entry{{ + Name: "foo", + Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d"), + }}, } indexB := &index.Index{ - Entries: []*index.Entry{ - {Name: "foo/bar", Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d")}, - }, + Entries: []*index.Entry{{ + Name: filepath.Join("foo", "bar"), + Hash: plumbing.NewHash("8ab686eafeb1f44702738c8b0f24f2567c36da6d"), + }}, } ch, err := merkletrie.DiffTree(NewRootNode(indexA), NewRootNode(indexB), isEquals) |