Skip to content

Commit a4e98ee

Browse files
committed
fix SUT e2e
1 parent 8469e17 commit a4e98ee

File tree

4 files changed

+36
-14
lines changed

4 files changed

+36
-14
lines changed

apps/remix-ide-e2e/src/tests/solidityUnittests.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ module.exports = {
131131
.click('*[data-id="testTabCheckAllTests"]')
132132
.clickElementAtPosition('.singleTestLabel', 1)
133133
.scrollAndClick('*[data-id="testTabRunTestsTabRunAction"]')
134-
.waitForElementContainsText('*[data-id="testTabSolidityUnitTestsOutput"]', 'contract deployment failed: revert', 120000)
134+
.waitForElementContainsText('*[data-id="testTabSolidityUnitTestsOutput"]', 'contract deployment failed', 120000)
135135
},
136136

137137
'Should fail when parameters are passed to method in test contract #group3': function (browser: NightwatchBrowser) {

libs/remix-tests/src/deployer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ export function deployAll (compileResult: compilationInterface, provider: Browse
7777
if (deployCb) await deployCb(filename, receipt.contractAddress)
7878
callback(null, { receipt: { contractAddress: receipt.contractAddress } }) // TODO this will only work with JavaScriptV VM
7979
})
80+
}).catch((err) => {
81+
const error = new Error(err)
82+
console.error('Error while estimating gas: ', error.message)
83+
callback(error.message)
8084
})
8185
}).catch((err) => {
82-
console.error(err)
86+
console.error('Error while getting deployment transaction: ', err)
8387
callback(err)
8488
})
8589
}

libs/remix-tests/src/runTestSources.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ export class UnitTestRunner {
6161
// If contract deployment fails because of 'Out of Gas' error, try again with double gas
6262
// This is temporary, should be removed when remix-tests will have a dedicated UI to
6363
// accept deployment params from UI
64-
if (err.error.includes('The contract code couldn\'t be stored, please check your gas limit')) {
64+
if (err.includes('missing revert data')) {
6565
deployAll(compilationResult, this.provider, this.testsAccounts, true, deployCb, (error, contracts) => {
66-
if (error) next([{ message: 'contract deployment failed after trying twice: ' + (error.innerError || error.error), severity: 'error' }]) // IDE expects errors in array
66+
if (error) next([{ message: 'contract deployment failed after trying twice: ' + (error || error.error), severity: 'error' }]) // IDE expects errors in array
6767
else next(null, compilationResult, contracts)
6868
})
69-
} else { next([{ message: 'contract deployment failed: ' + (err.innerError || err.error), severity: 'error' }]) } // IDE expects errors in array
69+
} else { next([{ message: 'contract deployment failed: ' + (err || err.error), severity: 'error' }]) } // IDE expects errors in array
7070
} else { next(null, compilationResult, contracts) }
7171
})
7272
},
@@ -134,7 +134,6 @@ export class UnitTestRunner {
134134
errors.forEach((error, _index) => {
135135
finalResults.errors.push({ context: error.context, value: error.value, message: error.errMsg })
136136
})
137-
138137
next(null, finalResults)
139138
})
140139
}

libs/remix-tests/src/testRunner.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,11 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
225225
value: opts.accounts
226226
}
227227
testCallback(undefined, accts)
228-
228+
const filename = testObject.filename
229229
const resp: TestResultInterface = {
230230
type: 'contract',
231231
value: testName,
232-
filename: testObject.filename
232+
filename
233233
}
234234
testCallback(undefined, resp)
235235
async.eachOfLimit(runList, 1, async function (func, index, next) {
@@ -253,7 +253,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
253253
const resp: TestResultInterface = {
254254
type: 'testPass',
255255
value: changeCase.sentenceCase(func.name),
256-
filename: testObject.filename,
256+
filename,
257257
time: time,
258258
context: testName,
259259
provider,
@@ -267,7 +267,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
267267
const resp: TestResultInterface = {
268268
type: 'testFailure',
269269
value: changeCase.sentenceCase(func.name),
270-
filename: testObject.filename,
270+
filename,
271271
time: time,
272272
errMsg: 'function returned false',
273273
context: testName,
@@ -279,6 +279,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
279279
failureNum += 1
280280
timePassed += time
281281
}
282+
return next()
282283
} else {
283284
if (func.signature) {
284285
sender = getOverriddenSender(contractDetails.userdoc, func.signature, contractDetails.evm.methodIdentifiers)
@@ -308,6 +309,23 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
308309
const time: number = (Date.now() - startTime) / 1000.0
309310
const assertionEventHashes = assertionEvents.map(e => keccak256(toUtf8Bytes(e.name + '(' + e.params.join() + ')')))
310311
let testPassed = false
312+
if (receipt.status === 0) {
313+
const resp: TestResultInterface = {
314+
type: 'testFailure',
315+
value: changeCase.sentenceCase(func.name),
316+
filename,
317+
time: time,
318+
errMsg: `Transaction with hash "${debugTxHash}" has been reverted by the EVM.`,
319+
context: testName,
320+
provider,
321+
debugTxHash
322+
}
323+
if (hhLogs && hhLogs.length) resp.hhLogs = hhLogs
324+
testCallback(undefined, resp)
325+
failureNum += 1
326+
timePassed += time
327+
return next()
328+
}
311329
for (const i in receipt.logs) {
312330
let events = receipt.logs[i]
313331
if (!Array.isArray(events)) events = [events]
@@ -323,10 +341,11 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
323341
testEvent[4] = 'true'
324342
}
325343
const location = getAssertMethodLocation(fileAST, testName, func.name, assertMethod)
344+
326345
const resp: TestResultInterface = {
327346
type: 'testFailure',
328347
value: changeCase.sentenceCase(func.name),
329-
filename: testObject.filename,
348+
filename,
330349
time: time,
331350
errMsg: testEvent[1],
332351
context: testName,
@@ -352,7 +371,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
352371
const resp: TestResultInterface = {
353372
type: 'testPass',
354373
value: changeCase.sentenceCase(func.name),
355-
filename: testObject.filename,
374+
filename,
356375
time: time,
357376
context: testName,
358377
provider,
@@ -366,7 +385,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
366385
const resp: TestResultInterface = {
367386
type: 'logOnly',
368387
value: changeCase.sentenceCase(func.name),
369-
filename: testObject.filename,
388+
filename,
370389
time: time,
371390
context: testName,
372391
hhLogs
@@ -390,7 +409,7 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
390409
const resp: TestResultInterface = {
391410
type: 'testFailure',
392411
value: changeCase.sentenceCase(func.name),
393-
filename: testObject.filename,
412+
filename,
394413
time: time,
395414
errMsg,
396415
context: testName,

0 commit comments

Comments
 (0)