From 256e35b8c2cffa6b9f8add66bb5ce96fa8c576da Mon Sep 17 00:00:00 2001 From: achingbrain Date: Tue, 16 Jan 2024 16:48:47 +0100 Subject: [PATCH] feat: export binary from @helia/interop To prevent things like transient deps breaking Kubo interop tests, export a bin to allow installing the interop tests from npm and running them in an easy-to-digest way. --- packages/interop/.aegir.js | 1 + packages/interop/README.md | 11 +++++++++++ packages/interop/package.json | 10 +++++++--- packages/interop/src/bin.ts | 18 ++++++++++++++++++ packages/interop/{test => src}/car.spec.ts | 0 .../interop/{test => src}/dag-cbor.spec.ts | 0 .../interop/{test => src}/dag-json.spec.ts | 0 .../interop/{test => src}/fixtures/connect.ts | 0 .../fixtures/create-helia.browser.ts | 0 .../{test => src}/fixtures/create-helia.ts | 0 .../fixtures/create-kubo.browser.ts | 0 .../{test => src}/fixtures/create-kubo.ts | 0 .../{test => src}/fixtures/create-peer-ids.ts | 0 .../{test => src}/fixtures/key-types.ts | 0 .../{test => src}/fixtures/memory-car.ts | 0 .../interop/{test => src}/fixtures/wait-for.ts | 0 .../{test => src}/helia-blockstore.spec.ts | 0 .../interop/{test => src}/helia-hashes.spec.ts | 0 .../interop/{test => src}/helia-pins.spec.ts | 0 packages/interop/src/index.ts | 13 +++++++++++++ .../interop/{test => src}/ipns-libp2p.spec.ts | 0 .../interop/{test => src}/ipns-pubsub.spec.ts | 0 packages/interop/{test => src}/json.spec.ts | 0 packages/interop/{test => src}/mfs.spec.ts | 0 packages/interop/{test => src}/strings.spec.ts | 0 .../{test => src}/unixfs-bitswap.spec.ts | 0 .../interop/{test => src}/unixfs-files.spec.ts | 0 packages/interop/tsconfig.json | 3 --- 28 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 packages/interop/src/bin.ts rename packages/interop/{test => src}/car.spec.ts (100%) rename packages/interop/{test => src}/dag-cbor.spec.ts (100%) rename packages/interop/{test => src}/dag-json.spec.ts (100%) rename packages/interop/{test => src}/fixtures/connect.ts (100%) rename packages/interop/{test => src}/fixtures/create-helia.browser.ts (100%) rename packages/interop/{test => src}/fixtures/create-helia.ts (100%) rename packages/interop/{test => src}/fixtures/create-kubo.browser.ts (100%) rename packages/interop/{test => src}/fixtures/create-kubo.ts (100%) rename packages/interop/{test => src}/fixtures/create-peer-ids.ts (100%) rename packages/interop/{test => src}/fixtures/key-types.ts (100%) rename packages/interop/{test => src}/fixtures/memory-car.ts (100%) rename packages/interop/{test => src}/fixtures/wait-for.ts (100%) rename packages/interop/{test => src}/helia-blockstore.spec.ts (100%) rename packages/interop/{test => src}/helia-hashes.spec.ts (100%) rename packages/interop/{test => src}/helia-pins.spec.ts (100%) rename packages/interop/{test => src}/ipns-libp2p.spec.ts (100%) rename packages/interop/{test => src}/ipns-pubsub.spec.ts (100%) rename packages/interop/{test => src}/json.spec.ts (100%) rename packages/interop/{test => src}/mfs.spec.ts (100%) rename packages/interop/{test => src}/strings.spec.ts (100%) rename packages/interop/{test => src}/unixfs-bitswap.spec.ts (100%) rename packages/interop/{test => src}/unixfs-files.spec.ts (100%) diff --git a/packages/interop/.aegir.js b/packages/interop/.aegir.js index 7f567dc8..226c2746 100644 --- a/packages/interop/.aegir.js +++ b/packages/interop/.aegir.js @@ -5,6 +5,7 @@ import * as kuboRpcClient from 'kubo-rpc-client' /** @type {import('aegir').PartialOptions} */ export default { test: { + files: './dist/src/*.spec.js', before: async (options) => { if (options.runner !== 'node') { const ipfsdPort = await getPort() diff --git a/packages/interop/README.md b/packages/interop/README.md index 11e98ba0..43880993 100644 --- a/packages/interop/README.md +++ b/packages/interop/README.md @@ -11,6 +11,17 @@ > Interop tests for Helia +# About + +Runs interop tests between Helia and Kubo. + +## Example - Testing a new Kubo release + +```console +$ npm i @helia/interop +$ KUBO_BINARY=/path/to/kubo helia-interop +``` + # Install ```console diff --git a/packages/interop/package.json b/packages/interop/package.json index f6f16880..699a8248 100644 --- a/packages/interop/package.json +++ b/packages/interop/package.json @@ -18,6 +18,9 @@ "keywords": [ "IPFS" ], + "bin": { + "helia-interop": "./dist/src/bin.js" + }, "type": "module", "types": "./dist/src/index.d.ts", "files": [ @@ -52,7 +55,7 @@ "test:node": "aegir test -t node --cov", "test:electron-main": "aegir test -t electron-main" }, - "devDependencies": { + "dependencies": { "@helia/block-brokers": "^1.0.0", "@helia/car": "^2.0.1", "@helia/dag-cbor": "^2.0.1", @@ -88,8 +91,9 @@ "wherearewe": "^2.0.1" }, "browser": { - "./dist/test/fixtures/create-helia.js": "./dist/test/fixtures/create-helia.browser.js", - "./dist/test/fixtures/create-kubo.js": "./dist/test/fixtures/create-kubo.browser.js", + "./dist/src/fixtures/create-helia.js": "./dist/src/fixtures/create-helia.browser.js", + "./dist/src/fixtures/create-kubo.js": "./dist/src/fixtures/create-kubo.browser.js", + "./dist/src/bin.js": "./dist/src/index.js", "kubo": false } } diff --git a/packages/interop/src/bin.ts b/packages/interop/src/bin.ts new file mode 100644 index 00000000..d03f5374 --- /dev/null +++ b/packages/interop/src/bin.ts @@ -0,0 +1,18 @@ +#! /usr/bin/env node +/* eslint-disable no-console */ + +import { spawn } from 'node:child_process' + +const test = spawn('npx', ['aegir', 'test']) + +test.stdout.on('data', (data) => { + process.stdout.write(data) +}) + +test.stderr.on('data', (data) => { + process.stderr.write(data) +}) + +test.on('close', (code) => { + process.exit(code ?? 0) +}) diff --git a/packages/interop/test/car.spec.ts b/packages/interop/src/car.spec.ts similarity index 100% rename from packages/interop/test/car.spec.ts rename to packages/interop/src/car.spec.ts diff --git a/packages/interop/test/dag-cbor.spec.ts b/packages/interop/src/dag-cbor.spec.ts similarity index 100% rename from packages/interop/test/dag-cbor.spec.ts rename to packages/interop/src/dag-cbor.spec.ts diff --git a/packages/interop/test/dag-json.spec.ts b/packages/interop/src/dag-json.spec.ts similarity index 100% rename from packages/interop/test/dag-json.spec.ts rename to packages/interop/src/dag-json.spec.ts diff --git a/packages/interop/test/fixtures/connect.ts b/packages/interop/src/fixtures/connect.ts similarity index 100% rename from packages/interop/test/fixtures/connect.ts rename to packages/interop/src/fixtures/connect.ts diff --git a/packages/interop/test/fixtures/create-helia.browser.ts b/packages/interop/src/fixtures/create-helia.browser.ts similarity index 100% rename from packages/interop/test/fixtures/create-helia.browser.ts rename to packages/interop/src/fixtures/create-helia.browser.ts diff --git a/packages/interop/test/fixtures/create-helia.ts b/packages/interop/src/fixtures/create-helia.ts similarity index 100% rename from packages/interop/test/fixtures/create-helia.ts rename to packages/interop/src/fixtures/create-helia.ts diff --git a/packages/interop/test/fixtures/create-kubo.browser.ts b/packages/interop/src/fixtures/create-kubo.browser.ts similarity index 100% rename from packages/interop/test/fixtures/create-kubo.browser.ts rename to packages/interop/src/fixtures/create-kubo.browser.ts diff --git a/packages/interop/test/fixtures/create-kubo.ts b/packages/interop/src/fixtures/create-kubo.ts similarity index 100% rename from packages/interop/test/fixtures/create-kubo.ts rename to packages/interop/src/fixtures/create-kubo.ts diff --git a/packages/interop/test/fixtures/create-peer-ids.ts b/packages/interop/src/fixtures/create-peer-ids.ts similarity index 100% rename from packages/interop/test/fixtures/create-peer-ids.ts rename to packages/interop/src/fixtures/create-peer-ids.ts diff --git a/packages/interop/test/fixtures/key-types.ts b/packages/interop/src/fixtures/key-types.ts similarity index 100% rename from packages/interop/test/fixtures/key-types.ts rename to packages/interop/src/fixtures/key-types.ts diff --git a/packages/interop/test/fixtures/memory-car.ts b/packages/interop/src/fixtures/memory-car.ts similarity index 100% rename from packages/interop/test/fixtures/memory-car.ts rename to packages/interop/src/fixtures/memory-car.ts diff --git a/packages/interop/test/fixtures/wait-for.ts b/packages/interop/src/fixtures/wait-for.ts similarity index 100% rename from packages/interop/test/fixtures/wait-for.ts rename to packages/interop/src/fixtures/wait-for.ts diff --git a/packages/interop/test/helia-blockstore.spec.ts b/packages/interop/src/helia-blockstore.spec.ts similarity index 100% rename from packages/interop/test/helia-blockstore.spec.ts rename to packages/interop/src/helia-blockstore.spec.ts diff --git a/packages/interop/test/helia-hashes.spec.ts b/packages/interop/src/helia-hashes.spec.ts similarity index 100% rename from packages/interop/test/helia-hashes.spec.ts rename to packages/interop/src/helia-hashes.spec.ts diff --git a/packages/interop/test/helia-pins.spec.ts b/packages/interop/src/helia-pins.spec.ts similarity index 100% rename from packages/interop/test/helia-pins.spec.ts rename to packages/interop/src/helia-pins.spec.ts diff --git a/packages/interop/src/index.ts b/packages/interop/src/index.ts index 336ce12b..6d6d1a43 100644 --- a/packages/interop/src/index.ts +++ b/packages/interop/src/index.ts @@ -1 +1,14 @@ +/** + * @packageDocumentation + * + * Runs interop tests between Helia and Kubo. + * + * @example Testing a new Kubo release + * + * ```console + * $ npm i @helia/interop + * $ KUBO_BINARY=/path/to/kubo helia-interop + * ``` + */ + export {} diff --git a/packages/interop/test/ipns-libp2p.spec.ts b/packages/interop/src/ipns-libp2p.spec.ts similarity index 100% rename from packages/interop/test/ipns-libp2p.spec.ts rename to packages/interop/src/ipns-libp2p.spec.ts diff --git a/packages/interop/test/ipns-pubsub.spec.ts b/packages/interop/src/ipns-pubsub.spec.ts similarity index 100% rename from packages/interop/test/ipns-pubsub.spec.ts rename to packages/interop/src/ipns-pubsub.spec.ts diff --git a/packages/interop/test/json.spec.ts b/packages/interop/src/json.spec.ts similarity index 100% rename from packages/interop/test/json.spec.ts rename to packages/interop/src/json.spec.ts diff --git a/packages/interop/test/mfs.spec.ts b/packages/interop/src/mfs.spec.ts similarity index 100% rename from packages/interop/test/mfs.spec.ts rename to packages/interop/src/mfs.spec.ts diff --git a/packages/interop/test/strings.spec.ts b/packages/interop/src/strings.spec.ts similarity index 100% rename from packages/interop/test/strings.spec.ts rename to packages/interop/src/strings.spec.ts diff --git a/packages/interop/test/unixfs-bitswap.spec.ts b/packages/interop/src/unixfs-bitswap.spec.ts similarity index 100% rename from packages/interop/test/unixfs-bitswap.spec.ts rename to packages/interop/src/unixfs-bitswap.spec.ts diff --git a/packages/interop/test/unixfs-files.spec.ts b/packages/interop/src/unixfs-files.spec.ts similarity index 100% rename from packages/interop/test/unixfs-files.spec.ts rename to packages/interop/src/unixfs-files.spec.ts diff --git a/packages/interop/tsconfig.json b/packages/interop/tsconfig.json index a90aa280..d12ad905 100644 --- a/packages/interop/tsconfig.json +++ b/packages/interop/tsconfig.json @@ -23,9 +23,6 @@ { "path": "../helia" }, - { - "path": "../interface" - }, { "path": "../ipns" },