Skip to content

Commit

Permalink
cache localization calls fix #1088
Browse files Browse the repository at this point in the history
  • Loading branch information
pofider committed Aug 30, 2023
1 parent 4019a4b commit aa519a9
Show file tree
Hide file tree
Showing 4 changed files with 744 additions and 662 deletions.
Original file line number Diff line number Diff line change
@@ -1,51 +1,62 @@

module.exports = (reporter, definition) => {
reporter.tests = reporter.tests || {}
reporter.tests.beforeRenderListeners = reporter.createListenerCollection()
reporter.tests.afterRenderListeners = reporter.createListenerCollection()
reporter.tests.validateRenderListeners = reporter.createListenerCollection()
reporter.tests.afterTemplatingEnginesExecutedListeners = reporter.createListenerCollection()

reporter.registerMainAction('test-beforeRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.beforeRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-afterRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.afterRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-validateRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.validateRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-afterTemplatingEnginesExecuted-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.afterTemplatingEnginesExecutedListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})

let beforeRenderEval
reporter.tests.beforeRenderEval = (fn) => {
beforeRenderEval = fn
}
reporter.registerMainAction('test-beforeRenderEval', async (data, req) => {
if (beforeRenderEval == null) {
return
}
return beforeRenderEval.toString()
})

let afterRenderEval
reporter.tests.afterRenderEval = (fn) => {
afterRenderEval = fn
}
reporter.registerMainAction('test-afterRenderEval', async (data, req) => {
if (afterRenderEval == null) {
return
}
return afterRenderEval.toString()
})
}

module.exports = (reporter, definition) => {
reporter.tests = reporter.tests || {}
reporter.tests.beforeRenderListeners = reporter.createListenerCollection()
reporter.tests.afterRenderListeners = reporter.createListenerCollection()
reporter.tests.validateRenderListeners = reporter.createListenerCollection()
reporter.tests.afterTemplatingEnginesExecutedListeners = reporter.createListenerCollection()

reporter.registerMainAction('test-beforeRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.beforeRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-afterRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.afterRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-validateRender-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.validateRenderListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})
reporter.registerMainAction('test-afterTemplatingEnginesExecuted-listeners', async (data, req) => {
data.req = reporter.Request(data.req)
await reporter.tests.afterTemplatingEnginesExecutedListeners.fire(data.req, data.res)
return { req: data.req, res: data.res }
})

let beforeRenderEval
reporter.tests.beforeRenderEval = (fn) => {
beforeRenderEval = fn
}
reporter.registerMainAction('test-beforeRenderEval', async (data, req) => {
if (beforeRenderEval == null) {
return
}
return beforeRenderEval.toString()
})

let afterRenderEval
reporter.tests.afterRenderEval = (fn) => {
afterRenderEval = fn
}
reporter.registerMainAction('test-afterRenderEval', async (data, req) => {
if (afterRenderEval == null) {
return
}
return afterRenderEval.toString()
})

let afterTemplatingEnginesExecutedEval
reporter.tests.afterTemplatingEnginesExecutedEval = (fn) => {
afterTemplatingEnginesExecutedEval = fn
}
reporter.registerMainAction('test-afterTemplatingEnginesExecutedEval', async (data, req) => {
if (afterTemplatingEnginesExecutedEval == null) {
return
}
return afterTemplatingEnginesExecutedEval.toString()
})
}
Original file line number Diff line number Diff line change
@@ -1,74 +1,81 @@
const extend = require('node.extend.without.arrays')
const vm = require('vm')
const Module = require('module')
const path = require('path')
const process = require('process')

module.exports = (reporter, definition) => {
reporter.initializeListeners.add('test-listeners', () => {
reporter.beforeRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-beforeRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.afterRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-afterRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.validateRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-validateRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.afterTemplatingEnginesExecutedListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-afterTemplatingEnginesExecuted-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

const evalInWorker = (code, req, res) => {
const script = new vm.Script(`
;(function () {
return ${code}
})()
`)

return script.runInThisContext({
displayErrors: true
})(req, res, {
mainModuleFilename: require.main.filename,
require: (m) => {
if (Module.builtinModules.includes(m)) {
return require(m)
}

try {
return require(path.join(process.cwd(), 'node_modules', m))
} catch (e) {
// hack, make it working in monorepo as well as normal extension
return require(path.join(process.cwd(), '../../node_modules', m))
}
},
reporter
})
}

reporter.afterRenderListeners.add('eval-listeners', async (req, res) => {
const code = await reporter.executeMainAction('test-afterRenderEval', {}, req)
if (code) {
return evalInWorker(code, req, res)
}
})

reporter.beforeRenderListeners.insert(0, 'eval-listeners', async (req, res) => {
const code = await reporter.executeMainAction('test-beforeRenderEval', {}, req)
if (code) {
return evalInWorker(code, req, res)
}
})
})
}
const extend = require('node.extend.without.arrays')
const vm = require('vm')
const Module = require('module')
const path = require('path')
const process = require('process')

module.exports = (reporter, definition) => {
reporter.initializeListeners.add('test-listeners', () => {
reporter.beforeRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-beforeRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.afterRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-afterRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.validateRenderListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-validateRender-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

reporter.afterTemplatingEnginesExecutedListeners.add('listeners', async (req, res) => {
const result = await reporter.executeMainAction('test-afterTemplatingEnginesExecuted-listeners', { req, res }, req)
extend(true, req, result.req)
extend(true, res, result.res)
})

const evalInWorker = (code, req, res) => {
const script = new vm.Script(`
;(function () {
return ${code}
})()
`)

return script.runInThisContext({
displayErrors: true
})(req, res, {
mainModuleFilename: require.main.filename,
require: (m) => {
if (Module.builtinModules.includes(m)) {
return require(m)
}

try {
return require(path.join(process.cwd(), 'node_modules', m))
} catch (e) {
// hack, make it working in monorepo as well as normal extension
return require(path.join(process.cwd(), '../../node_modules', m))
}
},
reporter
})
}

reporter.afterRenderListeners.add('eval-listeners', async (req, res) => {
const code = await reporter.executeMainAction('test-afterRenderEval', {}, req)
if (code) {
return evalInWorker(code, req, res)
}
})

reporter.beforeRenderListeners.insert(0, 'eval-listeners', async (req, res) => {
const code = await reporter.executeMainAction('test-beforeRenderEval', {}, req)
if (code) {
return evalInWorker(code, req, res)
}
})

reporter.afterTemplatingEnginesExecutedListeners.add('eval-listeners', async (req, res) => {
const code = await reporter.executeMainAction('test-afterTemplatingEnginesExecutedEval', {}, req)
if (code) {
return evalInWorker(code, req, res)
}
})
})
}

0 comments on commit aa519a9

Please sign in to comment.