From 99c3be5191d5228d202fae89deb948026806f0ad Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 24 Apr 2020 18:22:47 +0100 Subject: [PATCH 1/4] refactor: only use low-level block api in refs-local interface test Follows on from #2980 but uses the unixfs-importer which has been refactored to only use the block API, allowing implementations to be written from low-level APIs upwards. --- packages/interface-ipfs-core/package.json | 2 ++ packages/interface-ipfs-core/src/refs-local.js | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/interface-ipfs-core/package.json b/packages/interface-ipfs-core/package.json index 35217f7419..a40100e12e 100644 --- a/packages/interface-ipfs-core/package.json +++ b/packages/interface-ipfs-core/package.json @@ -38,6 +38,7 @@ "dirty-chai": "^2.0.1", "ipfs-block": "^0.8.1", "ipfs-unixfs": "^1.0.1", + "ipfs-unixfs-importer": "^2.0.0", "ipfs-utils": "^2.2.0", "ipld-dag-cbor": "^0.15.1", "ipld-dag-pb": "^0.18.3", @@ -45,6 +46,7 @@ "iso-random-stream": "^1.1.1", "it-all": "^1.0.1", "it-concat": "^1.0.0", + "it-drain": "^1.0.0", "it-last": "^1.0.1", "it-pushable": "^1.3.1", "multiaddr": "^7.2.1", diff --git a/packages/interface-ipfs-core/src/refs-local.js b/packages/interface-ipfs-core/src/refs-local.js index fa8b9bb826..0ede5b01e5 100644 --- a/packages/interface-ipfs-core/src/refs-local.js +++ b/packages/interface-ipfs-core/src/refs-local.js @@ -4,6 +4,8 @@ const { fixtures } = require('./utils') const { getDescribe, getIt, expect } = require('./utils/mocha') const all = require('it-all') +const drain = require('it-drain') +const importer = require('ipfs-unixfs-importer') /** @typedef { import("ipfsd-ctl/src/factory") } Factory */ /** @@ -36,7 +38,7 @@ module.exports = (common, options) => { content('holmes.txt') ] - await all(ipfs.add(dirs)) + await drain(importer(dirs, ipfs.block)) const refs = await all(ipfs.refs.local()) From 1baf9f67259941c46a2d0d73f5e443b5f0924184 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 24 Apr 2020 18:42:31 +0100 Subject: [PATCH 2/4] refactor: use only low-level APIs in dag.get test Implements the same change as #2987 but using the unixfs-importer because go-ipfs does not support specifying CID versions to /block/put so the client has to create the CID and supply it. --- packages/interface-ipfs-core/src/dag/get.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/interface-ipfs-core/src/dag/get.js b/packages/interface-ipfs-core/src/dag/get.js index 3c817f332f..1a773ce617 100644 --- a/packages/interface-ipfs-core/src/dag/get.js +++ b/packages/interface-ipfs-core/src/dag/get.js @@ -4,6 +4,7 @@ const dagPB = require('ipld-dag-pb') const DAGNode = dagPB.DAGNode const dagCBOR = require('ipld-dag-cbor') +const importer = require('ipfs-unixfs-importer') const Unixfs = require('ipfs-unixfs') const all = require('it-all') const { getDescribe, getIt, expect } = require('../utils/mocha') @@ -154,7 +155,10 @@ module.exports = (common, options) => { it('should get a node added as CIDv1 with a CIDv0', async () => { const input = Buffer.from(`TEST${Math.random()}`) - const res = await all(ipfs.add(input, { cidVersion: 1, rawLeaves: false })) + const res = await all(importer([{ content: input }], ipfs.block, { + cidVersion: 1, + rawLeaves: false + })) const cidv1 = res[0].cid expect(cidv1.version).to.equal(1) From cf59faa1cddb7d8a7189862ca6bb6aaf612a50c4 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 24 Apr 2020 18:58:28 +0100 Subject: [PATCH 3/4] fix: pin blocks after adding --- packages/interface-ipfs-core/src/refs-local.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/interface-ipfs-core/src/refs-local.js b/packages/interface-ipfs-core/src/refs-local.js index 0ede5b01e5..8a9014fce8 100644 --- a/packages/interface-ipfs-core/src/refs-local.js +++ b/packages/interface-ipfs-core/src/refs-local.js @@ -38,10 +38,14 @@ module.exports = (common, options) => { content('holmes.txt') ] - await drain(importer(dirs, ipfs.block)) + const imported = await all(importer(dirs, ipfs.block)) - const refs = await all(ipfs.refs.local()) + // otherwise go-ipfs doesn't show them in the local refs + await Promise.all( + imported.map(i => ipfs.pin.add(i.cid)) + ) + const refs = await all(ipfs.refs.local()) const cids = refs.map(r => r.ref) expect(cids).to.include('QmVwdDCY4SPGVFnNCiZnX5CtzwWDn6kAM98JXzKxE3kCmn') expect(cids).to.include('QmR4nFjTu18TyANgC65ArNWp5Yaab1gPzQ4D8zp7Kx3vhr') From 11b411ce4332b73149cadf0a332598d70822598e Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 24 Apr 2020 19:01:05 +0100 Subject: [PATCH 4/4] chore: remove redundant dep --- packages/interface-ipfs-core/package.json | 1 - packages/interface-ipfs-core/src/refs-local.js | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/interface-ipfs-core/package.json b/packages/interface-ipfs-core/package.json index a40100e12e..e6c91b236f 100644 --- a/packages/interface-ipfs-core/package.json +++ b/packages/interface-ipfs-core/package.json @@ -46,7 +46,6 @@ "iso-random-stream": "^1.1.1", "it-all": "^1.0.1", "it-concat": "^1.0.0", - "it-drain": "^1.0.0", "it-last": "^1.0.1", "it-pushable": "^1.3.1", "multiaddr": "^7.2.1", diff --git a/packages/interface-ipfs-core/src/refs-local.js b/packages/interface-ipfs-core/src/refs-local.js index 8a9014fce8..9c41c7bcb1 100644 --- a/packages/interface-ipfs-core/src/refs-local.js +++ b/packages/interface-ipfs-core/src/refs-local.js @@ -4,7 +4,6 @@ const { fixtures } = require('./utils') const { getDescribe, getIt, expect } = require('./utils/mocha') const all = require('it-all') -const drain = require('it-drain') const importer = require('ipfs-unixfs-importer') /** @typedef { import("ipfsd-ctl/src/factory") } Factory */