From 19ca1a819f9744a67a2e9be59ab5fd31511ef1d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Mon, 14 Jan 2019 21:01:39 +0100 Subject: [PATCH] Unixfs.Add nocopy test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- core/coreapi/interface/tests/unixfs.go | 42 ++++++++++++++++++++++++++ core/coreapi/test/api_test.go | 11 +++++-- repo/mock.go | 3 +- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/core/coreapi/interface/tests/unixfs.go b/core/coreapi/interface/tests/unixfs.go index 0ef3f031e..0ceae06e1 100644 --- a/core/coreapi/interface/tests/unixfs.go +++ b/core/coreapi/interface/tests/unixfs.go @@ -101,6 +101,34 @@ func (tp *provider) TestAdd(t *testing.T) { return coreiface.IpfsPath(c) } + rf, err := ioutil.TempFile(os.TempDir(), "unixfs-add-real") + if err != nil { + t.Fatal(err) + } + rfp := rf.Name() + + if _, err := rf.Write([]byte(helloStr)); err != nil { + t.Fatal(err) + } + + stat, err := rf.Stat() + if err != nil { + t.Fatal(err) + } + + if err := rf.Close(); err != nil { + t.Fatal(err) + } + defer os.Remove(rfp) + + realFile := func() files.Node { + n, err := files.NewReaderPathFile(rfp, ioutil.NopCloser(strings.NewReader(helloStr)), stat) + if err != nil { + t.Fatal(err) + } + return n + } + cases := []struct { name string data func() files.Node @@ -323,6 +351,20 @@ func (tp *provider) TestAdd(t *testing.T) { path: "/ipfs/QmRKGpFfR32FVXdvJiHfo4WJ5TDYBsM1P9raAp1p6APWSp", opts: []options.UnixfsAddOption{options.Unixfs.Hidden(false)}, }, + // NoCopy + { + name: "simpleNoCopy", + data: realFile, + path: "/ipfs/zb2rhdhmJjJZs9qkhQCpCQ7VREFkqWw3h1r8utjVvQugwHPFd", + opts: []options.UnixfsAddOption{options.Unixfs.Nocopy(true)}, + }, + { + name: "noCopyNoRaw", + data: realFile, + path: "/ipfs/zb2rhdhmJjJZs9qkhQCpCQ7VREFkqWw3h1r8utjVvQugwHPFd", + opts: []options.UnixfsAddOption{options.Unixfs.Nocopy(true), options.Unixfs.RawLeaves(false)}, + err: "nocopy option requires '--raw-leaves' to be enabled as well", + }, // Events / Progress { name: "simpleAddEvent", diff --git a/core/coreapi/test/api_test.go b/core/coreapi/test/api_test.go index c397574a4..4337087a0 100644 --- a/core/coreapi/test/api_test.go +++ b/core/coreapi/test/api_test.go @@ -4,9 +4,13 @@ import ( "context" "encoding/base64" "fmt" - "github.com/ipfs/go-ipfs/core/coreapi/interface/tests" + "os" + "path/filepath" "testing" + "github.com/ipfs/go-ipfs/core/coreapi/interface/tests" + "github.com/ipfs/go-ipfs/filestore" + "github.com/ipfs/go-ipfs/core" "github.com/ipfs/go-ipfs/core/coreapi" coreiface "github.com/ipfs/go-ipfs/core/coreapi/interface" @@ -64,11 +68,14 @@ func (NodeProvider) MakeAPISwarm(ctx context.Context, fullIdentity bool, n int) c := config.Config{} c.Addresses.Swarm = []string{fmt.Sprintf("/ip4/127.0.%d.1/tcp/4001", i)} c.Identity = ident + c.Experimental.FilestoreEnabled = true + ds := datastore.NewMapDatastore() r := &repo.Mock{ C: c, - D: syncds.MutexWrap(datastore.NewMapDatastore()), + D: syncds.MutexWrap(ds), K: keystore.NewMemKeystore(), + F: filestore.NewFileManager(ds, filepath.Dir(os.TempDir())), } node, err := core.NewNode(ctx, &core.BuildCfg{ diff --git a/repo/mock.go b/repo/mock.go index 74792174a..49dba10bd 100644 --- a/repo/mock.go +++ b/repo/mock.go @@ -17,6 +17,7 @@ type Mock struct { C config.Config D Datastore K keystore.Keystore + F *filestore.FileManager } func (m *Mock) Config() (*config.Config, error) { @@ -54,4 +55,4 @@ func (m *Mock) SwarmKey() ([]byte, error) { return nil, nil } -func (m *Mock) FileManager() *filestore.FileManager { return nil } +func (m *Mock) FileManager() *filestore.FileManager { return m.F }