From 3466d324c5f68e81e152a8965f20644aad1dbda5 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Mon, 30 Oct 2017 09:33:33 +0000
Subject: [PATCH 01/19] wip
---
README.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/README.md b/README.md
index 727fc2147..19a1ca749 100644
--- a/README.md
+++ b/README.md
@@ -8,10 +8,8 @@
-
-
From 9e1bf4c62addd67f38b36fa71d9920ea830135f3 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 10:49:55 +0000
Subject: [PATCH 02/19] files.add revamped!
---
src/files/add-pull-stream.js | 0
.../{create-add-stream.js => add-readable-stream.js} | 0
src/files/cat-pull-stream.js | 0
src/files/cat-readable-stream.js | 0
src/files/get-pull-stream.js | 0
src/files/get-readable-stream.js | 0
src/files/index.js | 9 +++++++--
src/utils/load-commands.js | 9 +++++++--
8 files changed, 14 insertions(+), 4 deletions(-)
create mode 100644 src/files/add-pull-stream.js
rename src/files/{create-add-stream.js => add-readable-stream.js} (100%)
create mode 100644 src/files/cat-pull-stream.js
create mode 100644 src/files/cat-readable-stream.js
create mode 100644 src/files/get-pull-stream.js
create mode 100644 src/files/get-readable-stream.js
diff --git a/src/files/add-pull-stream.js b/src/files/add-pull-stream.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/files/create-add-stream.js b/src/files/add-readable-stream.js
similarity index 100%
rename from src/files/create-add-stream.js
rename to src/files/add-readable-stream.js
diff --git a/src/files/cat-pull-stream.js b/src/files/cat-pull-stream.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/files/cat-readable-stream.js b/src/files/cat-readable-stream.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/files/get-pull-stream.js b/src/files/get-pull-stream.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/files/get-readable-stream.js b/src/files/get-readable-stream.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/files/index.js b/src/files/index.js
index 2c2927af4..ff843aba9 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -7,9 +7,14 @@ module.exports = (arg) => {
return {
add: require('./add')(send),
- createAddStream: require('./create-add-stream')(send),
- get: require('./get')(send),
+ addReadableStream: require('./add-readable-stream')(send),
+ // addPullStream: require('./add-pull-stream')(send),
cat: require('./cat')(send),
+ // catReadableStream: require('./cat-readable-stream')(send),
+ // catPullStream: require('./cat-pull-stream')(send),
+ get: require('./get')(send),
+ // getReadableStream: require('./get-readable-stream')(send),
+ // getPullStream: require('./get-pull-stream')(send),
cp: require('./cp')(send),
ls: require('./ls')(send),
mkdir: require('./mkdir')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 860a8f7f1..080388a33 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -4,8 +4,14 @@ function requireCommands () {
const cmds = {
// add and createAddStream alias
add: require('../files/add'),
+ addReadableStream: require('../files/add-readable-stream'),
+ // addPullStream: require('../files/add-pull-stream'),
cat: require('../files/cat'),
- createAddStream: require('../files/create-add-stream'),
+ // catReadableStream: require('../files/cat-readable-stream'),
+ // catPullStream: require('../files/add-pull-stream'),
+ get: require('../files/get'),
+ // getReadableStream: require('../files/get-readable-stream'),
+ // getPullStream: require('../files/get-pull-stream'),
bitswap: require('../bitswap'),
block: require('../block'),
bootstrap: require('../bootstrap'),
@@ -15,7 +21,6 @@ function requireCommands () {
diag: require('../diag'),
id: require('../id'),
key: require('../key'),
- get: require('../files/get'),
log: require('../log'),
ls: require('../ls'),
mount: require('../mount'),
From 512b8df7b118021c2bfe6ca71c8e8b5c97e1e099 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 14:28:40 +0000
Subject: [PATCH 03/19] .addReadableStream
---
src/files/add-readable-stream.js | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/src/files/add-readable-stream.js b/src/files/add-readable-stream.js
index 47c178459..cb4364d1d 100644
--- a/src/files/add-readable-stream.js
+++ b/src/files/add-readable-stream.js
@@ -1,17 +1,13 @@
'use strict'
const addCmd = require('./add.js')
-const Duplex = require('stream').Duplex
-const promisify = require('promisify-es6')
+const Duplex = require('readable-stream').Duplex
module.exports = (send) => {
const add = addCmd(send)
- return promisify((options, callback) => {
- if (typeof options === 'function') {
- callback = options
- options = undefined
- }
+ return (options) => {
+ options = options || {}
const tuples = []
@@ -23,13 +19,13 @@ module.exports = (send) => {
next()
}
- ds.end = () => {
- add(tuples, options, (err, res) => {
- if (err) { return ds.emit('error', err) }
- res.forEach((tuple) => ds.push(tuple))
- ds.push(null)
- })
- }
- callback(null, ds)
- })
+ ds.end = () => add(tuples, options, (err, res) => {
+ if (err) { return ds.emit('error', err) }
+
+ res.forEach((tuple) => ds.push(tuple))
+ ds.push(null)
+ })
+
+ return ds
+ }
}
From 4f1702830fd6cb09900ea46a8d8630a912a98966 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 15:00:34 +0000
Subject: [PATCH 04/19] .addPullStream
---
package.json | 4 +++-
src/files/add-pull-stream.js | 30 ++++++++++++++++++++++++++++++
src/files/index.js | 2 +-
src/utils/load-commands.js | 4 ++--
4 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index 4d2d5dddc..8befbd51f 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"release-minor": "aegir release --type minor ",
"release-major": "aegir release --type major ",
"coverage": "aegir coverage --timeout 100000",
- "coverage-publish": "aegir coverage --provider coveralls k--timeout 100000"
+ "coverage-publish": "aegir coverage --provider coveralls --timeout 100000"
},
"dependencies": {
"async": "^2.6.0",
@@ -45,6 +45,8 @@
"peer-info": "~0.11.1",
"promisify-es6": "^1.0.3",
"pump": "^1.0.3",
+ "pull": "^2.1.1",
+ "pull-pushable": "^2.1.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.3",
"stream-http": "^2.7.2",
diff --git a/src/files/add-pull-stream.js b/src/files/add-pull-stream.js
index e69de29bb..8c23abc23 100644
--- a/src/files/add-pull-stream.js
+++ b/src/files/add-pull-stream.js
@@ -0,0 +1,30 @@
+'use strict'
+
+const addCmd = require('./add.js')
+const pull = require('pull-stream')
+const pushable = require('pull-pushable')
+
+module.exports = (send) => {
+ const add = addCmd(send)
+
+ return (options) => {
+ options = options || {}
+
+ const source = pushable()
+ const sink = pull.collect((err, tuples) => {
+ if (err) { return source.end(err) }
+
+ add(tuples, options, (err, filesAdded) => {
+ if (err) { return source.end(err) }
+
+ filesAdded.forEach((file) => source.push(file))
+ source.end()
+ })
+ })
+
+ return {
+ sink: sink,
+ source: source
+ }
+ }
+}
diff --git a/src/files/index.js b/src/files/index.js
index ff843aba9..29304e005 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -8,7 +8,7 @@ module.exports = (arg) => {
return {
add: require('./add')(send),
addReadableStream: require('./add-readable-stream')(send),
- // addPullStream: require('./add-pull-stream')(send),
+ addPullStream: require('./add-pull-stream')(send),
cat: require('./cat')(send),
// catReadableStream: require('./cat-readable-stream')(send),
// catPullStream: require('./cat-pull-stream')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 080388a33..7d4c3f29a 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -5,10 +5,10 @@ function requireCommands () {
// add and createAddStream alias
add: require('../files/add'),
addReadableStream: require('../files/add-readable-stream'),
- // addPullStream: require('../files/add-pull-stream'),
+ addPullStream: require('../files/add-pull-stream'),
cat: require('../files/cat'),
// catReadableStream: require('../files/cat-readable-stream'),
- // catPullStream: require('../files/add-pull-stream'),
+ // catPullStream: require('../files/cat-pull-stream'),
get: require('../files/get'),
// getReadableStream: require('../files/get-readable-stream'),
// getPullStream: require('../files/get-pull-stream'),
From aa702ae695354c1e6817c8bceca758bbf21a22c9 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 16:32:47 +0000
Subject: [PATCH 05/19] files.cat
---
src/files/cat.js | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/files/cat.js b/src/files/cat.js
index 2382c2a20..65046fb9b 100644
--- a/src/files/cat.js
+++ b/src/files/cat.js
@@ -3,6 +3,7 @@
const promisify = require('promisify-es6')
const cleanCID = require('../utils/clean-cid')
const v = require('is-ipfs')
+const bl = require('bl')
module.exports = (send) => {
return promisify((hash, opts, callback) => {
@@ -19,10 +20,14 @@ module.exports = (send) => {
}
}
- send({
- path: 'cat',
- args: hash,
- buffer: opts.buffer
- }, callback)
+ send({ path: 'cat', args: hash, buffer: opts.buffer }, (err, stream) => {
+ if (err) { return callback(err) }
+
+ stream.pipe(bl((err, data) => {
+ if (err) { return callback(err) }
+
+ callback(null, data)
+ }))
+ })
})
}
From 987a9b7a3146fb8a18a2c295c8d17f7cc4ecd9f3 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 17:06:54 +0000
Subject: [PATCH 06/19] .catReadableStream
---
src/files/cat-readable-stream.js | 29 +++++++++++++++++++++++++++++
src/files/index.js | 2 +-
src/utils/load-commands.js | 2 +-
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/src/files/cat-readable-stream.js b/src/files/cat-readable-stream.js
index e69de29bb..d72cc6281 100644
--- a/src/files/cat-readable-stream.js
+++ b/src/files/cat-readable-stream.js
@@ -0,0 +1,29 @@
+'use strict'
+
+const cleanCID = require('../utils/clean-cid')
+const v = require('is-ipfs')
+const Stream = require('readable-stream')
+
+module.exports = (send) => {
+ return (hash, opts) => {
+ opts = opts || {}
+
+ const pt = new Stream.PassThrough()
+
+ try {
+ hash = cleanCID(hash)
+ } catch (err) {
+ if (!v.ipfsPath(hash)) {
+ return pt.destroy(err)
+ }
+ }
+
+ send({ path: 'cat', args: hash, buffer: opts.buffer }, (err, stream) => {
+ if (err) { return pt.destroy(err) }
+
+ stream.pipe(pt)
+ })
+
+ return pt
+ }
+}
diff --git a/src/files/index.js b/src/files/index.js
index 29304e005..cd6380610 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -10,7 +10,7 @@ module.exports = (arg) => {
addReadableStream: require('./add-readable-stream')(send),
addPullStream: require('./add-pull-stream')(send),
cat: require('./cat')(send),
- // catReadableStream: require('./cat-readable-stream')(send),
+ catReadableStream: require('./cat-readable-stream')(send),
// catPullStream: require('./cat-pull-stream')(send),
get: require('./get')(send),
// getReadableStream: require('./get-readable-stream')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 7d4c3f29a..5f55c3233 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -7,7 +7,7 @@ function requireCommands () {
addReadableStream: require('../files/add-readable-stream'),
addPullStream: require('../files/add-pull-stream'),
cat: require('../files/cat'),
- // catReadableStream: require('../files/cat-readable-stream'),
+ catReadableStream: require('../files/cat-readable-stream'),
// catPullStream: require('../files/cat-pull-stream'),
get: require('../files/get'),
// getReadableStream: require('../files/get-readable-stream'),
From c99f93c1bfb0072af2deaaa6c91d2b2e97023c97 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 31 Oct 2017 18:02:01 +0000
Subject: [PATCH 07/19] catPullStream
---
package.json | 2 ++
src/files/cat-pull-stream.js | 30 ++++++++++++++++++++++++++++++
src/files/index.js | 2 +-
src/utils/load-commands.js | 2 +-
4 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 8befbd51f..66f720a1f 100644
--- a/package.json
+++ b/package.json
@@ -46,10 +46,12 @@
"promisify-es6": "^1.0.3",
"pump": "^1.0.3",
"pull": "^2.1.1",
+ "pull-defer": "^0.2.2",
"pull-pushable": "^2.1.1",
"qs": "^6.5.1",
"readable-stream": "^2.3.3",
"stream-http": "^2.7.2",
+ "stream-to-pull-stream": "^1.7.2",
"streamifier": "^0.1.1",
"tar-stream": "^1.5.5"
},
diff --git a/src/files/cat-pull-stream.js b/src/files/cat-pull-stream.js
index e69de29bb..13cd06e07 100644
--- a/src/files/cat-pull-stream.js
+++ b/src/files/cat-pull-stream.js
@@ -0,0 +1,30 @@
+'use strict'
+
+const cleanCID = require('../utils/clean-cid')
+const v = require('is-ipfs')
+const toPull = require('stream-to-pull-stream')
+const deferred = require('pull-defer')
+
+module.exports = (send) => {
+ return (hash, opts) => {
+ opts = opts || {}
+
+ const p = deferred.source()
+
+ try {
+ hash = cleanCID(hash)
+ } catch (err) {
+ if (!v.ipfsPath(hash)) {
+ return p.end(err)
+ }
+ }
+
+ send({ path: 'cat', args: hash, buffer: opts.buffer }, (err, stream) => {
+ if (err) { return p.end(err) }
+
+ p.resolve(toPull(stream))
+ })
+
+ return p
+ }
+}
diff --git a/src/files/index.js b/src/files/index.js
index cd6380610..3be8d0a7b 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -11,7 +11,7 @@ module.exports = (arg) => {
addPullStream: require('./add-pull-stream')(send),
cat: require('./cat')(send),
catReadableStream: require('./cat-readable-stream')(send),
- // catPullStream: require('./cat-pull-stream')(send),
+ catPullStream: require('./cat-pull-stream')(send),
get: require('./get')(send),
// getReadableStream: require('./get-readable-stream')(send),
// getPullStream: require('./get-pull-stream')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 5f55c3233..2703bc515 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -8,7 +8,7 @@ function requireCommands () {
addPullStream: require('../files/add-pull-stream'),
cat: require('../files/cat'),
catReadableStream: require('../files/cat-readable-stream'),
- // catPullStream: require('../files/cat-pull-stream'),
+ catPullStream: require('../files/cat-pull-stream'),
get: require('../files/get'),
// getReadableStream: require('../files/get-readable-stream'),
// getPullStream: require('../files/get-pull-stream'),
From 93202bd8ceeef1facfc5a002d5d85a9f804ac817 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 3 Nov 2017 11:13:35 +0000
Subject: [PATCH 08/19] .get
---
src/files/get.js | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/src/files/get.js b/src/files/get.js
index 056c46d01..6597db677 100644
--- a/src/files/get.js
+++ b/src/files/get.js
@@ -3,6 +3,8 @@
const promisify = require('promisify-es6')
const cleanCID = require('../utils/clean-cid')
const TarStreamToObjects = require('../utils/tar-stream-to-objects')
+const concat = require('concat-stream')
+const through = require('through2')
const v = require('is-ipfs')
module.exports = (send) => {
@@ -14,8 +16,7 @@ module.exports = (send) => {
// opts is the real callback --
// 'callback' is being injected by promisify
- if (typeof opts === 'function' &&
- typeof callback === 'function') {
+ if (typeof opts === 'function' && typeof callback === 'function') {
callback = opts
opts = {}
}
@@ -28,13 +29,23 @@ module.exports = (send) => {
}
}
- const request = {
- path: 'get',
- args: path,
- qs: opts
- }
+ const request = { path: 'get', args: path, qs: opts }
// Convert the response stream to TarStream objects
- send.andTransform(request, TarStreamToObjects, callback)
+ send.andTransform(request, TarStreamToObjects, (err, stream) => {
+ if (err) { return callback(err) }
+
+ const files = []
+ stream.pipe(through.obj((file, enc, next) => {
+ if (file.content) {
+ file.content.pipe(concat((content) => {
+ files.push({ path: file.path, content: content })
+ }))
+ } else {
+ files.push(file)
+ }
+ next()
+ }, () => callback(null, files)))
+ })
})
}
From 5cfa39c4978001460071f8a5c504f9b434264b62 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 3 Nov 2017 11:54:37 +0000
Subject: [PATCH 09/19] .getReadableStream
---
src/files/cat-readable-stream.js | 3 ++-
src/files/get-readable-stream.js | 34 ++++++++++++++++++++++++++++++++
src/files/index.js | 2 +-
src/utils/load-commands.js | 2 +-
4 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/src/files/cat-readable-stream.js b/src/files/cat-readable-stream.js
index d72cc6281..0ad80f919 100644
--- a/src/files/cat-readable-stream.js
+++ b/src/files/cat-readable-stream.js
@@ -3,6 +3,7 @@
const cleanCID = require('../utils/clean-cid')
const v = require('is-ipfs')
const Stream = require('readable-stream')
+const pump = require('pump')
module.exports = (send) => {
return (hash, opts) => {
@@ -21,7 +22,7 @@ module.exports = (send) => {
send({ path: 'cat', args: hash, buffer: opts.buffer }, (err, stream) => {
if (err) { return pt.destroy(err) }
- stream.pipe(pt)
+ pump(stream, pt)
})
return pt
diff --git a/src/files/get-readable-stream.js b/src/files/get-readable-stream.js
index e69de29bb..4c74dd0a7 100644
--- a/src/files/get-readable-stream.js
+++ b/src/files/get-readable-stream.js
@@ -0,0 +1,34 @@
+'use strict'
+
+const cleanCID = require('../utils/clean-cid')
+const TarStreamToObjects = require('../utils/tar-stream-to-objects')
+const v = require('is-ipfs')
+const Stream = require('readable-stream')
+const pump = require('pump')
+
+module.exports = (send) => {
+ return (path, opts) => {
+ opts = opts || {}
+
+ const pt = new Stream.PassThrough({objectMode: true})
+
+ try {
+ path = cleanCID(path)
+ } catch (err) {
+ if (!v.ipfsPath(path)) {
+ return pt.destroy(err)
+ }
+ }
+
+ const request = { path: 'get', args: path, qs: opts }
+
+ // Convert the response stream to TarStream objects
+ send.andTransform(request, TarStreamToObjects, (err, stream) => {
+ if (err) { return pt.destroy(err) }
+
+ pump(stream, pt)
+ })
+
+ return pt
+ }
+}
diff --git a/src/files/index.js b/src/files/index.js
index 3be8d0a7b..6807b5a74 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -13,7 +13,7 @@ module.exports = (arg) => {
catReadableStream: require('./cat-readable-stream')(send),
catPullStream: require('./cat-pull-stream')(send),
get: require('./get')(send),
- // getReadableStream: require('./get-readable-stream')(send),
+ getReadableStream: require('./get-readable-stream')(send),
// getPullStream: require('./get-pull-stream')(send),
cp: require('./cp')(send),
ls: require('./ls')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 2703bc515..75e7988e7 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -10,7 +10,7 @@ function requireCommands () {
catReadableStream: require('../files/cat-readable-stream'),
catPullStream: require('../files/cat-pull-stream'),
get: require('../files/get'),
- // getReadableStream: require('../files/get-readable-stream'),
+ getReadableStream: require('../files/get-readable-stream'),
// getPullStream: require('../files/get-pull-stream'),
bitswap: require('../bitswap'),
block: require('../block'),
From 6014abe2c815516d59bb48480aebd5de3bdcd4ee Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 3 Nov 2017 12:11:23 +0000
Subject: [PATCH 10/19] getPullStream
---
src/files/get-pull-stream.js | 44 ++++++++++++++++++++++++++++++++++++
src/files/index.js | 2 +-
src/utils/load-commands.js | 2 +-
3 files changed, 46 insertions(+), 2 deletions(-)
diff --git a/src/files/get-pull-stream.js b/src/files/get-pull-stream.js
index e69de29bb..d86088e30 100644
--- a/src/files/get-pull-stream.js
+++ b/src/files/get-pull-stream.js
@@ -0,0 +1,44 @@
+'use strict'
+
+const cleanCID = require('../utils/clean-cid')
+const TarStreamToObjects = require('../utils/tar-stream-to-objects')
+const v = require('is-ipfs')
+const through = require('through2')
+const pull = require('pull-stream')
+const toPull = require('stream-to-pull-stream')
+const deferred = require('pull-defer')
+
+module.exports = (send) => {
+ return (path, opts) => {
+ opts = opts || {}
+
+ const p = deferred.source()
+
+ try {
+ path = cleanCID(path)
+ } catch (err) {
+ if (!v.ipfsPath(path)) {
+ return p.end(err)
+ }
+ }
+
+ const request = { path: 'get', args: path, qs: opts }
+
+ // Convert the response stream to TarStream objects
+ send.andTransform(request, TarStreamToObjects, (err, stream) => {
+ if (err) { return p.end(err) }
+
+ const files = []
+ stream.pipe(through.obj((file, enc, next) => {
+ if (file.content) {
+ files.push({ path: file.path, content: toPull(file.content) })
+ } else {
+ files.push(file)
+ }
+ next()
+ }, () => p.resolve(pull.values(files))))
+ })
+
+ return p
+ }
+}
diff --git a/src/files/index.js b/src/files/index.js
index 6807b5a74..0c1eada1f 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -14,7 +14,7 @@ module.exports = (arg) => {
catPullStream: require('./cat-pull-stream')(send),
get: require('./get')(send),
getReadableStream: require('./get-readable-stream')(send),
- // getPullStream: require('./get-pull-stream')(send),
+ getPullStream: require('./get-pull-stream')(send),
cp: require('./cp')(send),
ls: require('./ls')(send),
mkdir: require('./mkdir')(send),
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 75e7988e7..6f8eb0af3 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -11,7 +11,7 @@ function requireCommands () {
catPullStream: require('../files/cat-pull-stream'),
get: require('../files/get'),
getReadableStream: require('../files/get-readable-stream'),
- // getPullStream: require('../files/get-pull-stream'),
+ getPullStream: require('../files/get-pull-stream'),
bitswap: require('../bitswap'),
block: require('../block'),
bootstrap: require('../bootstrap'),
From cf3bc0eb3ad2b0c3b5c67d0b4d9a74f460a341ed Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 3 Nov 2017 12:32:02 +0000
Subject: [PATCH 11/19] migrate extra tests
---
test/get.spec.js | 248 +++++++++++----------------------------
test/sub-modules.spec.js | 7 +-
2 files changed, 76 insertions(+), 179 deletions(-)
diff --git a/test/get.spec.js b/test/get.spec.js
index f401235d1..007b62ea1 100644
--- a/test/get.spec.js
+++ b/test/get.spec.js
@@ -8,212 +8,104 @@ const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const isNode = require('detect-node')
-const fs = require('fs')
-const concat = require('concat-stream')
-const through = require('through2')
-const streamEqual = require('stream-equal')
-const path = require('path')
+const series = require('async/series')
const loadFixture = require('aegir/fixtures')
const FactoryClient = require('./ipfs-factory/client')
-const testfile = loadFixture(__dirname, '/fixtures/testfile.txt')
-let testfileBig
-let tfbPath
+describe('.get (specific go-ipfs features)', function () {
+ this.timeout(20 * 1000)
-if (isNode) {
- tfbPath = path.join(__dirname, '/fixtures/15mb.random')
- testfileBig = fs.createReadStream(tfbPath, { bufferSize: 128 })
-}
+ function fixture (path) {
+ return loadFixture(__dirname, path, 'interface-ipfs-core')
+ }
-describe('.get', function () {
- this.timeout(80 * 1000)
+ const smallFile = {
+ cid: 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP',
+ data: fixture('../test/fixtures/testfile.txt')
+ }
let ipfs
let fc
before((done) => {
fc = new FactoryClient()
- fc.spawnNode((err, node) => {
- expect(err).to.not.exist()
- ipfs = node
- done()
- })
- })
-
- after((done) => fc.dismantle(done))
-
- describe('Callback API', () => {
- this.timeout(80 * 1000)
-
- it('add file for testing', (done) => {
- const expectedMultihash = 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP'
-
- ipfs.files.add(testfile, (err, res) => {
- expect(err).to.not.exist()
-
- expect(res).to.have.length(1)
- expect(res[0].hash).to.equal(expectedMultihash)
- expect(res[0].path).to.equal(expectedMultihash)
- done()
- })
- })
- it('get with no compression args', (done) => {
- ipfs.get('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP', (err, res) => {
+ series([
+ (cb) => fc.spawnNode((err, node) => {
expect(err).to.not.exist()
+ ipfs = node
+ cb()
+ }),
+ (cb) => ipfs.files.add(smallFile.data, cb)
+ ], done)
+ })
- // accumulate the files and their content
- var files = []
-
- res.pipe(through.obj((file, enc, next) => {
- file.content.pipe(concat((content) => {
- files.push({
- path: file.path,
- content: content
- })
- next()
- }))
- }, () => {
- expect(files).to.be.length(1)
- expect(files[0].content.toString()).to.contain(testfile.toString())
- done()
- }))
- })
- })
+ after((done) => fc.dismantle(done))
- it('get with archive true', (done) => {
- ipfs.get('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP', {
- archive: true
- }, (err, res) => {
- expect(err).to.not.exist()
+ it('no compression args', (done) => {
+ ipfs.get(smallFile.cid, (err, files) => {
+ expect(err).to.not.exist()
- // accumulate the files and their content
- var files = []
-
- res.pipe(through.obj((file, enc, next) => {
- file.content.pipe(concat((content) => {
- files.push({
- path: file.path,
- content: content
- })
- next()
- }))
- }, () => {
- expect(files).to.be.length(1)
- expect(files[0].content.toString()).to.contain(testfile.toString())
- done()
- }))
- })
+ expect(files).to.be.length(1)
+ expect(files[0].content.toString()).to.contain(smallFile.data.toString())
+ done()
})
+ })
- it('get err with out of range compression level', (done) => {
- ipfs.get('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP', {
- compress: true,
- 'compression-level': 10
- }, (err, res) => {
- expect(err).to.exist()
- expect(err.toString()).to.equal('Error: Compression level must be between 1 and 9')
- done()
- })
- })
+ it('archive true', (done) => {
+ ipfs.get(smallFile.cid, { archive: true }, (err, files) => {
+ expect(err).to.not.exist()
- it('get with compression level', (done) => {
- ipfs.get('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP', {
- compress: true,
- 'compression-level': 1
- }, (err, res) => {
- expect(err).to.not.exist()
- done()
- })
+ expect(files).to.be.length(1)
+ expect(files[0].content.toString()).to.contain(smallFile.data.toString())
+ done()
})
+ })
- it('add a BIG file (for testing get)', (done) => {
- if (!isNode) { return done() }
-
- const bigFile = fs.readFileSync(tfbPath)
- const expectedMultihash = 'Qme79tX2bViL26vNjPsF3DP1R9rMKMvnPYJiKTTKPrXJjq'
-
- ipfs.files.add(bigFile, (err, res) => {
- expect(err).to.not.exist()
-
- expect(res).to.have.length(1)
- expect(res[0].path).to.equal(expectedMultihash)
- expect(res[0].hash).to.equal(expectedMultihash)
- done()
- })
+ it('err with out of range compression level', (done) => {
+ ipfs.get(smallFile.cid, {
+ compress: true,
+ 'compression-level': 10
+ }, (err, files) => {
+ expect(err).to.exist()
+ expect(err.toString()).to.equal('Error: Compression level must be between 1 and 9')
+ done()
})
+ })
- it('get BIG file', (done) => {
- if (!isNode) { return done() }
-
- ipfs.get('Qme79tX2bViL26vNjPsF3DP1R9rMKMvnPYJiKTTKPrXJjq', (err, files) => {
- expect(err).to.not.exist()
+ it('with compression level', (done) => {
+ ipfs.get(smallFile.cid, { compress: true, 'compression-level': 1 }, done)
+ })
- files.on('data', (file) => {
- // Do not blow out the memory of nodejs :)
- streamEqual(file.content, testfileBig, (err, equal) => {
- expect(err).to.not.exist()
- expect(equal).to.equal(true)
- done()
- })
- })
- })
+ it('add path containing "+"s (for testing get)', (done) => {
+ if (!isNode) { return done() }
+ const filename = 'ti,c64x+mega++mod-pic.txt'
+ const subdir = 'tmp/c++files'
+ const expectedCid = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff'
+ ipfs.add([{
+ path: subdir + '/' + filename,
+ content: Buffer.from(subdir + '/' + filename, 'utf-8')
+ }], (err, files) => {
+ expect(err).to.not.exist()
+ expect(files[2].hash).to.equal(expectedCid)
+ done()
})
+ })
- it('add path containing "+"s (for testing get)', (done) => {
- if (!isNode) { return done() }
- const filename = 'ti,c64x+mega++mod-pic.txt'
- const subdir = 'tmp/c++files'
- const expectedMultihash = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff'
- ipfs.files.add([{
- path: subdir + '/' + filename,
- content: Buffer.from(subdir + '/' + filename, 'utf-8')
- }], (err, res) => {
- if (err) done(err)
- expect(res[2].hash).to.equal(expectedMultihash)
- done()
- })
- })
+ it('get path containing "+"s', (done) => {
+ if (!isNode) { return done() }
- it('get path containing "+"s', (done) => {
- if (!isNode) { return done() }
- const multihash = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff'
- let count = 0
- ipfs.get(multihash, (err, files) => {
- expect(err).to.not.exist()
- files.on('data', (file) => {
- if (file.path !== multihash) {
- count++
- expect(file.path).to.contain('+')
- if (count === 2) done()
- }
- })
+ const cid = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff'
+ let count = 0
+ ipfs.get(cid, (err, files) => {
+ expect(err).to.not.exist()
+ files.forEach((file) => {
+ if (file.path !== cid) {
+ count++
+ expect(file.path).to.contain('+')
+ if (count === 2) done()
+ }
})
})
})
-
- describe('Promise API', () => {
- this.timeout(80 * 1000)
-
- it('get', (done) => {
- ipfs.get('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP')
- .then((files) => {
- files.on('data', (file) => {
- let buf = ''
- file.content
- .on('error', (err) => expect(err).to.not.exist())
- .on('data', (data) => {
- buf += data.toString()
- })
- .on('end', () => {
- expect(buf).to.contain(testfile.toString())
- done()
- })
- })
- })
- .catch((err) => {
- expect(err).to.not.exist()
- })
- })
- })
})
diff --git a/test/sub-modules.spec.js b/test/sub-modules.spec.js
index bd6d00c66..a74ac1234 100644
--- a/test/sub-modules.spec.js
+++ b/test/sub-modules.spec.js
@@ -157,9 +157,14 @@ describe('submodules', () => {
const files = require('../src/files')(config)
expect(files.add).to.be.a('function')
- expect(files.createAddStream).to.be.a('function')
+ expect(files.addReadableStream).to.be.a('function')
+ expect(files.addPullStream).to.be.a('function')
expect(files.get).to.be.a('function')
+ expect(files.getReadableStream).to.be.a('function')
+ expect(files.getPullStream).to.be.a('function')
expect(files.cat).to.be.a('function')
+ expect(files.catReadableStream).to.be.a('function')
+ expect(files.catPullStream).to.be.a('function')
expect(files.cp).to.be.a('function')
expect(files.ls).to.be.a('function')
expect(files.mkdir).to.be.a('function')
From 3bfdea24c3c96fc6852c5bf9bde3a4d7ea0f6039 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Tue, 14 Nov 2017 10:37:20 +0000
Subject: [PATCH 12/19] .ls, .lsReadableStream and .lsPullStream
---
src/files/index.js | 4 ++-
src/ls-pull-stream.js | 64 ++++++++++++++++++++++++++++++++++++++
src/ls-readable-stream.js | 62 ++++++++++++++++++++++++++++++++++++
src/utils/load-commands.js | 7 +++--
4 files changed, 134 insertions(+), 3 deletions(-)
create mode 100644 src/ls-pull-stream.js
create mode 100644 src/ls-readable-stream.js
diff --git a/src/files/index.js b/src/files/index.js
index 0c1eada1f..4b9796998 100644
--- a/src/files/index.js
+++ b/src/files/index.js
@@ -15,11 +15,13 @@ module.exports = (arg) => {
get: require('./get')(send),
getReadableStream: require('./get-readable-stream')(send),
getPullStream: require('./get-pull-stream')(send),
+
+ // Specific to MFS (for now)
cp: require('./cp')(send),
- ls: require('./ls')(send),
mkdir: require('./mkdir')(send),
stat: require('./stat')(send),
rm: require('./rm')(send),
+ ls: require('./ls')(send),
read: require('./read')(send),
write: require('./write')(send),
mv: require('./mv')(send)
diff --git a/src/ls-pull-stream.js b/src/ls-pull-stream.js
new file mode 100644
index 000000000..eacb7e391
--- /dev/null
+++ b/src/ls-pull-stream.js
@@ -0,0 +1,64 @@
+'use strict'
+
+const moduleConfig = require('./utils/module-config')
+const pull = require('pull-stream')
+const deferred = require('pull-defer')
+
+module.exports = (arg) => {
+ const send = moduleConfig(arg)
+
+ return (args, opts, callback) => {
+ if (typeof (opts) === 'function') {
+ callback = opts
+ opts = {}
+ }
+
+ const p = deferred.source()
+
+ send({ path: 'ls', args: args, qs: opts }, (err, results) => {
+ if (err) {
+ return callback(err)
+ }
+
+ let result = results.Objects
+ if (!result) {
+ return callback(new Error('expected .Objects in results'))
+ }
+
+ result = result[0]
+ if (!result) {
+ return callback(new Error('expected one array in results.Objects'))
+ }
+
+ result = result.Links
+ if (!Array.isArray(result)) {
+ return callback(new Error('expected one array in results.Objects[0].Links'))
+ }
+
+ result = result.map((link) => ({
+ depth: 1,
+ name: link.Name,
+ path: args + '/' + link.Name,
+ size: link.Size,
+ hash: link.Hash,
+ type: typeOf(link)
+ }))
+
+ p.resolve(pull.values(result))
+ })
+
+ return p
+ }
+}
+
+function typeOf (link) {
+ switch (link.Type) {
+ case 1:
+ case 5:
+ return 'dir'
+ case 2:
+ return 'file'
+ default:
+ return 'unknown'
+ }
+}
diff --git a/src/ls-readable-stream.js b/src/ls-readable-stream.js
new file mode 100644
index 000000000..26005c5ee
--- /dev/null
+++ b/src/ls-readable-stream.js
@@ -0,0 +1,62 @@
+'use strict'
+
+const moduleConfig = require('./utils/module-config')
+const Stream = require('readable-stream')
+
+module.exports = (arg) => {
+ const send = moduleConfig(arg)
+
+ return (args, opts, callback) => {
+ if (typeof (opts) === 'function') {
+ callback = opts
+ opts = {}
+ }
+
+ const pt = new Stream.PassThrough({objectMode: true})
+
+ send({ path: 'ls', args: args, qs: opts }, (err, results) => {
+ if (err) { return callback(err) }
+
+ let result = results.Objects
+ if (!result) {
+ return callback(new Error('expected .Objects in results'))
+ }
+
+ result = result[0]
+ if (!result) {
+ return callback(new Error('expected one array in results.Objects'))
+ }
+
+ result = result.Links
+ if (!Array.isArray(result)) {
+ return callback(new Error('expected one array in results.Objects[0].Links'))
+ }
+
+ result = result.map((link) => ({
+ depth: 1,
+ name: link.Name,
+ path: args + '/' + link.Name,
+ size: link.Size,
+ hash: link.Hash,
+ type: typeOf(link)
+ }))
+
+ result.forEach((item) => pt.write(item))
+ pt.end()
+ })
+
+ return pt
+ }
+}
+
+function typeOf (link) {
+ switch (link.Type) {
+ case 1:
+ case 5:
+ return 'dir'
+ case 2:
+ return 'file'
+ default:
+ return 'unknown'
+ }
+}
diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js
index 6f8eb0af3..ff46271c9 100644
--- a/src/utils/load-commands.js
+++ b/src/utils/load-commands.js
@@ -2,7 +2,7 @@
function requireCommands () {
const cmds = {
- // add and createAddStream alias
+ // Files (not MFS)
add: require('../files/add'),
addReadableStream: require('../files/add-readable-stream'),
addPullStream: require('../files/add-pull-stream'),
@@ -12,6 +12,10 @@ function requireCommands () {
get: require('../files/get'),
getReadableStream: require('../files/get-readable-stream'),
getPullStream: require('../files/get-pull-stream'),
+ ls: require('../ls'),
+ lsReadableStream: require('../ls-readable-stream'),
+ lsPullStream: require('../ls-pull-stream'),
+
bitswap: require('../bitswap'),
block: require('../block'),
bootstrap: require('../bootstrap'),
@@ -22,7 +26,6 @@ function requireCommands () {
id: require('../id'),
key: require('../key'),
log: require('../log'),
- ls: require('../ls'),
mount: require('../mount'),
name: require('../name'),
object: require('../object'),
From bd22ac93d9554cfa17b4fae820d0c0df968721b9 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 17:44:46 +0000
Subject: [PATCH 13/19] chore: update interface-ipfs-core
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 66f720a1f..019336a8a 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"dirty-chai": "^2.0.1",
"eslint-plugin-react": "^7.4.0",
"gulp": "^3.9.1",
- "interface-ipfs-core": "~0.35.0",
+ "interface-ipfs-core": "~0.36.0",
"hapi": "^16.6.2",
"ipfsd-ctl": "~0.24.1",
"pre-commit": "^1.2.2",
From 631386d82a8818d3d7283a9c4cb4fcb6d6036672 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 18:19:35 +0000
Subject: [PATCH 14/19] clean up
---
test/ls.spec.js | 36 +++++++++++-------------------------
1 file changed, 11 insertions(+), 25 deletions(-)
diff --git a/test/ls.spec.js b/test/ls.spec.js
index 4cbf845f4..82c4367fd 100644
--- a/test/ls.spec.js
+++ b/test/ls.spec.js
@@ -12,7 +12,7 @@ const path = require('path')
const FactoryClient = require('./ipfs-factory/client')
describe('.ls', function () {
- this.timeout(50 * 1000)
+ this.timeout(40 * 1000)
if (!isNode) { return }
@@ -39,33 +39,19 @@ describe('.ls', function () {
after((done) => fc.dismantle(done))
- describe('Callback API', () => {
- it('should correctly handle a nonexist()ing hash', function (done) {
- ipfs.ls('surelynotavalidhashheh?', (err, res) => {
- expect(err).to.exist()
- expect(res).to.not.exist()
- done()
- })
- })
-
- it('should correctly handle a nonexist()ing path', function (done) {
- ipfs.ls('QmRNjDeKStKGTQXnJ2NFqeQ9oW/folder_that_isnt_there', (err, res) => {
- expect(err).to.exist()
- expect(res).to.not.exist()
- done()
- })
+ it('should correctly handle a nonexist()ing hash', function (done) {
+ ipfs.ls('surelynotavalidhashheh?', (err, res) => {
+ expect(err).to.exist()
+ expect(res).to.not.exist()
+ done()
})
})
- describe('Promises API', () => {
- it('should correctly handle a nonexist()ing hash', () => {
- return ipfs.ls('surelynotavalidhashheh?')
- .catch((err) => expect(err).to.exist())
- })
-
- it('should correctly handle a nonexist()ing path', () => {
- return ipfs.ls('QmRNjDeKStKGTQXnJ3NFqeQ9oW/folder_that_isnt_there')
- .catch((err) => expect(err).to.exist())
+ it('should correctly handle a nonexist()ing path', function (done) {
+ ipfs.ls('QmRNjDeKStKGTQXnJ2NFqeQ9oW/folder_that_isnt_there', (err, res) => {
+ expect(err).to.exist()
+ expect(res).to.not.exist()
+ done()
})
})
})
From 956746f27872bc395793ac78ec50f7966e24c5ad Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 18:28:07 +0000
Subject: [PATCH 15/19] moar cleanup
---
package.json | 2 +-
test/add.spec.js | 40 ----------
test/get.spec.js | 1 +
test/{ => interface}/pin.spec.js | 0
test/ls.spec.js | 57 --------------
test/util.spec.js | 127 +++++++++++++++----------------
6 files changed, 65 insertions(+), 162 deletions(-)
delete mode 100644 test/add.spec.js
rename test/{ => interface}/pin.spec.js (100%)
delete mode 100644 test/ls.spec.js
diff --git a/package.json b/package.json
index 019336a8a..8fe9e0348 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"dirty-chai": "^2.0.1",
"eslint-plugin-react": "^7.4.0",
"gulp": "^3.9.1",
- "interface-ipfs-core": "~0.36.0",
+ "interface-ipfs-core": "~0.36.1",
"hapi": "^16.6.2",
"ipfsd-ctl": "~0.24.1",
"pre-commit": "^1.2.2",
diff --git a/test/add.spec.js b/test/add.spec.js
deleted file mode 100644
index 68f9fd529..000000000
--- a/test/add.spec.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/* eslint-env mocha */
-/* eslint max-nested-callbacks: ["error", 8] */
-'use strict'
-
-const chai = require('chai')
-const dirtyChai = require('dirty-chai')
-const expect = chai.expect
-chai.use(dirtyChai)
-const isNode = require('detect-node')
-const path = require('path')
-
-const FactoryClient = require('./ipfs-factory/client')
-
-describe('.add (extra tests)', () => {
- if (!isNode) { return }
-
- let ipfs
- let fc
-
- before(function (done) {
- this.timeout(20 * 1000) // slow CI
- fc = new FactoryClient()
- fc.spawnNode((err, node) => {
- expect(err).to.not.exist()
- ipfs = node
- done()
- })
- })
-
- after((done) => fc.dismantle(done))
-
- it('add by path fails', (done) => {
- const validPath = path.join(process.cwd() + '/package.json')
-
- ipfs.files.add(validPath, (err, res) => {
- expect(err).to.exist()
- done()
- })
- })
-})
diff --git a/test/get.spec.js b/test/get.spec.js
index 007b62ea1..008905bba 100644
--- a/test/get.spec.js
+++ b/test/get.spec.js
@@ -79,6 +79,7 @@ describe('.get (specific go-ipfs features)', function () {
it('add path containing "+"s (for testing get)', (done) => {
if (!isNode) { return done() }
+
const filename = 'ti,c64x+mega++mod-pic.txt'
const subdir = 'tmp/c++files'
const expectedCid = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff'
diff --git a/test/pin.spec.js b/test/interface/pin.spec.js
similarity index 100%
rename from test/pin.spec.js
rename to test/interface/pin.spec.js
diff --git a/test/ls.spec.js b/test/ls.spec.js
deleted file mode 100644
index 82c4367fd..000000000
--- a/test/ls.spec.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/* eslint-env mocha */
-'use strict'
-
-const chai = require('chai')
-const dirtyChai = require('dirty-chai')
-const expect = chai.expect
-chai.use(dirtyChai)
-const isNode = require('detect-node')
-const waterfall = require('async/waterfall')
-const path = require('path')
-
-const FactoryClient = require('./ipfs-factory/client')
-
-describe('.ls', function () {
- this.timeout(40 * 1000)
-
- if (!isNode) { return }
-
- let ipfs
- let fc
- let folder
-
- before((done) => {
- fc = new FactoryClient()
- waterfall([
- (cb) => fc.spawnNode(cb),
- (node, cb) => {
- ipfs = node
- const filesPath = path.join(__dirname, '/fixtures/test-folder')
- ipfs.util.addFromFs(filesPath, { recursive: true }, cb)
- },
- (hashes, cb) => {
- folder = hashes[hashes.length - 1].hash
- expect(folder).to.be.eql('QmQao3KNcpCsdXaLGpjieFGMfXzsSXgsf6Rnc5dJJA3QMh')
- cb()
- }
- ], done)
- })
-
- after((done) => fc.dismantle(done))
-
- it('should correctly handle a nonexist()ing hash', function (done) {
- ipfs.ls('surelynotavalidhashheh?', (err, res) => {
- expect(err).to.exist()
- expect(res).to.not.exist()
- done()
- })
- })
-
- it('should correctly handle a nonexist()ing path', function (done) {
- ipfs.ls('QmRNjDeKStKGTQXnJ2NFqeQ9oW/folder_that_isnt_there', (err, res) => {
- expect(err).to.exist()
- expect(res).to.not.exist()
- done()
- })
- })
-})
diff --git a/test/util.spec.js b/test/util.spec.js
index 20743057f..e0a43d7d0 100644
--- a/test/util.spec.js
+++ b/test/util.spec.js
@@ -19,6 +19,7 @@ describe('.util', () => {
before(function (done) {
this.timeout(20 * 1000) // slow CI
+
fc = new FactoryClient()
fc.spawnNode((err, node) => {
expect(err).to.not.exist()
@@ -29,93 +30,91 @@ describe('.util', () => {
after((done) => fc.dismantle(done))
- describe('Callback API', () => {
- it('.streamAdd', (done) => {
- const tfpath = path.join(__dirname, '/fixtures/testfile.txt')
- const rs = fs.createReadStream(tfpath)
- rs.path = '' // clean the path for testing purposes
+ it('.streamAdd', (done) => {
+ const tfpath = path.join(__dirname, '/fixtures/testfile.txt')
+ const rs = fs.createReadStream(tfpath)
+ rs.path = '' // clean the path for testing purposes
+
+ ipfs.util.addFromStream(rs, (err, result) => {
+ expect(err).to.not.exist()
+ expect(result.length).to.equal(1)
+ done()
+ })
+ })
- ipfs.util.addFromStream(rs, (err, result) => {
+ describe('.fsAdd should add', () => {
+ it('a directory', (done) => {
+ const filesPath = path.join(__dirname, '/fixtures/test-folder')
+ ipfs.util.addFromFs(filesPath, { recursive: true }, (err, result) => {
expect(err).to.not.exist()
- expect(result.length).to.equal(1)
+ expect(result.length).to.be.above(8)
done()
})
})
- describe('.fsAdd should add', () => {
- it('a directory', (done) => {
- const filesPath = path.join(__dirname, '/fixtures/test-folder')
- ipfs.util.addFromFs(filesPath, { recursive: true }, (err, result) => {
- expect(err).to.not.exist()
- expect(result.length).to.be.above(8)
- done()
- })
- })
-
- it('a directory with an odd name', (done) => {
- const filesPath = path.join(__dirname, '/fixtures/weird name folder [v0]')
- ipfs.util.addFromFs(filesPath, { recursive: true }, (err, result) => {
- expect(err).to.not.exist()
- expect(result.length).to.be.above(8)
- done()
- })
- })
-
- it('add and ignore a directory', (done) => {
- const filesPath = path.join(__dirname, '/fixtures/test-folder')
- ipfs.util.addFromFs(filesPath, { recursive: true, ignore: ['files/**'] }, (err, result) => {
- expect(err).to.not.exist()
- expect(result.length).to.be.below(9)
- done()
- })
- })
-
- it('a file', (done) => {
- const filePath = path.join(__dirname, '/fixtures/testfile.txt')
- ipfs.util.addFromFs(filePath, (err, result) => {
- expect(err).to.not.exist()
- expect(result.length).to.be.equal(1)
- expect(result[0].path).to.be.equal('testfile.txt')
- done()
- })
- })
-
- it('a hidden file in a directory', (done) => {
- const filesPath = path.join(__dirname, '/fixtures/test-folder')
- ipfs.util.addFromFs(filesPath, { recursive: true, hidden: true }, (err, result) => {
- expect(err).to.not.exist()
- expect(result.length).to.be.above(10)
- expect(result.map(object => object.path)).to.include('test-folder/.hiddenTest.txt')
- expect(result.map(object => object.hash)).to.include('QmdbAjVmLRdpFyi8FFvjPfhTGB2cVXvWLuK7Sbt38HXrtt')
- done()
- })
+ it('a directory with an odd name', (done) => {
+ const filesPath = path.join(__dirname, '/fixtures/weird name folder [v0]')
+ ipfs.util.addFromFs(filesPath, { recursive: true }, (err, result) => {
+ expect(err).to.not.exist()
+ expect(result.length).to.be.above(8)
+ done()
})
})
- it('.urlAdd http', (done) => {
- ipfs.util.addFromURL('http://example.com/', (err, result) => {
+ it('add and ignore a directory', (done) => {
+ const filesPath = path.join(__dirname, '/fixtures/test-folder')
+ ipfs.util.addFromFs(filesPath, { recursive: true, ignore: ['files/**'] }, (err, result) => {
expect(err).to.not.exist()
- expect(result.length).to.equal(1)
+ expect(result.length).to.be.below(9)
done()
})
})
- it('.urlAdd https', (done) => {
- ipfs.util.addFromURL('https://example.com/', (err, result) => {
+ it('a file', (done) => {
+ const filePath = path.join(__dirname, '/fixtures/testfile.txt')
+ ipfs.util.addFromFs(filePath, (err, result) => {
expect(err).to.not.exist()
- expect(result.length).to.equal(1)
+ expect(result.length).to.be.equal(1)
+ expect(result[0].path).to.be.equal('testfile.txt')
done()
})
})
- it('.urlAdd http with redirection', (done) => {
- ipfs.util.addFromURL('http://covers.openlibrary.org/book/id/969165.jpg', (err, result) => {
+ it('a hidden file in a directory', (done) => {
+ const filesPath = path.join(__dirname, '/fixtures/test-folder')
+ ipfs.util.addFromFs(filesPath, { recursive: true, hidden: true }, (err, result) => {
expect(err).to.not.exist()
- expect(result[0].hash).to.equal('QmaL9zy7YUfvWmtD5ZXp42buP7P4xmZJWFkm78p8FJqgjg')
+ expect(result.length).to.be.above(10)
+ expect(result.map(object => object.path)).to.include('test-folder/.hiddenTest.txt')
+ expect(result.map(object => object.hash)).to.include('QmdbAjVmLRdpFyi8FFvjPfhTGB2cVXvWLuK7Sbt38HXrtt')
done()
})
})
})
- describe('Promise API', () => {})
+ it('.urlAdd http', function (done) {
+ this.timeout(20 * 1000)
+
+ ipfs.util.addFromURL('http://example.com/', (err, result) => {
+ expect(err).to.not.exist()
+ expect(result.length).to.equal(1)
+ done()
+ })
+ })
+
+ it('.urlAdd https', (done) => {
+ ipfs.util.addFromURL('https://example.com/', (err, result) => {
+ expect(err).to.not.exist()
+ expect(result.length).to.equal(1)
+ done()
+ })
+ })
+
+ it('.urlAdd http with redirection', (done) => {
+ ipfs.util.addFromURL('http://covers.openlibrary.org/book/id/969165.jpg', (err, result) => {
+ expect(err).to.not.exist()
+ expect(result[0].hash).to.equal('QmaL9zy7YUfvWmtD5ZXp42buP7P4xmZJWFkm78p8FJqgjg')
+ done()
+ })
+ })
})
From 5f889a2df8cb7e0cf0231157289e89eba0e2800b Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 18:33:35 +0000
Subject: [PATCH 16/19] fix path
---
test/interface/pin.spec.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/interface/pin.spec.js b/test/interface/pin.spec.js
index fbffe385d..b841568ac 100644
--- a/test/interface/pin.spec.js
+++ b/test/interface/pin.spec.js
@@ -3,7 +3,7 @@
'use strict'
const test = require('interface-ipfs-core')
-const FactoryClient = require('./ipfs-factory/client')
+const FactoryClient = require('../ipfs-factory/client')
let fc
From 8dc9dfe26d8ad2816c2898f4aca8d4dccadfb506 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 18:43:32 +0000
Subject: [PATCH 17/19] chore
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 8fe9e0348..6788dd809 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"dirty-chai": "^2.0.1",
"eslint-plugin-react": "^7.4.0",
"gulp": "^3.9.1",
- "interface-ipfs-core": "~0.36.1",
+ "interface-ipfs-core": "~0.36.2",
"hapi": "^16.6.2",
"ipfsd-ctl": "~0.24.1",
"pre-commit": "^1.2.2",
From e1cd5acd5887dfe81f82bcea1866d54cc3062203 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 18:51:26 +0000
Subject: [PATCH 18/19] chore
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 6788dd809..857516052 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"dirty-chai": "^2.0.1",
"eslint-plugin-react": "^7.4.0",
"gulp": "^3.9.1",
- "interface-ipfs-core": "~0.36.2",
+ "interface-ipfs-core": "~0.36.3",
"hapi": "^16.6.2",
"ipfsd-ctl": "~0.24.1",
"pre-commit": "^1.2.2",
From 971c12c42d71f7908744af5000a0b6858ac7bca7 Mon Sep 17 00:00:00 2001
From: David Dias
Date: Fri, 17 Nov 2017 19:09:16 +0000
Subject: [PATCH 19/19] there you go
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 857516052..d23c0a111 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"dirty-chai": "^2.0.1",
"eslint-plugin-react": "^7.4.0",
"gulp": "^3.9.1",
- "interface-ipfs-core": "~0.36.3",
+ "interface-ipfs-core": "~0.36.4",
"hapi": "^16.6.2",
"ipfsd-ctl": "~0.24.1",
"pre-commit": "^1.2.2",