From 8aadd5347a615c4021d41e27b52e8ef7ca1f3470 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Wed, 12 Jun 2024 19:51:02 +0200 Subject: [PATCH] refactor: IPFS_NS_MAP from gateway-conformance v6 (#92) no need to generate env from json, a fixture in desired format is alreadt provided, and we no longer mix subdomains with dnslink tests, whcih also simplifies code --- .github/workflows/gateway-conformance.yml | 4 ++-- packages/gateway-conformance/src/conformance.spec.ts | 4 +++- packages/gateway-conformance/src/constants.ts | 2 +- packages/gateway-conformance/src/fixtures/kubo-mgmt.ts | 8 ++------ 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/gateway-conformance.yml b/.github/workflows/gateway-conformance.yml index 8d2f9fe4..7d1d6343 100644 --- a/.github/workflows/gateway-conformance.yml +++ b/.github/workflows/gateway-conformance.yml @@ -23,12 +23,12 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: 1.21.x + go-version: 1.22.x # 3. Download the gateway-conformance fixtures using ipfs/gateway-conformance action # This will prevent us from needing to install `docker` on the github runner - name: Download gateway-conformance fixtures - uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.5.1 + uses: ipfs/gateway-conformance/.github/actions/extract-fixtures@v0.6 # working-directory: ./packages/gateway-conformance with: output: ./packages/gateway-conformance/dist/src/fixtures/data/gateway-conformance-fixtures diff --git a/packages/gateway-conformance/src/conformance.spec.ts b/packages/gateway-conformance/src/conformance.spec.ts index c59d0db8..62039853 100644 --- a/packages/gateway-conformance/src/conformance.spec.ts +++ b/packages/gateway-conformance/src/conformance.spec.ts @@ -6,6 +6,7 @@ import { prefixLogger } from '@libp2p/logger' import { expect } from 'aegir/chai' import { execa } from 'execa' import { Agent, setGlobalDispatcher } from 'undici' +import { GWC_IMAGE } from './constants.js' const logger = prefixLogger('gateway-conformance') @@ -316,7 +317,8 @@ describe('@helia/verified-fetch - gateway conformance', function () { log('Using custom gateway-conformance binary at %s', binaryPath) return } - const { stdout, stderr } = await execa('go', ['install', 'github.com/ipfs/gateway-conformance/cmd/gateway-conformance@latest'], { reject: true }) + const gwcVersion = GWC_IMAGE.split(':').pop() + const { stdout, stderr } = await execa('go', ['install', `github.com/ipfs/gateway-conformance/cmd/gateway-conformance@${gwcVersion}`], { reject: true }) log(stdout) log.error(stderr) }) diff --git a/packages/gateway-conformance/src/constants.ts b/packages/gateway-conformance/src/constants.ts index 2ebdd154..7bceafcb 100644 --- a/packages/gateway-conformance/src/constants.ts +++ b/packages/gateway-conformance/src/constants.ts @@ -1 +1 @@ -export const GWC_IMAGE = process.env.GWC_IMAGE ?? 'ghcr.io/ipfs/gateway-conformance:v0.5.1' +export const GWC_IMAGE = process.env.GWC_IMAGE ?? 'ghcr.io/ipfs/gateway-conformance:v0.6.0' diff --git a/packages/gateway-conformance/src/fixtures/kubo-mgmt.ts b/packages/gateway-conformance/src/fixtures/kubo-mgmt.ts index 8a88c6bc..d1dd81aa 100644 --- a/packages/gateway-conformance/src/fixtures/kubo-mgmt.ts +++ b/packages/gateway-conformance/src/fixtures/kubo-mgmt.ts @@ -53,7 +53,7 @@ function getExecaOptions ({ cwd, ipfsNsMap, kuboRepoDir }: { cwd?: string, ipfsN async function downloadFixtures (force = false): Promise { if (!force) { // if the fixtures are already downloaded, we don't need to download them again - const allFixtures = await fg.glob([`${GWC_FIXTURES_PATH}/**/*.car`, `${GWC_FIXTURES_PATH}/**/*.ipns-record`, `${GWC_FIXTURES_PATH}/dnslinks.json`]) + const allFixtures = await fg.glob([`${GWC_FIXTURES_PATH}/**/*.car`, `${GWC_FIXTURES_PATH}/**/*.ipns-record`, `${GWC_FIXTURES_PATH}/dnslinks.IPFS_NS_MAP`]) if (allFixtures.length > 0) { log('Fixtures already downloaded') return @@ -106,11 +106,7 @@ export async function loadFixtures (kuboRepoDir: string): Promise { await datastore.put(dhtKey, dhtRecord.serialize()) } - const json = await readFile(`${GWC_FIXTURES_PATH}/dnslinks.json`, 'utf-8') - const { subdomains, domains } = JSON.parse(json) - const subdomainDnsLinks = Object.entries(subdomains).map(([key, value]) => `${key}.localhost%3A${3441}:${value}`).join(',') - const domainDnsLinks = Object.entries(domains).map(([key, value]) => `${key}:${value}`).join(',') - const ipfsNsMap = `${domainDnsLinks},${subdomainDnsLinks}` + const ipfsNsMap = await readFile(`${GWC_FIXTURES_PATH}/dnslinks.IPFS_NS_MAP`, 'utf-8') return ipfsNsMap }