current commit
261008.16 · test: update milo paths in bundle-parser test (#5979)
'use strict'

const { test } = require('node:test')
const { execFile } = require('node:child_process')
const { join } = require('node:path')
const { promisify } = require('node:util')
const { buildSync } = require('esbuild')

const execFileAsync = promisify(execFile)
const buildOptions = {
  absWorkingDir: join(__dirname, '../..'),
  entryPoints: ['index-fetch.js'],
  bundle: true,
  platform: 'node',
  outfile: 'undici-fetch.js',
  keepNames: true,
  metafile: true,
  write: false
}

test('Node.js core bundle excludes Milo', (t) => {
  const { metafile } = buildSync({ ...buildOptions, define: { esbuildDetection: '1' } })
  const inputs = Object.keys(metafile.inputs)

  t.assert.ok(inputs.includes('lib/llhttp/llhttp-wasm.js'))
  t.assert.ok(inputs.includes('lib/llhttp/llhttp_simd-wasm.js'))
  t.assert.ok(!inputs.includes('lib/dispatcher/parser-h1.js'))
  t.assert.ok(!inputs.some(path => path.startsWith('lib/milo/')))
})

test('ordinary esbuild bundles retain experimental Milo', (t) => {
  const { metafile } = buildSync(buildOptions)
  const inputs = Object.keys(metafile.inputs)

  t.assert.ok(inputs.includes('lib/dispatcher/parser-h1.js'))
  t.assert.ok(inputs.includes('lib/milo/simd.js'))
  t.assert.ok(inputs.includes('lib/milo/no-simd.js'))
})

for (const simd of ['0', '1']) {
  for (const milo of ['false', '1', 'true']) {
    test(`Node.js core uses only llhttp with UNDICI_NO_WASM_SIMD=${simd} and UNDICI_USE_MILO=${milo}`, async (t) => {
      const { stdout, stderr } = await execFileAsync(process.execPath, [join(__dirname, '../fixtures/core-bundle-parser.js')], {
        env: {
          ...process.env,
          UNDICI_NO_WASM_SIMD: simd,
          UNDICI_USE_MILO: milo
        },
        timeout: 30000
      })

      t.assert.strictEqual(stdout, '')
      t.assert.strictEqual(stderr, '')
    })
  }
}