提交 440de64d 作者: Brian Tiger Chow

refactor(fsrepo/test) extract assert

@jbenet will move in upcoming branch/PR
上级 2fc97ad8
package assert
import "testing"
func Nil(err error, t *testing.T, msgs ...string) {
if err != nil {
t.Fatal(msgs, "error:", err)
}
}
func True(v bool, t *testing.T, msgs ...string) {
if !v {
t.Fatal(msgs)
}
}
func Err(err error, t *testing.T, msgs ...string) {
if err == nil {
t.Fatal(msgs, "error:", err)
}
}
...@@ -7,6 +7,7 @@ import ( ...@@ -7,6 +7,7 @@ import (
datastore "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" datastore "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
"github.com/jbenet/go-ipfs/repo/config" "github.com/jbenet/go-ipfs/repo/config"
"github.com/jbenet/go-ipfs/repo/fsrepo/assert"
) )
// swap arg order // swap arg order
...@@ -22,35 +23,35 @@ func TestInitIdempotence(t *testing.T) { ...@@ -22,35 +23,35 @@ func TestInitIdempotence(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("", t) path := testRepoPath("", t)
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
AssertNil(Init(path, &config.Config{}), t, "multiple calls to init should succeed") assert.Nil(Init(path, &config.Config{}), t, "multiple calls to init should succeed")
} }
} }
func TestRemove(t *testing.T) { func TestRemove(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("foo", t) path := testRepoPath("foo", t)
AssertNil(Remove(path), t, "should be able to remove after closed") assert.Nil(Remove(path), t, "should be able to remove after closed")
} }
func TestCannotRemoveIfOpen(t *testing.T) { func TestCannotRemoveIfOpen(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("TestCannotRemoveIfOpen", t) path := testRepoPath("TestCannotRemoveIfOpen", t)
AssertNil(Init(path, &config.Config{}), t, "should initialize successfully") assert.Nil(Init(path, &config.Config{}), t, "should initialize successfully")
r := At(path) r := At(path)
AssertNil(r.Open(), t) assert.Nil(r.Open(), t)
AssertErr(Remove(path), t, "should not be able to remove while open") assert.Err(Remove(path), t, "should not be able to remove while open")
AssertNil(r.Close(), t) assert.Nil(r.Close(), t)
AssertNil(Remove(path), t, "should be able to remove after closed") assert.Nil(Remove(path), t, "should be able to remove after closed")
} }
func TestCannotBeReopened(t *testing.T) { func TestCannotBeReopened(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("", t) path := testRepoPath("", t)
AssertNil(Init(path, &config.Config{}), t) assert.Nil(Init(path, &config.Config{}), t)
r := At(path) r := At(path)
AssertNil(r.Open(), t) assert.Nil(r.Open(), t)
AssertNil(r.Close(), t) assert.Nil(r.Close(), t)
AssertErr(r.Open(), t, "shouldn't be possible to re-open the repo") assert.Err(r.Open(), t, "shouldn't be possible to re-open the repo")
// mutable state is the enemy. Take Close() as an opportunity to reduce // mutable state is the enemy. Take Close() as an opportunity to reduce
// entropy. Callers ought to start fresh with a new handle by calling `At`. // entropy. Callers ought to start fresh with a new handle by calling `At`.
...@@ -62,83 +63,65 @@ func TestCanManageReposIndependently(t *testing.T) { ...@@ -62,83 +63,65 @@ func TestCanManageReposIndependently(t *testing.T) {
pathB := testRepoPath("b", t) pathB := testRepoPath("b", t)
t.Log("initialize two repos") t.Log("initialize two repos")
AssertNil(Init(pathA, &config.Config{}), t, "a", "should initialize successfully") assert.Nil(Init(pathA, &config.Config{}), t, "a", "should initialize successfully")
AssertNil(Init(pathB, &config.Config{}), t, "b", "should initialize successfully") assert.Nil(Init(pathB, &config.Config{}), t, "b", "should initialize successfully")
t.Log("ensure repos initialized") t.Log("ensure repos initialized")
Assert(IsInitialized(pathA), t, "a should be initialized") assert.True(IsInitialized(pathA), t, "a should be initialized")
Assert(IsInitialized(pathB), t, "b should be initialized") assert.True(IsInitialized(pathB), t, "b should be initialized")
t.Log("open the two repos") t.Log("open the two repos")
repoA := At(pathA) repoA := At(pathA)
repoB := At(pathB) repoB := At(pathB)
AssertNil(repoA.Open(), t, "a") assert.Nil(repoA.Open(), t, "a")
AssertNil(repoB.Open(), t, "b") assert.Nil(repoB.Open(), t, "b")
t.Log("close and remove b while a is open") t.Log("close and remove b while a is open")
AssertNil(repoB.Close(), t, "close b") assert.Nil(repoB.Close(), t, "close b")
AssertNil(Remove(pathB), t, "remove b") assert.Nil(Remove(pathB), t, "remove b")
t.Log("close and remove a") t.Log("close and remove a")
AssertNil(repoA.Close(), t) assert.Nil(repoA.Close(), t)
AssertNil(Remove(pathA), t) assert.Nil(Remove(pathA), t)
} }
func TestDatastoreGetNotAllowedAfterClose(t *testing.T) { func TestDatastoreGetNotAllowedAfterClose(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("test", t) path := testRepoPath("test", t)
Assert(!IsInitialized(path), t, "should NOT be initialized") assert.True(!IsInitialized(path), t, "should NOT be initialized")
AssertNil(Init(path, &config.Config{}), t, "should initialize successfully") assert.Nil(Init(path, &config.Config{}), t, "should initialize successfully")
r := At(path) r := At(path)
AssertNil(r.Open(), t, "should open successfully") assert.Nil(r.Open(), t, "should open successfully")
k := "key" k := "key"
data := []byte(k) data := []byte(k)
AssertNil(r.Datastore().Put(datastore.NewKey(k), data), t, "Put should be successful") assert.Nil(r.Datastore().Put(datastore.NewKey(k), data), t, "Put should be successful")
AssertNil(r.Close(), t) assert.Nil(r.Close(), t)
_, err := r.Datastore().Get(datastore.NewKey(k)) _, err := r.Datastore().Get(datastore.NewKey(k))
AssertErr(err, t, "after closer, Get should be fail") assert.Err(err, t, "after closer, Get should be fail")
} }
func TestDatastorePersistsFromRepoToRepo(t *testing.T) { func TestDatastorePersistsFromRepoToRepo(t *testing.T) {
t.Parallel() t.Parallel()
path := testRepoPath("test", t) path := testRepoPath("test", t)
AssertNil(Init(path, &config.Config{}), t) assert.Nil(Init(path, &config.Config{}), t)
r1 := At(path) r1 := At(path)
AssertNil(r1.Open(), t) assert.Nil(r1.Open(), t)
k := "key" k := "key"
expected := []byte(k) expected := []byte(k)
AssertNil(r1.Datastore().Put(datastore.NewKey(k), expected), t, "using first repo, Put should be successful") assert.Nil(r1.Datastore().Put(datastore.NewKey(k), expected), t, "using first repo, Put should be successful")
AssertNil(r1.Close(), t) assert.Nil(r1.Close(), t)
r2 := At(path) r2 := At(path)
AssertNil(r2.Open(), t) assert.Nil(r2.Open(), t)
v, err := r2.Datastore().Get(datastore.NewKey(k)) v, err := r2.Datastore().Get(datastore.NewKey(k))
AssertNil(err, t, "using second repo, Get should be successful") assert.Nil(err, t, "using second repo, Get should be successful")
actual, ok := v.([]byte) actual, ok := v.([]byte)
Assert(ok, t, "value should be the []byte from r1's Put") assert.True(ok, t, "value should be the []byte from r1's Put")
AssertNil(r2.Close(), t) assert.Nil(r2.Close(), t)
Assert(bytes.Compare(expected, actual) == 0, t, "data should match") assert.True(bytes.Compare(expected, actual) == 0, t, "data should match")
}
func AssertNil(err error, t *testing.T, msgs ...string) {
if err != nil {
t.Fatal(msgs, "error:", err)
}
}
func Assert(v bool, t *testing.T, msgs ...string) {
if !v {
t.Fatal(msgs)
}
}
func AssertErr(err error, t *testing.T, msgs ...string) {
if err == nil {
t.Fatal(msgs, "error:", err)
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论