mirror of
https://github.com/cypress-io/cypress.git
synced 2026-02-21 06:30:49 -06:00
* fix broken menu specs * extract browserify code and create preprocessor abstraction * server: remove unused code * server: implement logic for importing preprocessor * server: add eslintrc and ignore test fixtures * server: implement plugins API * server: add node_cache module to manage clearing a package and its dependencies * server: clear plugins file from cache to re-require it * server: set pluginsFile to absolute path * server: add debug logging to plugins * server: watch pluginsFile * server: throw the right error when requiring plugins file * server: organize config folders and keys visually * server: scaffold plugins file * server: require plugins file via nodeCache.require * server: update browserify preprocessor name and point to github for now * server: remove redundant integration tests * server: always scaffold plugins file, except when falsey * server: add plugins file test to scaffold spec * server: always provide util.fileUpdated to preprocessor * server: update browserify-preprocessor dep * server: fix integration tests * server: remove redundant logic * server: catch errors thrown synchronously by plugins function * server: reduce chances of flakyness in async test * driver: fix broken spec * server: don’t check for dirname of supportFile and pluginFile when we know they’re already a directory * driver: there is no dist * server: update default options sent to browserify preprocessor * server: send config into browserify instead of options * server: add test around default preprocessor * server: update browserify preprocessor * server: refactor events spec to better handle multiple calls to handleEvent * server: add tests around project:open events * server/desktop-gui: handle errors when plugins file changes * server: fix events spec * server: allow any file types to be spec files * server: validate config.pluginsFile * server: remove link to error doc * server: improve plugins error message * server: simplify example plugins file * server: on:spec:file:preprocessor -> file:preprocessor * server: wrap plugins in a child process * server: rename specsGlob to testFiles * server: bump browserify-preprocessor ‘version’ * server: fix references left by merge * server: fix incorrect function names * server: fix plugin error serialization * server: display error if plugins process has an uncaught exception or unhandled rejection * server: reset domain on reset * server: exit early on plugin error headlessly * server: add e2e tests for plugins/preprocessors * server: remove obselete node cache file * server: fix integration tests * server: log plugins error before exiting * server: use npm version of browserify preprocessor * server: extract string-splitting function * socket: use path.join in spec * server: eslint ignore scaffold files * server: fix scaffolded plugins file links, add snapshot test * server: if app_spec runs, cause a failure [skip ci] - tested locally
43 lines
1.2 KiB
CoffeeScript
43 lines
1.2 KiB
CoffeeScript
log = require('debug')('cypress:server:controllers:spec')
|
|
errors = require("../errors")
|
|
preprocessor = require("../plugins/preprocessor")
|
|
|
|
module.exports = {
|
|
handle: (spec, req, res, config, next, project) ->
|
|
log("request for", spec)
|
|
|
|
res.set({
|
|
"Cache-Control": "no-cache, no-store, must-revalidate"
|
|
"Pragma": "no-cache"
|
|
"Expires": "0"
|
|
})
|
|
|
|
res.type("js")
|
|
|
|
preprocessor
|
|
.getFile(spec, config)
|
|
.then (filePath) ->
|
|
log("send #{filePath}")
|
|
res.sendFile(filePath)
|
|
.catch (err) ->
|
|
if config.isTextTerminal
|
|
## bluebird made a change in 3.4.7 where they handle
|
|
## SyntaxErrors differently here
|
|
## https://github.com/petkaantonov/bluebird/pull/1295
|
|
##
|
|
## their new behavior messes up how we show these errors
|
|
## so we must backup the original stack and replace it here
|
|
if os = err.originalStack
|
|
err.stack = os
|
|
|
|
filePath = err.filePath ? spec
|
|
|
|
err = errors.get("BUNDLE_ERROR", filePath, preprocessor.errorMessage(err))
|
|
|
|
errors.log(err)
|
|
|
|
project.emit("exitEarlyWithErr", err.message)
|
|
else
|
|
res.send(preprocessor.clientSideError(err))
|
|
}
|