MCPcopy
hub / github.com/codeceptjs/CodeceptJS / injected

Function injected

lib/mocha/asyncWrapper.js:114–191  ·  view source on GitHub ↗
(fn, suite, hookName)

Source from the content-addressed store, hash-verified

112 * Injects arguments to function from controller
113 */
114export function injected(fn, suite, hookName) {
115 return function (done) {
116 const doneFn = makeDoneCallableOnce(done)
117 const errHandler = err => {
118 recorder.session.start('teardown')
119 recorder.cleanAsyncErr()
120 if (['before', 'beforeSuite'].includes(hookName)) {
121 suiteTestFailedHookError(suite, err, hookName)
122 }
123 if (hookName === 'after') {
124 suiteTestFailedHookError(suite, err, hookName)
125 suite.eachTest(test => {
126 event.emit(event.test.after, test)
127 })
128 }
129 if (hookName === 'afterSuite') {
130 suiteTestFailedHookError(suite, err, hookName)
131 event.emit(event.suite.after, suite)
132 }
133 recorder.add(() => doneFn(err))
134 }
135
136 recorder.errHandler(err => {
137 errHandler(err)
138 })
139
140 if (!fn) throw new Error('fn is not defined')
141
142 fireHook(event.hook.started, suite)
143
144 this.test.body = fn.toString()
145
146 if (!recorder.isRunning()) {
147 recorder.errHandler(err => {
148 errHandler(err)
149 })
150 }
151
152 const opts = suite.opts || {}
153 const retries = opts[`retry${ucfirst(hookName)}`] || 0
154
155 const currentTest = hookName === 'before' || hookName === 'after' ? suite?.ctx?.currentTest : null
156
157 promiseRetry(
158 async (retry, number) => {
159 try {
160 recorder.startUnlessRunning()
161 const injectedArgs = await getInjectedArguments(fn, null, suite)
162 await fn.call(this, { ...injectedArgs, suite, test: currentTest })
163 await recorder.promise().catch(err => retry(err))
164 } catch (err) {
165 retry(err)
166 } finally {
167 if (number < retries) {
168 recorder.stop()
169 recorder.start()
170 }
171 }

Callers 3

ui.jsFile · 0.90
gherkinParserFunction · 0.90

Calls 10

fireHookFunction · 0.90
ucfirstFunction · 0.90
getInjectedArgumentsFunction · 0.90
makeDoneCallableOnceFunction · 0.85
retryFunction · 0.85
stopMethod · 0.80
errHandlerFunction · 0.70
toStringMethod · 0.45
startMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected