aboutsummaryrefslogtreecommitdiffstats
path: root/commons
diff options
context:
space:
mode:
authorAlex Guerrieri <alex@tyba.com>2015-10-06 18:51:47 +0200
committerAlex Guerrieri <alex@tyba.com>2015-10-06 18:51:47 +0200
commit465cba710284204f9851854587c2887c247222db (patch)
tree75158b29f50acf928a069f4478852de51d77b466 /commons
parentb9471b13256703d3f5eb88b280b4a16ce325ec1b (diff)
downloadgo-git-465cba710284204f9851854587c2887c247222db.tar.gz
Extract GitHash function
Diffstat (limited to 'commons')
-rw-r--r--commons/hash.go17
-rw-r--r--commons/hash_test.go12
2 files changed, 29 insertions, 0 deletions
diff --git a/commons/hash.go b/commons/hash.go
new file mode 100644
index 0000000..03fa53f
--- /dev/null
+++ b/commons/hash.go
@@ -0,0 +1,17 @@
+package commons
+
+import (
+ "crypto/sha1"
+ "fmt"
+ "strconv"
+)
+
+func GitHash(t string, b []byte) string {
+ h := []byte(t)
+ h = append(h, ' ')
+ h = strconv.AppendInt(h, int64(len(b)), 10)
+ h = append(h, 0)
+ h = append(h, b...)
+
+ return fmt.Sprintf("%x", sha1.Sum(h))
+}
diff --git a/commons/hash_test.go b/commons/hash_test.go
new file mode 100644
index 0000000..79a22ea
--- /dev/null
+++ b/commons/hash_test.go
@@ -0,0 +1,12 @@
+package commons
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCalculateHash(t *testing.T) {
+ assert.Equal(t, "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", GitHash("blob", []byte("")))
+ assert.Equal(t, "8ab686eafeb1f44702738c8b0f24f2567c36da6d", GitHash("blob", []byte("Hello, World!\n")))
+}