diff --git a/.travis.yml b/.travis.yml index 69f916f8df..eb6c5ea2ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -64,7 +64,7 @@ jobs: - stage: check script: - npm run build -- $RUN_SINCE --scope={ipfs,ipfs-http-client} -- -- --bundlesize - - npm run dep-check -- $RUN_SINCE -- -- -- -i wrtc -i electron-webrtc + - npm run dep-check -- $RUN_SINCE -- -- -- -i electron-webrtc - npm run lint -- $RUN_SINCE --concurrency 1 - stage: test @@ -107,6 +107,36 @@ jobs: script: - npm run test:electron-renderer -- $RUN_SINCE -- -- --bail + - stage: test + name: interface to core - node + script: + - npm run test:interface:node -- $RUN_SINCE -- -- --bail + + - stage: test + name: interface to core - browser + script: + - npm run test:interface:browser -- $RUN_SINCE -- -- --bail + + - stage: test + name: interface over http to js-ipfs - node + script: + - npm run test:interface:node:http -- $RUN_SINCE --scope=ipfs -- -- --bail + + - stage: test + name: interface over http to js-ipfs - browser + script: + - npm run test:interface:browser:http -- $RUN_SINCE --scope=ipfs -- -- --bail + + - stage: test + name: interface over http to go-ipfs - node + script: + - npm run test:interface:node:http -- $RUN_SINCE --scope=ipfs-http-client -- -- --bail + + - stage: test + name: interface over http to go-ipfs - browser + script: + - npm run test:interface:browser:http -- $RUN_SINCE --scope=ipfs-http-client -- -- --bail + - stage: test name: interop - node script: diff --git a/package.json b/package.json index 78c88e0d90..2e6adfaa61 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,10 @@ "test:electron-main": "lerna run test:electron-main", "test:electron-renderer": "lerna run test:electron-renderer", "test:cli": "lerna run test:cli", + "test:interface:node": "lerna run test:interface:node", + "test:interface:node:http": "lerna run test:interface:node:http", + "test:interface:browser:http": "lerna run test:interface:browser:http", + "test:interface:browser": "lerna run test:interface:browser:http", "test:interop:node": "lerna run test:interop:node", "test:interop:browser": "lerna run test:interop:browser", "test:interop:electron-main": "lerna run test:interop:electron-main", diff --git a/packages/ipfs-http-client/.aegir.js b/packages/ipfs-http-client/.aegir.js index cbe19e93bc..13f88bbc4e 100644 --- a/packages/ipfs-http-client/.aegir.js +++ b/packages/ipfs-http-client/.aegir.js @@ -37,27 +37,35 @@ module.exports = { }, hooks: { node: { - pre: () => { - echoServer = EchoServer.createServer() + pre: async () => { + if (process.env.ECHO_SERVER_PORT) { + echoServer = EchoServer.createServer() - return echoServer.start() + await echoServer.start() + } }, - post: () => echoServer.stop() + post: async () => { + if (echoServer) { + await echoServer.stop() + } + } }, browser: { - pre: () => { - echoServer = EchoServer.createServer() + pre: async () => { + if (process.env.ECHO_SERVER_PORT) { + echoServer = EchoServer.createServer() + + await echoServer.start() + } - return Promise.all([ - server.start(), - echoServer.start() - ]) + await server.start() }, - post: () => { - return Promise.all([ - server.stop(), - echoServer.stop() - ]) + post: async () => { + if (echoServer) { + await echoServer.stop() + } + + await server.stop() } } } diff --git a/packages/ipfs-http-client/package.json b/packages/ipfs-http-client/package.json index d01416dfea..c30de4ac66 100644 --- a/packages/ipfs-http-client/package.json +++ b/packages/ipfs-http-client/package.json @@ -23,14 +23,16 @@ "url": "git+https://github.com/ipfs/js-ipfs.git" }, "scripts": { - "test": "cross-env ECHO_SERVER_PORT=37490 aegir test", - "test:node": "cross-env ECHO_SERVER_PORT=37491 aegir test -t node", - "test:browser": "cross-env ECHO_SERVER_PORT=37492 aegir test -t browser", - "test:webworker": "cross-env ECHO_SERVER_PORT=37493 aegir test -t webworker", - "test:electron-main": "cross-env ECHO_SERVER_PORT=37494 aegir test -t electron-main", - "test:electron-renderer": "cross-env ECHO_SERVER_PORT=37495 aegir test -t electron-renderer", - "test:chrome": "cross-env ECHO_SERVER_PORT=37496 aegir test -t browser -t webworker -- --browsers ChromeHeadless", - "test:firefox": "cross-env ECHO_SERVER_PORT=37497 aegir test -t browser -t webworker -- --browsers FirefoxHeadless", + "test": "aegir test", + "test:node": "aegir test -t node", + "test:browser": "aegir test -t browser", + "test:webworker": "aegir test -t webworker", + "test:electron-main": "aegir test -t electron-main", + "test:electron-renderer": "aegir test -t electron-renderer", + "test:chrome": "aegir test -t browser -t webworker -- --browsers ChromeHeadless", + "test:firefox": "aegir test -t browser -t webworker -- --browsers FirefoxHeadless", + "test:interface:node:http": "cross-env ECHO_SERVER_PORT=37490 aegir test -t node -f test/interface.js", + "test:interface:browser:http": "cross-env ECHO_SERVER_PORT=37491 aegir test -t browser -f test/interface.js", "lint": "aegir lint", "build": "aegir build", "coverage": "npx nyc -r html npm run test:node -- --bail", diff --git a/packages/ipfs-http-client/test/interface.spec.js b/packages/ipfs-http-client/test/interface.js similarity index 100% rename from packages/ipfs-http-client/test/interface.spec.js rename to packages/ipfs-http-client/test/interface.js diff --git a/packages/ipfs/.aegir.js b/packages/ipfs/.aegir.js index 27ec0be6ac..ea5efdf67f 100644 --- a/packages/ipfs/.aegir.js +++ b/packages/ipfs/.aegir.js @@ -41,23 +41,31 @@ module.exports = { node: { pre: async () => { preloadNode = MockPreloadNode.createNode() - echoServer = EchoServer.createServer() + await preloadNode.start() - await preloadNode.start(), - await echoServer.start() + if (process.env.ECHO_SERVER_PORT) { + echoServer = EchoServer.createServer() + await echoServer.start() + } }, post: async () => { - await preloadNode.stop(), - await echoServer.stop() + await preloadNode.stop() + + if (echoServer) { + await echoServer.stop() + } } }, browser: { pre: async () => { preloadNode = MockPreloadNode.createNode() - echoServer = EchoServer.createServer() - await preloadNode.start() - await echoServer.start() + + if (process.env.ECHO_SERVER_PORT) { + echoServer = EchoServer.createServer() + await echoServer.start() + } + sigServerA = await webRTCStarSigServer.start({ host: '127.0.0.1', port: 14579, @@ -92,11 +100,11 @@ module.exports = { }).start() }, post: async () => { - await ipfsdServer.stop() - await preloadNode.stop() - await echoServer.stop() - await sigServerA.stop() - await sigServerB.stop() + await Promise.all( + [ipfsdServer, preloadNode, echoServer, sigServerA, sigServerB] + .filter(Boolean) + .map(server => server.stop()) + ) } } } diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 20206468c6..e1fcb254b6 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -40,21 +40,22 @@ "scripts": { "lint": "aegir lint", "build": "aegir build", - "test": "cross-env ECHO_SERVER_PORT=37480 aegir test", - "test:node": "cross-env ECHO_SERVER_PORT=37481 aegir test -t node", - "test:browser": "cross-env ECHO_SERVER_PORT=37482 aegir test -t browser", - "test:browser:http": "cross-env ECHO_SERVER_PORT=37489 aegir test -t browser -f test/http-api/index.js", - "test:browser:interface:http": "cross-env ECHO_SERVER_PORT=37489 aegir test -t browser -f test/http-api/interface.js", - "test:webworker": "cross-env ECHO_SERVER_PORT=37483 aegir test -t webworker", - "test:electron": "cross-env ECHO_SERVER_PORT=37484 aegir test -t electron-main -t electron-renderer", - "test:electron-main": "cross-env ECHO_SERVER_PORT=37485 aegir test -t electron-main", - "test:electron-renderer": "cross-env ECHO_SERVER_PORT=37486 aegir test -t electron-renderer", - "test:cli": "cross-env ECHO_SERVER_PORT=37487 aegir test -t node -f test/cli/index.js", - "test:node:core": "cross-env ECHO_SERVER_PORT=37488 aegir test -t node -f test/core/**/*.js", - "test:node:http": "cross-env ECHO_SERVER_PORT=37489 aegir test -t node -f test/http-api/index.js", - "test:node:gateway": "cross-env ECHO_SERVER_PORT=37490 aegir test -t node -f test/gateway/index.js", - "test:node:interface": "cross-env ECHO_SERVER_PORT=37491 aegir test -t node -f test/core/interface.spec.js", - "test:bootstrapers": "cross-env ECHO_SERVER_PORT=37492 IPFS_TEST=bootstrapers aegir test -t browser -f test/bootstrapers.js", + "test": "aegir test", + "test:node": "aegir test -t node", + "test:browser": "aegir test -t browser", + "test:webworker": "aegir test -t webworker", + "test:electron": "aegir test -t electron-main -t electron-renderer", + "test:electron-main": "aegir test -t electron-main", + "test:electron-renderer": "aegir test -t electron-renderer", + "test:cli": "aegir test -t node -f test/cli/index.js", + "test:core": "aegir test -t node -f test/core/**/*.js", + "test:http": "aegir test -t node -f test/http-api/index.js", + "test:gateway": "aegir test -t node -f test/gateway/index.js", + "test:interface:node": "cross-env ECHO_SERVER_PORT=37491 aegir test -t node -f test/interface-to-core.js", + "test:interface:node:http": "cross-env ECHO_SERVER_PORT=37491 aegir test -t node -f test/interface-over-http.js", + "test:interface:browser": "cross-env ECHO_SERVER_PORT=37491 aegir test -t browser -f test/interface-to-core.js", + "test:interface:browser:http": "cross-env ECHO_SERVER_PORT=37489 aegir test -t browser -f test/interface-over-http.js", + "test:bootstrapers": "IPFS_TEST=bootstrapers aegir test -t browser -f test/bootstrapers.js", "test:interop": "cross-env IPFS_JS_EXEC=$PWD/src/cli/bin.js IPFS_JS_MODULE=$PWD IPFS_REUSEPORT=false ipfs-interop", "test:interop:node": "cross-env IPFS_JS_EXEC=$PWD/src/cli/bin.js IPFS_JS_MODULE=$PWD IPFS_REUSEPORT=false ipfs-interop -- -t node", "test:interop:browser": "cross-env IPFS_JS_EXEC=$PWD/src/cli/bin.js IPFS_JS_MODULE=$PWD IPFS_REUSEPORT=false ipfs-interop -- -t browser", @@ -198,7 +199,8 @@ "sinon": "^9.0.1", "stream-to-promise": "^2.2.0", "string-argv": "^0.3.1", - "temp-write": "^4.0.0" + "temp-write": "^4.0.0", + "wrtc": "^0.4.4" }, "optionalDependencies": { "prom-client": "^12.0.0", diff --git a/packages/ipfs/src/cli/daemon.js b/packages/ipfs/src/cli/daemon.js index 71654a6e93..3f3dc619d1 100644 --- a/packages/ipfs/src/cli/daemon.js +++ b/packages/ipfs/src/cli/daemon.js @@ -77,7 +77,7 @@ function getLibp2p ({ libp2pOptions, options, config, peerInfo }) { if (wrtc || electronWebRTC) { log(`Using ${wrtc ? 'wrtc' : 'electron-webrtc'} for webrtc support`) - set(libp2pOptions, 'config.transport.webRTCStar.wrtc', wrtc || electronWebRTC) + set(libp2pOptions, 'config.transport.WebRTCStar.wrtc', wrtc || electronWebRTC) libp2pOptions.modules.transport.push(WebRTCStar) } diff --git a/packages/ipfs/test/http-api/index.js b/packages/ipfs/test/http-api/index.js index 8ee36db00d..a9380880a5 100644 --- a/packages/ipfs/test/http-api/index.js +++ b/packages/ipfs/test/http-api/index.js @@ -5,5 +5,3 @@ const { isNode } = require('ipfs-utils/src/env') if (isNode) { require('./routes') } - -require('./interface') diff --git a/packages/ipfs/test/http-api/interface.js b/packages/ipfs/test/interface-over-http.js similarity index 85% rename from packages/ipfs/test/http-api/interface.js rename to packages/ipfs/test/interface-over-http.js index 0905467848..d46503e5f3 100644 --- a/packages/ipfs/test/http-api/interface.js +++ b/packages/ipfs/test/interface-over-http.js @@ -2,8 +2,8 @@ 'use strict' const tests = require('interface-ipfs-core') -const factory = require('../utils/factory') -const { isNode } = require('ipfs-utils/src/env') +const factory = require('./utils/factory') +const { isNode, isBrowser } = require('ipfs-utils/src/env') /** @typedef { import("ipfsd-ctl").ControllerOptions } ControllerOptions */ describe('interface-ipfs-core over ipfs-http-client tests', function () { @@ -60,7 +60,18 @@ describe('interface-ipfs-core over ipfs-http-client tests', function () { sharding: true } } - })) + }), { + skip: isBrowser ? [{ + name: 'should make directory and specify mtime as hrtime', + reason: 'Not designed to run in the browser' + }, { + name: 'should write file and specify mtime as hrtime', + reason: 'Not designed to run in the browser' + }, { + name: 'should set mtime as hrtime', + reason: 'Not designed to run in the browser' + }] : [] + }) tests.key(commonFactory) diff --git a/packages/ipfs/test/core/interface.spec.js b/packages/ipfs/test/interface-to-core.js similarity index 95% rename from packages/ipfs/test/core/interface.spec.js rename to packages/ipfs/test/interface-to-core.js index 6abef6e66f..64b35b3619 100644 --- a/packages/ipfs/test/core/interface.spec.js +++ b/packages/ipfs/test/interface-to-core.js @@ -3,12 +3,14 @@ const tests = require('interface-ipfs-core') const { isNode } = require('ipfs-utils/src/env') -const factory = require('../utils/factory') +const factory = require('./utils/factory') /** @typedef { import("ipfsd-ctl").ControllerOptions } ControllerOptions */ describe('interface-ipfs-core tests', function () { - const commonFactory = factory() + const commonFactory = factory({ + type: 'proc' + }) tests.root(commonFactory, { skip: isNode ? null : [{