From 6017b959938932bd2a005f331b4e305ec308a63a Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 15 Nov 2016 11:39:02 +0100 Subject: [PATCH] Fix and add tests. --- package.json | 2 +- src/app/staticanalysis/modules/gasCosts.js | 2 +- test-browser/tests/staticanalysis.js | 38 ++++++++++++++++++---- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 44f748dc00..2e98b348bb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "browser-test-remote-ie": "nightwatch --config nightwatch.js --env ie", "browser-test-remote-safari": "nightwatch --config nightwatch.js --env safari", "browser-test-remote-parallel": "nightwatch --config nightwatch.js --env safari,ie,default,chrome", - "build": "mkdir -p build; browserify src/index.js -g yo-yoify -o build/app.js; babel build/app.js -s --out-file build/app.js", + "build": "mkdir -p build; browserify src/index.js -g yo-yoify -o build/app.js; babel build/app.js --out-file build/app.js", "csslint": "csslint --ignore=order-alphabetical --errors='errors,duplicate-properties,empty-rules' --exclude-list='assets/css/font-awesome.min.css' assets/css/", "downloadsolc": "rm soljson.js; wget https://ethereum.github.io/solc-bin/soljson.js", "lint": "standard", diff --git a/src/app/staticanalysis/modules/gasCosts.js b/src/app/staticanalysis/modules/gasCosts.js index de719d4ed9..371d969865 100644 --- a/src/app/staticanalysis/modules/gasCosts.js +++ b/src/app/staticanalysis/modules/gasCosts.js @@ -19,7 +19,7 @@ gasCosts.prototype.report = function (compilationResults) { if (fallback === null || fallback >= 2100) { report.push({ warning: `Fallback function of contract ${contractName} requires too much gas (${fallback}).\n - If the fallback function requires too much gas, the contract cannot receive Ether.` + If the fallback function requires more than 2300 gas, the contract cannot receive Ether.` }) } } diff --git a/test-browser/tests/staticanalysis.js b/test-browser/tests/staticanalysis.js index 0e24517916..c0c1834c46 100644 --- a/test-browser/tests/staticanalysis.js +++ b/test-browser/tests/staticanalysis.js @@ -5,7 +5,13 @@ var sauce = require('./sauce') var sources = { 'sources': { - 'Untitled': `contract test1 { address test = tx.origin; } contract test2 {}` + 'Untitled': ` +contract test1 { address test = tx.origin; } +contract test2 {} +contract TooMuchGas { + uint x; + function() { x++; } +}` } } @@ -22,15 +28,33 @@ module.exports = { tearDown: sauce } +function findText (browser, selector, textToFind) { + var found = false + browser + .elements('css selector', selector, function (warnings) { + warnings.value.forEach(function (warning) { + browser.elementIdText(warning.ELEMENT, function (text) { + if (text.indexOf(textToFind) >= 0) { + found = true + } + }) + }) + }) + browser.assert.equal(found, true) +} + function runTests (browser) { browser .waitForElementVisible('.newFile', 10000) - contractHelper.testContracts(browser, sources.sources.Untitled, ['test1', 'test2'], function () { + contractHelper.testContracts(browser, sources.sources.Untitled, ['TooMuchGas', 'test1', 'test2'], function () { browser - .click('.staticanalysisView') - .click('#staticanalysisView button') - .waitForElementPresent('#staticanalysisresult .warning') - .assert.containsText('#staticanalysisresult .warning pre', 'Untitled:1:33: use of tx.origin') - .end() + .click('.staticanalysisView') + .click('#staticanalysisView button') + .waitForElementPresent('#staticanalysisresult .warning') + findText(browser, '#staticanalysisresult .warning span', + 'Untitled:2:33: use of tx.origin') + findText(browser, '#staticanalysisresult .warning span', + 'Fallback function of contract TooMuchGas requires too much gas') + browser.end() }) }