Skip to content

Commit

Permalink
Make test and node prod setup the same
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Feb 16, 2024
1 parent b6c1c22 commit 3ee0a1f
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 62 deletions.
1 change: 0 additions & 1 deletion products/jbrowse-img/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
"@emotion/react": "^11.9.0",
"@jbrowse/plugin-linear-genome-view": "^2.10.1",
"@jbrowse/react-linear-genome-view": "^2.10.1",
"abortcontroller-polyfill": "^1.7.3",
"canvas": "^2.9.1",
"jsdom": "^24.0.0",
"mobx": "^6.6.0",
Expand Down
22 changes: 2 additions & 20 deletions products/jbrowse-img/src/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/* eslint-disable tsdoc/syntax */
/**
* @jest-environment node
*/
Expand All @@ -9,26 +8,9 @@
import { renderRegion } from './renderRegion'
import path from 'path'
import fs from 'fs'
import { JSDOM } from 'jsdom'
import { Image, createCanvas } from 'canvas'
import fetch, { Headers, Response, Request } from 'node-fetch'
import setupEnv from './setupEnv'

// @ts-expect-error
global.fetch = fetch
// @ts-expect-error
global.Headers = Headers
// @ts-expect-error
global.Response = Response
// @ts-expect-error
global.Request = Request

const { document } = new JSDOM(`...`).window
global.document = document

// @ts-expect-error
global.nodeImage = Image
// @ts-expect-error
global.nodeCreateCanvas = createCanvas
setupEnv()

function pa(s: string) {
return path.join(__dirname, s)
Expand Down
42 changes: 2 additions & 40 deletions products/jbrowse-img/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,51 +1,13 @@
import fs from 'fs'
import yargs from 'yargs'
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'
import fetch, { Headers, Response, Request } from 'node-fetch'
import { JSDOM } from 'jsdom'
import { Image, createCanvas } from 'canvas'

// locals
import { standardizeArgv, parseArgv } from './parseArgv'
import { renderRegion, Opts } from './renderRegion'
import { convert } from './util'
import setupEnv from './setupEnv'

// @ts-expect-error
global.nodeImage = Image
// @ts-expect-error
global.nodeCreateCanvas = createCanvas

const { document } = new JSDOM(`...`).window
global.document = document

// force use of node-fetch polyfill, even if node 18+ fetch is available.
// native node 18+ fetch currently gives errors related to unidici and
// Uint8Array:
//
//
// % node --version
// v18.12.1
//
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
// [
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
// '(Use `node --trace-warnings ...` to show where the warning was created)'
// ]
// [
// RangeError: offset is out of bounds
// at Uint8Array.set (<anonymous>)
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
// ]

// @ts-expect-error
global.fetch = fetch
// @ts-expect-error
global.Headers = Headers
// @ts-expect-error
global.Response = Response
// @ts-expect-error
global.Request = Request
setupEnv()

const err = console.error
console.error = (...p: unknown[]) => {
Expand Down
44 changes: 44 additions & 0 deletions products/jbrowse-img/src/setupEnv.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import fetch, { Headers, Response, Request } from 'node-fetch'
import { JSDOM } from 'jsdom'
import { Image, createCanvas } from 'canvas'

export default function setupEnv() {
// @ts-expect-error
global.nodeImage = Image
// @ts-expect-error
global.nodeCreateCanvas = createCanvas

const window = new JSDOM(`...`).window
global.document = window.document
// @ts-expect-error
global.window = window

// force use of node-fetch polyfill, even if node 18+ fetch is available.
// native node 18+ fetch currently gives errors related to unidici and
// Uint8Array:
//
//
// % node --version
// v18.12.1
//
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
// [
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
// '(Use `node --trace-warnings ...` to show where the warning was created)'
// ]
// [
// RangeError: offset is out of bounds
// at Uint8Array.set (<anonymous>)
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
// ]

// @ts-expect-error
global.fetch = fetch
// @ts-expect-error
global.Headers = Headers
// @ts-expect-error
global.Response = Response
// @ts-expect-error
global.Request = Request
}
2 changes: 1 addition & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6329,7 +6329,7 @@ abortable-promise-cache@^1.0.1, abortable-promise-cache@^1.2.0, abortable-promis
dependencies:
abortcontroller-polyfill "^1.2.9"

abortcontroller-polyfill@^1.2.9, abortcontroller-polyfill@^1.7.3:
abortcontroller-polyfill@^1.2.9:
version "1.7.5"
resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed"
integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==
Expand Down

0 comments on commit 3ee0a1f

Please sign in to comment.