summaryrefslogtreecommitdiff
path: root/odb_test.go
blob: a4f89432a3b7aa9217f7f8a15976e7aed2a5c24f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package git

import (
	"io"
	"os"
	"testing"
)

func TestOdbStream(t *testing.T) {
	repo := createTestRepo(t)
	defer os.RemoveAll(repo.Workdir())
	_, _ = seedTestRepo(t, repo)

	odb, error := repo.Odb()
	checkFatal(t, error)

	str := "hello, world!"

	stream, error := odb.NewWriteStream(len(str), ObjectBlob)
	checkFatal(t, error)
	n, error := io.WriteString(stream, str)
	checkFatal(t, error)
	if n != len(str) {
		t.Fatalf("Bad write length %v != %v", n, len(str))
	}

	error = stream.Close()
	checkFatal(t, error)

	expectedId, error := NewOidFromString("30f51a3fba5274d53522d0f19748456974647b4f")
	checkFatal(t, error)
	if stream.Id.Cmp(expectedId) != 0 {
		t.Fatal("Wrong data written")
	}
}

func TestOdbHash(t *testing.T) {

    repo := createTestRepo(t)
	defer os.RemoveAll(repo.Workdir())
	_, _ = seedTestRepo(t, repo)

	odb, error := repo.Odb()
	checkFatal(t, error)

	str := `tree 115fcae49287c82eb55bb275cbbd4556fbed72b7
parent 66e1c476199ebcd3e304659992233132c5a52c6c
author John Doe <[email protected]> 1390682018 +0000
committer John Doe <[email protected]> 1390682018 +0000

Initial commit.`;

	oid, error := odb.Hash([]byte(str), ObjectCommit)
	checkFatal(t, error)

	coid, error := odb.Write([]byte(str), ObjectCommit)
	checkFatal(t, error)

	if oid.Cmp(coid) != 0 {
		t.Fatal("Hash and write Oids are different")
	}
}