diff --git a/remix-debug/index.js b/remix-debug/index.js index 1f0f85d278..002a89d5a2 100644 --- a/remix-debug/index.js +++ b/remix-debug/index.js @@ -1,11 +1,11 @@ 'use strict' var EthDebugger = require('./src/Ethdebugger') -var CodeManager = require('./src/code/codeManager') -var BreakpointManager = require('./src/code/breakpointManager') var StorageViewer = require('./src/storage/storageViewer') var StorageResolver = require('./src/storage/storageResolver') -var TraceManager = require('./src/trace/traceManager') + +var remixLib = require('remix-lib') +var BreakpointManager = remixLib.code.BreakpointManager /* Use of breakPointManager : @@ -24,16 +24,9 @@ module.exports = { * @return {Function} _locationToRowConverter - function implemented by editor which return a column/line position for a char source location */ BreakpointManager: BreakpointManager, - code: { - CodeManager: CodeManager, - BreakpointManager: BreakpointManager - }, storage: { StorageViewer: StorageViewer, StorageResolver: StorageResolver - }, - trace: { - TraceManager: TraceManager } } diff --git a/remix-debug/src/Ethdebugger.js b/remix-debug/src/Ethdebugger.js index 6e2c8997dd..655b2786e9 100644 --- a/remix-debug/src/Ethdebugger.js +++ b/remix-debug/src/Ethdebugger.js @@ -1,9 +1,7 @@ 'use strict' -var CodeManager = require('./code/codeManager') var StorageViewer = require('./storage/storageViewer') var StorageResolver = require('./storage/storageResolver') -var TraceManager = require('./trace/traceManager') var SolidityProxy = require('./decoder/solidityProxy') var stateDecoder = require('./decoder/stateDecoder') @@ -11,6 +9,8 @@ var localDecoder = require('./decoder/localDecoder') var InternalCallTree = require('./decoder/internalCallTree') var remixLib = require('remix-lib') +var TraceManager = remixLib.trace.traceManager +var CodeManager = remixLib.code.CodeManager var traceHelper = remixLib.helpers.trace var init = remixLib.init var executionContext = remixLib.execution.executionContext diff --git a/remix-debug/test/decoder/localsTests/int.js b/remix-debug/test/decoder/localsTests/int.js index db3a35f6c8..5fce05fd5b 100644 --- a/remix-debug/test/decoder/localsTests/int.js +++ b/remix-debug/test/decoder/localsTests/int.js @@ -1,11 +1,11 @@ 'use strict' -var TraceManager = require('../../../src/trace/traceManager') -var CodeManager = require('../../../src/code/codeManager') - var vmCall = require('../vmCall') var remixLib = require('remix-lib') +var TraceManager = remixLib.trace.TraceManager +var CodeManager = remixLib.code.CodeManager + var traceHelper = remixLib.helpers.trace var SolidityProxy = require('../../../src/decoder/solidityProxy') var InternalCallTree = require('../../../src/decoder/internalCallTree') diff --git a/remix-debug/test/decoder/localsTests/misc.js b/remix-debug/test/decoder/localsTests/misc.js index 9285ab31c8..75a239d3ad 100644 --- a/remix-debug/test/decoder/localsTests/misc.js +++ b/remix-debug/test/decoder/localsTests/misc.js @@ -1,6 +1,4 @@ 'use strict' -var TraceManager = require('../../../src/trace/traceManager') -var CodeManager = require('../../../src/code/codeManager') var vmCall = require('../vmCall') var remixLib = require('remix-lib') var traceHelper = remixLib.helpers.trace @@ -9,6 +7,9 @@ var InternalCallTree = require('../../../src/decoder/internalCallTree') var EventManager = remixLib.EventManager var helper = require('./helper') +var TraceManager = remixLib.trace.TraceManager +var CodeManager = remixLib.code.CodeManager + module.exports = function (st, vm, privateKey, contractBytecode, compilationResult, cb) { vmCall.sendTx(vm, {nonce: 0, privateKey: privateKey}, null, 0, contractBytecode, function (error, txHash) { if (error) { diff --git a/remix-debug/test/decoder/localsTests/misc2.js b/remix-debug/test/decoder/localsTests/misc2.js index 19b69eba04..9091dc1dfa 100644 --- a/remix-debug/test/decoder/localsTests/misc2.js +++ b/remix-debug/test/decoder/localsTests/misc2.js @@ -1,6 +1,4 @@ 'use strict' -var TraceManager = require('../../../src/trace/traceManager') -var CodeManager = require('../../../src/code/codeManager') var vmCall = require('../vmCall') var remixLib = require('remix-lib') var traceHelper = remixLib.helpers.trace @@ -9,6 +7,9 @@ var InternalCallTree = require('../../../src/decoder/internalCallTree') var EventManager = remixLib.EventManager var helper = require('./helper') +var TraceManager = remixLib.trace.TraceManager +var CodeManager = remixLib.code.CodeManager + module.exports = function (st, vm, privateKey, contractBytecode, compilationResult, cb) { vmCall.sendTx(vm, {nonce: 0, privateKey: privateKey}, null, 0, contractBytecode, function (error, txHash) { if (error) { diff --git a/remix-debug/test/decoder/localsTests/structArray.js b/remix-debug/test/decoder/localsTests/structArray.js index 984a341546..878fd3babe 100644 --- a/remix-debug/test/decoder/localsTests/structArray.js +++ b/remix-debug/test/decoder/localsTests/structArray.js @@ -1,6 +1,4 @@ 'use strict' -var TraceManager = require('../../../src/trace/traceManager') -var CodeManager = require('../../../src/code/codeManager') var vmCall = require('../vmCall') var remixLib = require('remix-lib') var traceHelper = remixLib.helpers.trace @@ -9,6 +7,9 @@ var InternalCallTree = require('../../../src/decoder/internalCallTree') var EventManager = remixLib.EventManager var helper = require('./helper') +var TraceManager = remixLib.trace.TraceManager +var CodeManager = remixLib.code.CodeManager + module.exports = function (st, vm, privateKey, contractBytecode, compilationResult, cb) { vmCall.sendTx(vm, {nonce: 0, privateKey: privateKey}, null, 0, contractBytecode, function (error, txHash) { if (error) { diff --git a/remix-debug/test/decoder/stateTests/mapping.js b/remix-debug/test/decoder/stateTests/mapping.js index ed14992837..af9d87a301 100644 --- a/remix-debug/test/decoder/stateTests/mapping.js +++ b/remix-debug/test/decoder/stateTests/mapping.js @@ -1,10 +1,11 @@ var remixLib = require('remix-lib') var compilerInput = remixLib.helpers.compiler.compilerInput +var TraceManager = remixLib.trace.TraceManager + var compiler = require('solc') var stateDecoder = require('../../../src/decoder/stateDecoder') var vmCall = require('../vmCall') -var TraceManager = require('../../../src/trace/traceManager') var StorageResolver = require('../../../src/storage/storageResolver') var StorageViewer = require('../../../src/storage/storageViewer') diff --git a/remix-debug/test/tests.js b/remix-debug/test/tests.js index 37481f6501..0ae683aac2 100644 --- a/remix-debug/test/tests.js +++ b/remix-debug/test/tests.js @@ -6,16 +6,12 @@ var vmCall = require('./vmCall') var Debugger = require('../src/Ethdebugger') var compiler = require('solc') -require('./traceManager.js') -require('./codeManager.js') -require('./disassembler.js') - require('./decoder/decodeInfo.js') require('./decoder/storageLocation.js') require('./decoder/storageDecoder.js') require('./decoder/localDecoder.js') -var BreakpointManager = require('../src/code/breakpointManager') +var BreakpointManager = remixLib.code.BreakpointManager tape('debug contract', function (t) { t.plan(12) diff --git a/remix-lib/index.js b/remix-lib/index.js index 3e28b78028..64304009cc 100644 --- a/remix-lib/index.js +++ b/remix-lib/index.js @@ -22,6 +22,10 @@ var txRunner = require('./src/execution/txRunner') var executionContext = require('./src/execution/execution-context') var typeConversion = require('./src/execution/typeConversion') +var CodeManager = require('./src/code/codeManager') +var BreakpointManager = require('./src/code/breakpointManager') +var TraceManager = require('./src/trace/traceManager') + if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') { module.exports = modules() } @@ -32,6 +36,13 @@ if (typeof (window) !== 'undefined') { function modules () { return { + code: { + CodeManager: CodeManager, + BreakpointManager: BreakpointManager + }, + trace: { + TraceManager: TraceManager + }, EventManager: EventManager, helpers: { trace: traceHelper, diff --git a/remix-lib/package.json b/remix-lib/package.json index 6a4d3627b3..e14204ddd2 100644 --- a/remix-lib/package.json +++ b/remix-lib/package.json @@ -50,7 +50,8 @@ "node_modules/*", "build/*", "test/resources/*" - ] + ], + "parser": "babel-eslint" }, "browserify": { "transform": [ diff --git a/remix-debug/src/code/breakpointManager.js b/remix-lib/src/code/breakpointManager.js similarity index 98% rename from remix-debug/src/code/breakpointManager.js rename to remix-lib/src/code/breakpointManager.js index 4479f0ec4e..73b53f5479 100644 --- a/remix-debug/src/code/breakpointManager.js +++ b/remix-lib/src/code/breakpointManager.js @@ -1,7 +1,7 @@ 'use strict' -var remixLib = require('remix-lib') -var EventManager = remixLib.EventManager -var helper = remixLib.helpers.trace + +var EventManager = require('../eventManager') +var helper = require('../helpers/traceHelper') /** * allow to manage breakpoint diff --git a/remix-debug/src/code/codeManager.js b/remix-lib/src/code/codeManager.js similarity index 96% rename from remix-debug/src/code/codeManager.js rename to remix-lib/src/code/codeManager.js index ac6d5536a2..0664a0e353 100644 --- a/remix-debug/src/code/codeManager.js +++ b/remix-lib/src/code/codeManager.js @@ -1,8 +1,8 @@ 'use strict' -var remixLib = require('remix-lib') -var EventManager = remixLib.EventManager -var traceHelper = remixLib.helpers.trace -var SourceMappingDecoder = remixLib.SourceMappingDecoder + +var EventManager = require('../eventManager') +var traceHelper = require('../helpers/traceHelper') +var SourceMappingDecoder = require('../sourceMappingDecoder') var CodeResolver = require('./codeResolver') /* diff --git a/remix-debug/src/code/codeResolver.js b/remix-lib/src/code/codeResolver.js similarity index 100% rename from remix-debug/src/code/codeResolver.js rename to remix-lib/src/code/codeResolver.js diff --git a/remix-debug/src/code/codeUtils.js b/remix-lib/src/code/codeUtils.js similarity index 100% rename from remix-debug/src/code/codeUtils.js rename to remix-lib/src/code/codeUtils.js diff --git a/remix-debug/src/code/disassembler.js b/remix-lib/src/code/disassembler.js similarity index 96% rename from remix-debug/src/code/disassembler.js rename to remix-lib/src/code/disassembler.js index 69c6082c65..4c5a96b2b8 100644 --- a/remix-debug/src/code/disassembler.js +++ b/remix-lib/src/code/disassembler.js @@ -1,8 +1,7 @@ 'use strict' var parseCode = require('./codeUtils').parseCode -var remixLib = require('remix-lib') -var util = remixLib.util +var util = require('../util') var createExpressions = function (instructions) { var expressions = [] diff --git a/remix-debug/src/code/opcodes.js b/remix-lib/src/code/opcodes.js similarity index 100% rename from remix-debug/src/code/opcodes.js rename to remix-lib/src/code/opcodes.js diff --git a/remix-debug/src/trace/traceAnalyser.js b/remix-lib/src/trace/traceAnalyser.js similarity index 98% rename from remix-debug/src/trace/traceAnalyser.js rename to remix-lib/src/trace/traceAnalyser.js index 240e1ee3dd..66aefa2c51 100644 --- a/remix-debug/src/trace/traceAnalyser.js +++ b/remix-lib/src/trace/traceAnalyser.js @@ -1,6 +1,5 @@ 'use strict' -var remixLib = require('remix-lib') -var traceHelper = remixLib.helpers.trace +var traceHelper = require('../helpers/traceHelper') function TraceAnalyser (_cache) { this.traceCache = _cache diff --git a/remix-debug/src/trace/traceCache.js b/remix-lib/src/trace/traceCache.js similarity index 98% rename from remix-debug/src/trace/traceCache.js rename to remix-lib/src/trace/traceCache.js index 6dc98a16b2..6448a12fd0 100644 --- a/remix-debug/src/trace/traceCache.js +++ b/remix-lib/src/trace/traceCache.js @@ -1,6 +1,5 @@ 'use strict' -var remixLib = require('remix-lib') -var helper = remixLib.util +var helper = require('../util') function TraceCache () { this.init() diff --git a/remix-debug/src/trace/traceManager.js b/remix-lib/src/trace/traceManager.js similarity index 98% rename from remix-debug/src/trace/traceManager.js rename to remix-lib/src/trace/traceManager.js index 8db9b95157..98785c54e4 100644 --- a/remix-debug/src/trace/traceManager.js +++ b/remix-lib/src/trace/traceManager.js @@ -3,9 +3,9 @@ var TraceAnalyser = require('./traceAnalyser') var TraceRetriever = require('./traceRetriever') var TraceCache = require('./traceCache') var TraceStepManager = require('./traceStepManager') -var remixLib = require('remix-lib') -var traceHelper = remixLib.helpers.trace -var util = remixLib.util + +var traceHelper = require('../helpers/traceHelper') +var util = require('../util') function TraceManager (options) { this.web3 = options.web3 diff --git a/remix-debug/src/trace/traceRetriever.js b/remix-lib/src/trace/traceRetriever.js similarity index 100% rename from remix-debug/src/trace/traceRetriever.js rename to remix-lib/src/trace/traceRetriever.js diff --git a/remix-debug/src/trace/traceStepManager.js b/remix-lib/src/trace/traceStepManager.js similarity index 94% rename from remix-debug/src/trace/traceStepManager.js rename to remix-lib/src/trace/traceStepManager.js index 5b4f50a625..e402224ec5 100644 --- a/remix-debug/src/trace/traceStepManager.js +++ b/remix-lib/src/trace/traceStepManager.js @@ -1,7 +1,7 @@ 'use strict' -var remixLib = require('remix-lib') -var traceHelper = remixLib.helpers.trace -var util = remixLib.util + +var traceHelper = require('../helpers/traceHelper') +var util = require('../util') function TraceStepManager (_traceAnalyser) { this.traceAnalyser = _traceAnalyser diff --git a/remix-debug/test/codeManager.js b/remix-lib/test/codeManager.js similarity index 97% rename from remix-debug/test/codeManager.js rename to remix-lib/test/codeManager.js index a0709226de..09db112d0f 100644 --- a/remix-debug/test/codeManager.js +++ b/remix-lib/test/codeManager.js @@ -1,7 +1,6 @@ 'use strict' var tape = require('tape') -var remixLib = require('remix-lib') -var Web3Providers = remixLib.vm.Web3Providers +var Web3Providers = require('../src/web3Provider/web3Providers') var TraceManager = require('../src/trace/traceManager') var CodeManager = require('../src/code/codeManager') var web3Test = require('./resources/testWeb3') diff --git a/remix-debug/test/disassembler.js b/remix-lib/test/disassembler.js similarity index 100% rename from remix-debug/test/disassembler.js rename to remix-lib/test/disassembler.js diff --git a/remix-lib/test/init.js b/remix-lib/test/init.js new file mode 100644 index 0000000000..bd8f9114ea --- /dev/null +++ b/remix-lib/test/init.js @@ -0,0 +1,31 @@ +var init = { + overrideWeb3: function (web3, web3Override) { + web3.eth.getCode = web3Override.getCode + web3.debug.traceTransaction = web3Override.traceTransaction + web3.debug.storageRangeAt = web3Override.storageRangeAt + web3.eth.getTransaction = web3Override.getTransaction + web3.eth.getTransactionFromBlock = web3Override.getTransactionFromBlock + web3.eth.getBlockNumber = web3Override.getBlockNumber + }, + + readFile: function (filename, callback) { + var fs = require('fs') + try { + console.log('reading ' + filename) + if (callback) { + fs.readFile(filename, 'utf8', callback) + } else { + return fs.readFileSync(filename, 'utf8') + } + } catch (e) { + console.log(e) + if (callback) { + callback(e) + } else { + return e + } + } + } +} + +module.exports = init diff --git a/remix-lib/test/resources/testWeb3.js b/remix-lib/test/resources/testWeb3.js new file mode 100644 index 0000000000..a138a81eb4 --- /dev/null +++ b/remix-lib/test/resources/testWeb3.js @@ -0,0 +1,51 @@ +'use strict' +var init = require('../init') +var web3Override = {} +web3Override.eth = {} +web3Override.debug = {} +var data = init.readFile(require('path').resolve(__dirname, 'testWeb3.json')) +data = JSON.parse(data) + +web3Override.eth.getCode = function (address, callback) { + if (callback) { + callback(null, data.testCodes[address]) + } else { + return data.testCodes[address] + } +} + +web3Override.debug.traceTransaction = function (txHash, options, callback) { + callback(null, data.testTraces[txHash]) +} + +web3Override.debug.storageRangeAt = function (blockNumber, txIndex, address, start, maxSize, callback) { + callback(null, { storage: {}, complete: true }) +} + +web3Override.eth.getTransaction = function (txHash, callback) { + if (callback) { + callback(null, data.testTxs[txHash]) + } else { + return data.testTxs[txHash] + } +} + +web3Override.eth.getTransactionFromBlock = function (blockNumber, txIndex, callback) { + if (callback) { + callback(null, data.testTxsByBlock[blockNumber + '-' + txIndex]) + } else { + return data.testTxsByBlock[blockNumber + '-' + txIndex] + } +} + +web3Override.eth.getBlockNumber = function (callback) { callback('web3 modified testing purposes :)') } + +web3Override.eth.setProvider = function (provider) {} + +web3Override.eth.providers = { 'HttpProvider': function (url) {} } + +web3Override.eth.currentProvider = {'host': 'test provider'} + +if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') { + module.exports = web3Override +} diff --git a/remix-lib/test/resources/testWeb3.json b/remix-lib/test/resources/testWeb3.json new file mode 100644 index 0000000000..ba5f88cb0f --- /dev/null +++ b/remix-lib/test/resources/testWeb3.json @@ -0,0 +1,17 @@ +{ + "testTxs": { + "0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51": {"blockHash":"0xd1d34932f8733e0485b7d9bf8500c4046d650f20ed7792508c304304fa7bbfac","blockNumber":89,"from":"0x00101c5bfa3fc8bad02c9f5fd65b069306251915","gas":105967,"gasPrice":"20000000000","hash":"0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51","input":"0x60fe47b10000000000000000000000000000000000000000000000000000000000000038","nonce":3,"to":"0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5","transactionIndex":0,"value":"0"} + }, + + "testTxsByBlock": { + "105967-0": {"blockHash":"0xd1d34932f8733e0485b7d9bf8500c4046d650f20ed7792508c304304fa7bbfac","blockNumber":89,"from":"0x00101c5bfa3fc8bad02c9f5fd65b069306251915","gas":105967,"gasPrice":"20000000000","hash":"0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51","input":"0x60fe47b10000000000000000000000000000000000000000000000000000000000000038","nonce":3,"to":"0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5","transactionIndex":0,"value":"0"} + }, + + "testCodes": { + "0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5": "0x60606040526000357c01000000000000000000000000000000000000000000000000000000009004806360fe47b11460415780636d4ce63c14605757603f565b005b605560048080359060200190919050506089565b005b606260048050506078565b6040518082815260200191505060405180910390f35b600060006000505490506086565b90565b80600060005081905550602d6040516045806100f083390180828152602001915050604051809103906000f0600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550602281016000600050819055505b505660606040526040516020806045833981016040528080519060200190919050505b806001016000600050819055505b50600a80603b6000396000f360606040526008565b00" + }, + + "testTraces": { + "0x20ef65b8b186ca942fcccd634f37074dde49b541c27994fc7596740ef44cfd51": {"gas":"0x0000000000000000000000000000000000000000000000000000000000019def","return":"0x","structLogs":[{"gas":"84503","gasCost":"3","memory":[],"op":"PUSH1","pc":"0","stack":[]},{"gas":"84500","gasCost":"3","op":"PUSH1","pc":"2","stack":["0x60"]},{"gas":"84497","gasCost":"12","memexpand":"3","op":"MSTORE","pc":"4","stack":["0x60","0x40"]},{"gas":"84485","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060"],"op":"PUSH1","pc":"5","stack":[]},{"gas":"84482","gasCost":"3","op":"CALLDATALOAD","pc":"7","stack":["0x00"]},{"gas":"84479","gasCost":"3","op":"PUSH29","pc":"8","stack":["0x60fe47b100000000000000000000000000000000000000000000000000000000"]},{"gas":"84476","gasCost":"3","op":"SWAP1","pc":"38","stack":["0x60fe47b100000000000000000000000000000000000000000000000000000000","0x0100000000000000000000000000000000000000000000000000000000"]},{"gas":"84473","gasCost":"5","op":"DIV","pc":"39","stack":["0x0100000000000000000000000000000000000000000000000000000000","0x60fe47b100000000000000000000000000000000000000000000000000000000"]},{"gas":"84468","gasCost":"3","op":"DUP1","pc":"40","stack":["0x60fe47b1"]},{"gas":"84465","gasCost":"3","op":"PUSH4","pc":"41","stack":["0x60fe47b1","0x60fe47b1"]},{"gas":"84462","gasCost":"3","op":"EQ","pc":"46","stack":["0x60fe47b1","0x60fe47b1","0x60fe47b1"]},{"gas":"84459","gasCost":"3","op":"PUSH1","pc":"47","stack":["0x60fe47b1","0x01"]},{"gas":"84456","gasCost":"10","op":"JUMPI","pc":"49","stack":["0x60fe47b1","0x01","0x41"]},{"gas":"84446","gasCost":"1","op":"JUMPDEST","pc":"65","stack":["0x60fe47b1"]},{"gas":"84445","gasCost":"3","op":"PUSH1","pc":"66","stack":["0x60fe47b1"]},{"gas":"84442","gasCost":"3","op":"PUSH1","pc":"68","stack":["0x60fe47b1","0x55"]},{"gas":"84439","gasCost":"3","op":"DUP1","pc":"70","stack":["0x60fe47b1","0x55","0x04"]},{"gas":"84436","gasCost":"3","op":"DUP1","pc":"71","stack":["0x60fe47b1","0x55","0x04","0x04"]},{"gas":"84433","gasCost":"3","op":"CALLDATALOAD","pc":"72","stack":["0x60fe47b1","0x55","0x04","0x04","0x04"]},{"gas":"84430","gasCost":"3","op":"SWAP1","pc":"73","stack":["0x60fe47b1","0x55","0x04","0x04","0x38"]},{"gas":"84427","gasCost":"3","op":"PUSH1","pc":"74","stack":["0x60fe47b1","0x55","0x04","0x38","0x04"]},{"gas":"84424","gasCost":"3","op":"ADD","pc":"76","stack":["0x60fe47b1","0x55","0x04","0x38","0x04","0x20"]},{"gas":"84421","gasCost":"3","op":"SWAP1","pc":"77","stack":["0x60fe47b1","0x55","0x04","0x38","0x24"]},{"gas":"84418","gasCost":"3","op":"SWAP2","pc":"78","stack":["0x60fe47b1","0x55","0x04","0x24","0x38"]},{"gas":"84415","gasCost":"3","op":"SWAP1","pc":"79","stack":["0x60fe47b1","0x55","0x38","0x24","0x04"]},{"gas":"84412","gasCost":"2","op":"POP","pc":"80","stack":["0x60fe47b1","0x55","0x38","0x04","0x24"]},{"gas":"84410","gasCost":"2","op":"POP","pc":"81","stack":["0x60fe47b1","0x55","0x38","0x04"]},{"gas":"84408","gasCost":"3","op":"PUSH1","pc":"82","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"84405","gasCost":"8","op":"JUMP","pc":"84","stack":["0x60fe47b1","0x55","0x38","0x89"]},{"gas":"84397","gasCost":"1","op":"JUMPDEST","pc":"137","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"84396","gasCost":"3","op":"DUP1","pc":"138","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"84393","gasCost":"3","op":"PUSH1","pc":"139","stack":["0x60fe47b1","0x55","0x38","0x38"]},{"gas":"84390","gasCost":"3","op":"PUSH1","pc":"141","stack":["0x60fe47b1","0x55","0x38","0x38","0x00"]},{"gas":"84387","gasCost":"2","op":"POP","pc":"143","stack":["0x60fe47b1","0x55","0x38","0x38","0x00","0x00"]},{"gas":"84385","gasCost":"3","op":"DUP2","pc":"144","stack":["0x60fe47b1","0x55","0x38","0x38","0x00"]},{"gas":"84382","gasCost":"3","op":"SWAP1","pc":"145","stack":["0x60fe47b1","0x55","0x38","0x38","0x00","0x38"]},{"gas":"84379","gasCost":"5000","op":"SSTORE","pc":"146","stack":["0x60fe47b1","0x55","0x38","0x38","0x38","0x00"]},{"gas":"79379","gasCost":"2","op":"POP","pc":"147","stack":["0x60fe47b1","0x55","0x38","0x38"]},{"gas":"79377","gasCost":"3","op":"PUSH1","pc":"148","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"79374","gasCost":"3","op":"PUSH1","pc":"150","stack":["0x60fe47b1","0x55","0x38","0x2d"]},{"gas":"79371","gasCost":"3","op":"MLOAD","pc":"152","stack":["0x60fe47b1","0x55","0x38","0x2d","0x40"]},{"gas":"79368","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060"],"op":"PUSH1","pc":"153","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60"]},{"gas":"79365","gasCost":"3","op":"DUP1","pc":"155","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60","0x45"]},{"gas":"79362","gasCost":"3","op":"PUSH2","pc":"156","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60","0x45","0x45"]},{"gas":"79359","gasCost":"3","op":"DUP4","pc":"159","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60","0x45","0x45","0xf0"]},{"gas":"79356","gasCost":"21","memexpand":"3","op":"CODECOPY","pc":"160","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60","0x45","0x45","0xf0","0x60"]},{"gas":"79335","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","6060604052604051602080604583398101604052808051906020019091905050","5b806001016000600050819055505b50600a80603b6000396000f36060604052","6008565b00000000000000000000000000000000000000000000000000000000"],"op":"ADD","pc":"161","stack":["0x60fe47b1","0x55","0x38","0x2d","0x60","0x45"]},{"gas":"79332","gasCost":"3","op":"DUP1","pc":"162","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5"]},{"gas":"79329","gasCost":"3","op":"DUP3","pc":"163","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xa5"]},{"gas":"79326","gasCost":"3","op":"DUP2","pc":"164","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xa5","0x2d"]},{"gas":"79323","gasCost":"6","memexpand":"1","op":"MSTORE","pc":"165","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xa5","0x2d","0xa5"]},{"gas":"79317","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","6060604052604051602080604583398101604052808051906020019091905050","5b806001016000600050819055505b50600a80603b6000396000f36060604052","6008565b00000000000000000000000000000000000000000000000000000000","000000002d000000000000000000000000000000000000000000000000000000"],"op":"PUSH1","pc":"166","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xa5"]},{"gas":"79314","gasCost":"3","op":"ADD","pc":"168","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xa5","0x20"]},{"gas":"79311","gasCost":"3","op":"SWAP2","pc":"169","stack":["0x60fe47b1","0x55","0x38","0x2d","0xa5","0xc5"]},{"gas":"79308","gasCost":"2","op":"POP","pc":"170","stack":["0x60fe47b1","0x55","0x38","0xc5","0xa5","0x2d"]},{"gas":"79306","gasCost":"2","op":"POP","pc":"171","stack":["0x60fe47b1","0x55","0x38","0xc5","0xa5"]},{"gas":"79304","gasCost":"3","op":"PUSH1","pc":"172","stack":["0x60fe47b1","0x55","0x38","0xc5"]},{"gas":"79301","gasCost":"3","op":"MLOAD","pc":"174","stack":["0x60fe47b1","0x55","0x38","0xc5","0x40"]},{"gas":"79298","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","6060604052604051602080604583398101604052808051906020019091905050","5b806001016000600050819055505b50600a80603b6000396000f36060604052","6008565b00000000000000000000000000000000000000000000000000000000","000000002d000000000000000000000000000000000000000000000000000000"],"op":"DUP1","pc":"175","stack":["0x60fe47b1","0x55","0x38","0xc5","0x60"]},{"gas":"79295","gasCost":"3","op":"SWAP2","pc":"176","stack":["0x60fe47b1","0x55","0x38","0xc5","0x60","0x60"]},{"gas":"79292","gasCost":"3","op":"SUB","pc":"177","stack":["0x60fe47b1","0x55","0x38","0x60","0x60","0xc5"]},{"gas":"79289","gasCost":"3","op":"SWAP1","pc":"178","stack":["0x60fe47b1","0x55","0x38","0x60","0x65"]},{"gas":"79286","gasCost":"3","op":"PUSH1","pc":"179","stack":["0x60fe47b1","0x55","0x38","0x65","0x60"]},{"gas":"79283","gasCost":"32000","op":"CREATE","pc":"181","stack":["0x60fe47b1","0x55","0x38","0x65","0x60","0x00"]},{"gas":"47283","gasCost":"3","memory":[],"op":"PUSH1","pc":"0","stack":[]},{"gas":"47280","gasCost":"3","op":"PUSH1","pc":"2","stack":["0x60"]},{"gas":"47277","gasCost":"12","memexpand":"3","op":"MSTORE","pc":"4","stack":["0x60","0x40"]},{"gas":"47265","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060"],"op":"PUSH1","pc":"5","stack":[]},{"gas":"47262","gasCost":"3","op":"MLOAD","pc":"7","stack":["0x40"]},{"gas":"47259","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060"],"op":"PUSH1","pc":"8","stack":["0x60"]},{"gas":"47256","gasCost":"3","op":"DUP1","pc":"10","stack":["0x60","0x20"]},{"gas":"47253","gasCost":"3","op":"PUSH1","pc":"11","stack":["0x60","0x20","0x20"]},{"gas":"47250","gasCost":"3","op":"DUP4","pc":"13","stack":["0x60","0x20","0x20","0x45"]},{"gas":"47247","gasCost":"9","memexpand":"1","op":"CODECOPY","pc":"14","stack":["0x60","0x20","0x20","0x45","0x60"]},{"gas":"47238","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","000000000000000000000000000000000000000000000000000000000000002d"],"op":"DUP2","pc":"15","stack":["0x60","0x20"]},{"gas":"47235","gasCost":"3","op":"ADD","pc":"16","stack":["0x60","0x20","0x60"]},{"gas":"47232","gasCost":"3","op":"PUSH1","pc":"17","stack":["0x60","0x80"]},{"gas":"47229","gasCost":"3","op":"MSTORE","pc":"19","stack":["0x60","0x80","0x40"]},{"gas":"47226","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000080","000000000000000000000000000000000000000000000000000000000000002d"],"op":"DUP1","pc":"20","stack":["0x60"]},{"gas":"47223","gasCost":"3","op":"DUP1","pc":"21","stack":["0x60","0x60"]},{"gas":"47220","gasCost":"3","op":"MLOAD","pc":"22","stack":["0x60","0x60","0x60"]},{"gas":"47217","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000080","000000000000000000000000000000000000000000000000000000000000002d"],"op":"SWAP1","pc":"23","stack":["0x60","0x60","0x2d"]},{"gas":"47214","gasCost":"3","op":"PUSH1","pc":"24","stack":["0x60","0x2d","0x60"]},{"gas":"47211","gasCost":"3","op":"ADD","pc":"26","stack":["0x60","0x2d","0x60","0x20"]},{"gas":"47208","gasCost":"3","op":"SWAP1","pc":"27","stack":["0x60","0x2d","0x80"]},{"gas":"47205","gasCost":"3","op":"SWAP2","pc":"28","stack":["0x60","0x80","0x2d"]},{"gas":"47202","gasCost":"3","op":"SWAP1","pc":"29","stack":["0x2d","0x80","0x60"]},{"gas":"47199","gasCost":"2","op":"POP","pc":"30","stack":["0x2d","0x60","0x80"]},{"gas":"47197","gasCost":"2","op":"POP","pc":"31","stack":["0x2d","0x60"]},{"gas":"47195","gasCost":"1","op":"JUMPDEST","pc":"32","stack":["0x2d"]},{"gas":"47194","gasCost":"3","op":"DUP1","pc":"33","stack":["0x2d"]},{"gas":"47191","gasCost":"3","op":"PUSH1","pc":"34","stack":["0x2d","0x2d"]},{"gas":"47188","gasCost":"3","op":"ADD","pc":"36","stack":["0x2d","0x2d","0x01"]},{"gas":"47185","gasCost":"3","op":"PUSH1","pc":"37","stack":["0x2d","0x2e"]},{"gas":"47182","gasCost":"3","op":"PUSH1","pc":"39","stack":["0x2d","0x2e","0x00"]},{"gas":"47179","gasCost":"2","op":"POP","pc":"41","stack":["0x2d","0x2e","0x00","0x00"]},{"gas":"47177","gasCost":"3","op":"DUP2","pc":"42","stack":["0x2d","0x2e","0x00"]},{"gas":"47174","gasCost":"3","op":"SWAP1","pc":"43","stack":["0x2d","0x2e","0x00","0x2e"]},{"gas":"47171","gasCost":"20000","op":"SSTORE","pc":"44","stack":["0x2d","0x2e","0x2e","0x00"]},{"gas":"27171","gasCost":"2","op":"POP","pc":"45","stack":["0x2d","0x2e"]},{"gas":"27169","gasCost":"1","op":"JUMPDEST","pc":"46","stack":["0x2d"]},{"gas":"27168","gasCost":"2","op":"POP","pc":"47","stack":["0x2d"]},{"gas":"27166","gasCost":"3","op":"PUSH1","pc":"48","stack":[]},{"gas":"27163","gasCost":"3","op":"DUP1","pc":"50","stack":["0x0a"]},{"gas":"27160","gasCost":"3","op":"PUSH1","pc":"51","stack":["0x0a","0x0a"]},{"gas":"27157","gasCost":"3","op":"PUSH1","pc":"53","stack":["0x0a","0x0a","0x3b"]},{"gas":"27154","gasCost":"6","op":"CODECOPY","pc":"55","stack":["0x0a","0x0a","0x3b","0x00"]},{"gas":"27148","gasCost":"3","memory":["60606040526008565b0000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000080","000000000000000000000000000000000000000000000000000000000000002d"],"op":"PUSH1","pc":"56","stack":["0x0a"]},{"gas":"27145","gasCost":"0","op":"RETURN","pc":"58","stack":["0x0a","0x00"]},{"gas":"25145","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","6060604052604051602080604583398101604052808051906020019091905050","5b806001016000600050819055505b50600a80603b6000396000f36060604052","6008565b00000000000000000000000000000000000000000000000000000000","000000002d000000000000000000000000000000000000000000000000000000"],"op":"PUSH1","pc":"182","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95"]},{"gas":"25142","gasCost":"3","memory":["0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000060","6060604052604051602080604583398101604052808051906020019091905050","5b806001016000600050819055505b50600a80603b6000396000f36060604052","6008565b00000000000000000000000000000000000000000000000000000000","000000002d000000000000000000000000000000000000000000000000000000"],"op":"PUSH1","pc":"184","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01"]},{"gas":"25139","gasCost":"3","op":"PUSH2","pc":"186","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x00"]},{"gas":"25136","gasCost":"10","op":"EXP","pc":"189","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x00","0x0100"]},{"gas":"25126","gasCost":"3","op":"DUP2","pc":"190","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01"]},{"gas":"25123","gasCost":"50","op":"SLOAD","pc":"191","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x01"]},{"gas":"25073","gasCost":"3","op":"DUP2","pc":"192","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00"]},{"gas":"25070","gasCost":"3","op":"PUSH20","pc":"193","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00","0x01"]},{"gas":"25067","gasCost":"5","op":"MUL","pc":"214","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00","0x01","0xffffffffffffffffffffffffffffffffffffffff"]},{"gas":"25062","gasCost":"3","op":"NOT","pc":"215","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00","0xffffffffffffffffffffffffffffffffffffffff"]},{"gas":"25059","gasCost":"3","op":"AND","pc":"216","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00","0xffffffffffffffffffffffff0000000000000000000000000000000000000000"]},{"gas":"25056","gasCost":"3","op":"SWAP1","pc":"217","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x01","0x00"]},{"gas":"25053","gasCost":"3","op":"DUP4","pc":"218","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x00","0x01"]},{"gas":"25050","gasCost":"5","op":"MUL","pc":"219","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x00","0x01","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95"]},{"gas":"25045","gasCost":"3","op":"OR","pc":"220","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0x00","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95"]},{"gas":"25042","gasCost":"3","op":"SWAP1","pc":"221","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95"]},{"gas":"25039","gasCost":"20000","op":"SSTORE","pc":"222","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95","0x01"]},{"gas":"5039","gasCost":"2","op":"POP","pc":"223","stack":["0x60fe47b1","0x55","0x38","0xd01f65e3472f24faf45f08f8698ec4da1bf32a95"]},{"gas":"5037","gasCost":"3","op":"PUSH1","pc":"224","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"5034","gasCost":"3","op":"DUP2","pc":"226","stack":["0x60fe47b1","0x55","0x38","0x22"]},{"gas":"5031","gasCost":"3","op":"ADD","pc":"227","stack":["0x60fe47b1","0x55","0x38","0x22","0x38"]},{"gas":"5028","gasCost":"3","op":"PUSH1","pc":"228","stack":["0x60fe47b1","0x55","0x38","0x5a"]},{"gas":"5025","gasCost":"3","op":"PUSH1","pc":"230","stack":["0x60fe47b1","0x55","0x38","0x5a","0x00"]},{"gas":"5022","gasCost":"2","op":"POP","pc":"232","stack":["0x60fe47b1","0x55","0x38","0x5a","0x00","0x00"]},{"gas":"5020","gasCost":"3","op":"DUP2","pc":"233","stack":["0x60fe47b1","0x55","0x38","0x5a","0x00"]},{"gas":"5017","gasCost":"3","op":"SWAP1","pc":"234","stack":["0x60fe47b1","0x55","0x38","0x5a","0x00","0x5a"]},{"gas":"5014","gasCost":"5000","op":"SSTORE","pc":"235","stack":["0x60fe47b1","0x55","0x38","0x5a","0x5a","0x00"]},{"gas":"14","gasCost":"2","op":"POP","pc":"236","stack":["0x60fe47b1","0x55","0x38","0x5a"]},{"gas":"12","gasCost":"1","op":"JUMPDEST","pc":"237","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"11","gasCost":"2","op":"POP","pc":"238","stack":["0x60fe47b1","0x55","0x38"]},{"gas":"9","gasCost":"8","op":"JUMP","pc":"239","stack":["0x60fe47b1","0x55"]},{"gas":"1","gasCost":"1","op":"JUMPDEST","pc":"85","stack":["0x60fe47b1"]},{"gas":"0","gasCost":"0","op":"STOP","pc":"86","stack":["0x60fe47b1"]}]} + } +} diff --git a/remix-lib/test/tests.js b/remix-lib/test/tests.js index b0d0b69044..4e2030d630 100644 --- a/remix-lib/test/tests.js +++ b/remix-lib/test/tests.js @@ -3,3 +3,7 @@ require('./eventManager.js') require('./sourceMappingDecoder.js') require('./util.js') require('./txFormat.js') + +require('./traceManager.js') +require('./codeManager.js') +require('./disassembler.js') diff --git a/remix-debug/test/traceManager.js b/remix-lib/test/traceManager.js similarity index 99% rename from remix-debug/test/traceManager.js rename to remix-lib/test/traceManager.js index 053b07ea3c..5eb23f55b7 100644 --- a/remix-debug/test/traceManager.js +++ b/remix-lib/test/traceManager.js @@ -1,8 +1,7 @@ 'use strict' var TraceManager = require('../src/trace/traceManager') var tape = require('tape') -var remixLib = require('remix-lib') -var Web3Providers = remixLib.vm.Web3Providers +var Web3Providers = require('../src/web3Provider/web3Providers') var web3Test = require('./resources/testWeb3') let web3 = null