mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-26 17:09:11 -06:00
Always pass NODE_OPTIONS with max-http-header-size (#5452)
* cli: set NODE_OPTIONS=--max-http-header-size=1024*1024 on spawn * electron: remove redundant max-http-header-size * server: add useCli option to make e2e tests go thru cli * server: add test for XHR with body > 100kb via CLI * clean up conditional * cli: don't pass --max-http-header-size in dev w node < 11.10 * add original_node_options to restore o.g. user node_options * force no color
This commit is contained in:
committed by
Jennifer Shehane
parent
3a747abf5d
commit
978d97ee6d
18
cli/__snapshots__/spawn_spec.js
Normal file
18
cli/__snapshots__/spawn_spec.js
Normal file
@@ -0,0 +1,18 @@
|
||||
exports['lib/exec/spawn .start forces colors and streams when supported 1'] = {
|
||||
"FORCE_COLOR": "1",
|
||||
"DEBUG_COLORS": "1",
|
||||
"MOCHA_COLORS": "1",
|
||||
"FORCE_STDIN_TTY": "1",
|
||||
"FORCE_STDOUT_TTY": "1",
|
||||
"FORCE_STDERR_TTY": "1",
|
||||
"NODE_OPTIONS": "--max-http-header-size=1048576"
|
||||
}
|
||||
|
||||
exports['lib/exec/spawn .start does not force colors and streams when not supported 1'] = {
|
||||
"FORCE_COLOR": "0",
|
||||
"DEBUG_COLORS": "0",
|
||||
"FORCE_STDIN_TTY": "0",
|
||||
"FORCE_STDOUT_TTY": "0",
|
||||
"FORCE_STDERR_TTY": "0",
|
||||
"NODE_OPTIONS": "--max-http-header-size=1048576"
|
||||
}
|
||||
@@ -102,7 +102,7 @@ module.exports = {
|
||||
}
|
||||
|
||||
const { onStderrData, electronLogging } = overrides
|
||||
const envOverrides = util.getEnvOverrides()
|
||||
const envOverrides = util.getEnvOverrides(options)
|
||||
const electronArgs = _.clone(args)
|
||||
const node11WindowsFix = isPlatform('win32')
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ const util = {
|
||||
return isCi
|
||||
},
|
||||
|
||||
getEnvOverrides () {
|
||||
getEnvOverrides (options = {}) {
|
||||
return _
|
||||
.chain({})
|
||||
.extend(util.getEnvColors())
|
||||
@@ -193,9 +193,35 @@ const util = {
|
||||
.mapValues((value) => { // stringify to 1 or 0
|
||||
return value ? '1' : '0'
|
||||
})
|
||||
.extend(util.getNodeOptions(options))
|
||||
.value()
|
||||
},
|
||||
|
||||
getNodeOptions (options, nodeVersion) {
|
||||
if (!nodeVersion) {
|
||||
nodeVersion = Number(process.versions.node.split('.')[0])
|
||||
}
|
||||
|
||||
if (options.dev && nodeVersion < 12) {
|
||||
// `node` is used when --dev is passed, so this won't work if Node is too old
|
||||
logger.warn('(dev-mode warning only) NODE_OPTIONS=--max-http-header-size could not be set. See https://github.com/cypress-io/cypress/pull/5452')
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// https://github.com/cypress-io/cypress/issues/5431
|
||||
const NODE_OPTIONS = `--max-http-header-size=${1024 * 1024}`
|
||||
|
||||
if (_.isString(process.env.NODE_OPTIONS)) {
|
||||
return {
|
||||
NODE_OPTIONS: `${NODE_OPTIONS} ${process.env.NODE_OPTIONS}`,
|
||||
ORIGINAL_NODE_OPTIONS: process.env.NODE_OPTIONS || '',
|
||||
}
|
||||
}
|
||||
|
||||
return { NODE_OPTIONS }
|
||||
},
|
||||
|
||||
getForceTty () {
|
||||
return {
|
||||
FORCE_STDIN_TTY: util.isTty(process.stdin.fd),
|
||||
|
||||
@@ -3,6 +3,7 @@ require('../../spec_helper')
|
||||
const _ = require('lodash')
|
||||
const cp = require('child_process')
|
||||
const os = require('os')
|
||||
const snapshot = require('snap-shot-it')
|
||||
const tty = require('tty')
|
||||
const path = require('path')
|
||||
const EE = require('events')
|
||||
@@ -287,14 +288,7 @@ describe('lib/exec/spawn', function () {
|
||||
|
||||
return spawn.start([], { env: {} })
|
||||
.then(() => {
|
||||
expect(cp.spawn.firstCall.args[2].env).to.deep.eq({
|
||||
FORCE_COLOR: '1',
|
||||
DEBUG_COLORS: '1',
|
||||
MOCHA_COLORS: '1',
|
||||
FORCE_STDERR_TTY: '1',
|
||||
FORCE_STDIN_TTY: '1',
|
||||
FORCE_STDOUT_TTY: '1',
|
||||
})
|
||||
snapshot(cp.spawn.firstCall.args[2].env)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -326,13 +320,7 @@ describe('lib/exec/spawn', function () {
|
||||
|
||||
return spawn.start([], { env: {} })
|
||||
.then(() => {
|
||||
expect(cp.spawn.firstCall.args[2].env).to.deep.eq({
|
||||
FORCE_COLOR: '0',
|
||||
DEBUG_COLORS: '0',
|
||||
FORCE_STDERR_TTY: '0',
|
||||
FORCE_STDIN_TTY: '0',
|
||||
FORCE_STDOUT_TTY: '0',
|
||||
})
|
||||
snapshot(cp.spawn.firstCall.args[2].env)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ require('../spec_helper')
|
||||
const os = require('os')
|
||||
const tty = require('tty')
|
||||
const snapshot = require('../support/snapshot')
|
||||
const mockedEnv = require('mocked-env')
|
||||
const supportsColor = require('supports-color')
|
||||
const proxyquire = require('proxyquire')
|
||||
const hasha = require('hasha')
|
||||
@@ -11,6 +12,9 @@ const la = require('lazy-ass')
|
||||
const util = require(`${lib}/util`)
|
||||
const logger = require(`${lib}/logger`)
|
||||
|
||||
// https://github.com/cypress-io/cypress/issues/5431
|
||||
const expectedNodeOptions = `--max-http-header-size=${1024 * 1024}`
|
||||
|
||||
describe('util', () => {
|
||||
beforeEach(() => {
|
||||
sinon.stub(process, 'exit')
|
||||
@@ -213,6 +217,7 @@ describe('util', () => {
|
||||
FORCE_COLOR: '1',
|
||||
DEBUG_COLORS: '1',
|
||||
MOCHA_COLORS: '1',
|
||||
NODE_OPTIONS: expectedNodeOptions,
|
||||
})
|
||||
|
||||
util.supportsColor.returns(false)
|
||||
@@ -224,10 +229,49 @@ describe('util', () => {
|
||||
FORCE_STDERR_TTY: '0',
|
||||
FORCE_COLOR: '0',
|
||||
DEBUG_COLORS: '0',
|
||||
NODE_OPTIONS: expectedNodeOptions,
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
context('.getNodeOptions', () => {
|
||||
let restoreEnv
|
||||
|
||||
afterEach(() => {
|
||||
if (restoreEnv) {
|
||||
restoreEnv()
|
||||
restoreEnv = null
|
||||
}
|
||||
})
|
||||
|
||||
it('adds required NODE_OPTIONS', () => {
|
||||
restoreEnv = mockedEnv({
|
||||
NODE_OPTIONS: undefined,
|
||||
})
|
||||
|
||||
expect(util.getNodeOptions({})).to.deep.eq({
|
||||
NODE_OPTIONS: expectedNodeOptions,
|
||||
})
|
||||
})
|
||||
|
||||
it('includes existing NODE_OPTIONS', () => {
|
||||
restoreEnv = mockedEnv({
|
||||
NODE_OPTIONS: '--foo --bar',
|
||||
})
|
||||
|
||||
expect(util.getNodeOptions({})).to.deep.eq({
|
||||
NODE_OPTIONS: `${expectedNodeOptions} --foo --bar`,
|
||||
ORIGINAL_NODE_OPTIONS: '--foo --bar',
|
||||
})
|
||||
})
|
||||
|
||||
it('does not return if dev is set and version < 12', () => {
|
||||
expect(util.getNodeOptions({
|
||||
dev: true,
|
||||
}, 11)).to.be.undefined
|
||||
})
|
||||
})
|
||||
|
||||
context('.getForceTty', () => {
|
||||
it('forces when each stream is a tty', () => {
|
||||
sinon.stub(tty, 'isatty')
|
||||
|
||||
Reference in New Issue
Block a user