@ -37,6 +37,7 @@ var testFiles = [
'intDivisionTruncate.sol' ,
'ERC20.sol' ,
'stringBytesLength.sol' ,
'etherTransferInLoop.sol' ,
'forLoopIteratesOverDynamicArray.sol'
]
@ -77,6 +78,7 @@ test('Integration test thisLocal.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -115,6 +117,7 @@ test('Integration test checksEffectsInteraction.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -153,6 +156,7 @@ test('Integration test constantFunctions.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -191,6 +195,7 @@ test('Integration test inlineAssembly.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -229,6 +234,7 @@ test('Integration test txOrigin.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -267,6 +273,7 @@ test('Integration test gasCosts.js', function (t) {
'intDivisionTruncate.sol' : 1 ,
'ERC20.sol' : 2 ,
'stringBytesLength.sol' : 1 ,
'etherTransferInLoop.sol' : 3 ,
'forLoopIteratesOverDynamicArray.sol' : 1
}
@ -305,6 +312,7 @@ test('Integration test similarVariableNames.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -343,6 +351,7 @@ test('Integration test inlineAssembly.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -381,6 +390,7 @@ test('Integration test blockTimestamp.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -419,6 +429,7 @@ test('Integration test lowLevelCalls.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -457,6 +468,7 @@ test('Integration test blockBlockhash.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -495,6 +507,7 @@ test('Integration test noReturn.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -533,6 +546,7 @@ test('Integration test selfdestruct.js', function (t) {
'ERC20.sol' : 0 ,
'intDivisionTruncate.sol' : 5 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -571,6 +585,7 @@ test('Integration test guardConditions.js', function (t) {
'intDivisionTruncate.sol' : 1 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -609,6 +624,7 @@ test('Integration test deleteDynamicArrays.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -647,6 +663,7 @@ test('Integration test deleteFromDynamicArray.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -685,6 +702,7 @@ test('Integration test assignAndCompare.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -723,6 +741,7 @@ test('Integration test intDivisionTruncate.js', function (t) {
'intDivisionTruncate.sol' : 2 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -761,6 +780,7 @@ test('Integration test erc20Decimal.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 1 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -799,6 +819,7 @@ test('Integration test stringBytesLength.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 1 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
@ -807,6 +828,45 @@ test('Integration test stringBytesLength.js', function (t) {
} )
} )
test ( 'Integration test etherTransferInLoop.js' , function ( t ) {
t . plan ( testFiles . length )
var module = require ( '../../src/solidity-analyzer/modules/etherTransferInLoop' )
var lengthCheck = {
'KingOfTheEtherThrone.sol' : 0 ,
'assembly.sol' : 0 ,
'ballot.sol' : 0 ,
'ballot_reentrant.sol' : 0 ,
'ballot_withoutWarnings.sol' : 0 ,
'cross_contract.sol' : 0 ,
'inheritance.sol' : 0 ,
'modifier1.sol' : 0 ,
'modifier2.sol' : 0 ,
'notReentrant.sol' : 0 ,
'structReentrant.sol' : 0 ,
'thisLocal.sol' : 0 ,
'globals.sol' : 0 ,
'library.sol' : 0 ,
'transfer.sol' : 0 ,
'ctor.sol' : 0 ,
'forgottenReturn.sol' : 0 ,
'selfdestruct.sol' : 0 ,
'deleteDynamicArray.sol' : 0 ,
'deleteFromDynamicArray.sol' : 0 ,
'blockLevelCompare.sol' : 0 ,
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 3 ,
'forLoopIteratesOverDynamicArray.sol' : 0
}
runModuleOnFiles ( module , t , ( file , report ) => {
t . equal ( report . length , lengthCheck [ file ] , ` ${ file } has right amount of etherTransferInLoop warnings ` )
} )
} )
test ( 'Integration test forLoopIteratesOverDynamicArray.js' , function ( t ) {
t . plan ( testFiles . length )
@ -837,6 +897,7 @@ test('Integration test forLoopIteratesOverDynamicArray.js', function (t) {
'intDivisionTruncate.sol' : 0 ,
'ERC20.sol' : 0 ,
'stringBytesLength.sol' : 0 ,
'etherTransferInLoop.sol' : 0 ,
'forLoopIteratesOverDynamicArray.sol' : 1
}