summaryrefslogtreecommitdiff
path: root/odb_test.go
diff options
context:
space:
mode:
authorlhchavez <[email protected]>2020-02-23 15:08:45 +0000
committerlhchavez <[email protected]>2020-02-23 15:08:45 +0000
commit3c88bd9f1aebc53ea9d77937829f8c155aa834c3 (patch)
tree8556d00fb42f2fcab5ba748e49e21e1141b9d604 /odb_test.go
parentc75e0221d70bc471917aa3de34ca1ead1a747987 (diff)
parent21d618136f415486d95965e75af80c0e6688a0d5 (diff)
Merge remote-tracking branch 'upstream/master' into cherrypick-commit
Diffstat (limited to 'odb_test.go')
-rw-r--r--odb_test.go49
1 files changed, 37 insertions, 12 deletions
diff --git a/odb_test.go b/odb_test.go
index 3d22fc9..46acdba 100644
--- a/odb_test.go
+++ b/odb_test.go
@@ -1,12 +1,14 @@
package git
import (
+ "bytes"
"errors"
"io"
+ "io/ioutil"
"testing"
)
-func TestOdbReadHeader(t *testing.T) {
+func TestOdbRead(t *testing.T) {
t.Parallel()
repo := createTestRepo(t)
defer cleanupTestRepo(t, repo)
@@ -26,13 +28,27 @@ func TestOdbReadHeader(t *testing.T) {
if err != nil {
t.Fatalf("ReadHeader: %v", err)
}
-
+
if sz != uint64(len(data)) {
t.Errorf("ReadHeader got size %d, want %d", sz, len(data))
}
if typ != ObjectBlob {
t.Errorf("ReadHeader got object type %s", typ)
}
+
+ obj, err := odb.Read(id)
+ if err != nil {
+ t.Fatalf("Read: %v", err)
+ }
+ if !bytes.Equal(obj.Data(), data) {
+ t.Errorf("Read got wrong data")
+ }
+ if sz := obj.Len(); sz != uint64(len(data)) {
+ t.Errorf("Read got size %d, want %d", sz, len(data))
+ }
+ if typ := obj.Type(); typ != ObjectBlob {
+ t.Errorf("Read got object type %s", typ)
+ }
}
func TestOdbStream(t *testing.T) {
@@ -47,22 +63,29 @@ func TestOdbStream(t *testing.T) {
str := "hello, world!"
- stream, error := odb.NewWriteStream(int64(len(str)), ObjectBlob)
+ writeStream, error := odb.NewWriteStream(int64(len(str)), ObjectBlob)
checkFatal(t, error)
- n, error := io.WriteString(stream, str)
+ n, error := io.WriteString(writeStream, str)
checkFatal(t, error)
if n != len(str) {
t.Fatalf("Bad write length %v != %v", n, len(str))
}
- error = stream.Close()
+ error = writeStream.Close()
checkFatal(t, error)
expectedId, error := NewOid("30f51a3fba5274d53522d0f19748456974647b4f")
checkFatal(t, error)
- if stream.Id.Cmp(expectedId) != 0 {
+ if writeStream.Id.Cmp(expectedId) != 0 {
t.Fatal("Wrong data written")
}
+
+ readStream, error := odb.NewReadStream(&writeStream.Id)
+ checkFatal(t, error)
+ data, error := ioutil.ReadAll(readStream)
+ if str != string(data) {
+ t.Fatalf("Wrong data read %v != %v", str, string(data))
+ }
}
func TestOdbHash(t *testing.T) {
@@ -82,14 +105,16 @@ committer John Doe <[email protected]> 1390682018 +0000
Initial commit.`
- oid, error := odb.Hash([]byte(str), ObjectCommit)
- checkFatal(t, error)
+ for _, data := range [][]byte{[]byte(str), doublePointerBytes()} {
+ oid, error := odb.Hash(data, ObjectCommit)
+ checkFatal(t, error)
- coid, error := odb.Write([]byte(str), ObjectCommit)
- checkFatal(t, error)
+ coid, error := odb.Write(data, ObjectCommit)
+ checkFatal(t, error)
- if oid.Cmp(coid) != 0 {
- t.Fatal("Hash and write Oids are different")
+ if oid.Cmp(coid) != 0 {
+ t.Fatal("Hash and write Oids are different")
+ }
}
}