From 10aa73221cf5e6827585f32346d36753580b06b7 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Tue, 19 Nov 2019 16:11:32 +0530 Subject: [PATCH] more types added --- remix-tests/src/runTestFiles.ts | 6 +++--- remix-tests/src/runTestSources.ts | 10 +++++----- remix-tests/src/testRunner.ts | 28 ++++++++++++++++------------ remix-tests/src/types.ts | 5 +++++ 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/remix-tests/src/runTestFiles.ts b/remix-tests/src/runTestFiles.ts index dc9dcba1c1..a14888bf6e 100644 --- a/remix-tests/src/runTestFiles.ts +++ b/remix-tests/src/runTestFiles.ts @@ -1,7 +1,7 @@ import async from 'async' import fs from './fileSystem' import { runTest } from './testRunner' -import { TestResultInterface, ResultsInterface, compilationInterface, ASTInterface } from './types' +import { TestResultInterface, ResultsInterface, compilationInterface, ASTInterface, Options, AstNode } from './types' import colors from 'colors' import Web3 = require('web3') @@ -16,7 +16,7 @@ import { deployAll } from './deployer' * @param opts Options */ -export function runTestFiles(filepath: string, isDirectory: boolean, web3: Web3, opts?: object) { +export function runTestFiles(filepath: string, isDirectory: boolean, web3: Web3, opts?: Options) { opts = opts || {} const sourceASTs: any = {} const { Signale } = require('signale') @@ -117,7 +117,7 @@ export function runTestFiles(filepath: string, isDirectory: boolean, web3: Web3, async.eachOfLimit(contractsToTest, 1, (contractName: string, index, cb) => { try { - const fileAST = sourceASTs[contracts[contractName]['filename']] + const fileAST: AstNode = sourceASTs[contracts[contractName]['filename']] runTest(contractName, contracts[contractName], contractsToTestDetails[index], fileAST, { accounts }, _testCallback, (err, result) => { if (err) { console.log(err) diff --git a/remix-tests/src/runTestSources.ts b/remix-tests/src/runTestSources.ts index 5c07de0b2c..7c3b4fbf7e 100644 --- a/remix-tests/src/runTestSources.ts +++ b/remix-tests/src/runTestSources.ts @@ -4,11 +4,11 @@ require('colors') import { compileContractSources } from './compiler' import { deployAll } from './deployer' import { runTest } from './testRunner' -import { TestResultInterface } from './types' +import { TestResultInterface, AstNode } from './types' import Web3 = require('web3') import { Provider } from 'remix-simulator' -import { FinalResult, SrcIfc, compilationInterface, ASTInterface } from './types' +import { FinalResult, SrcIfc, compilationInterface, ASTInterface, Options } from './types' const createWeb3Provider = async function () { let web3 = new Web3() @@ -29,11 +29,11 @@ const createWeb3Provider = async function () { * @param importFileCb Import file callback * @param opts Options */ -export async function runTestSources(contractSources: SrcIfc, versionUrl: string, usingWorker: boolean, testCallback: Function, resultCallback: Function, finalCallback: any, importFileCb: Function, opts: any) { +export async function runTestSources(contractSources: SrcIfc, versionUrl: string, usingWorker: boolean, testCallback: Function, resultCallback: Function, finalCallback: any, importFileCb: Function, opts: Options) { opts = opts || {} const sourceASTs: any = {} let web3 = opts.web3 || await createWeb3Provider() - let accounts = opts.accounts || null + let accounts: string[] | null = opts.accounts || null async.waterfall([ function getAccountList (next) { if (accounts) return next() @@ -95,7 +95,7 @@ export async function runTestSources(contractSources: SrcIfc, versionUrl: string } async.eachOfLimit(contractsToTest, 1, (contractName: string, index: string | number, cb: ErrorCallback) => { - const fileAST = sourceASTs[contracts[contractName]['filename']] + const fileAST: AstNode = sourceASTs[contracts[contractName]['filename']] runTest(contractName, contracts[contractName], contractsToTestDetails[index], fileAST, { accounts }, _testCallback, (err, result) => { if (err) { return cb(err) diff --git a/remix-tests/src/testRunner.ts b/remix-tests/src/testRunner.ts index bd00da7930..5bb06b4e28 100644 --- a/remix-tests/src/testRunner.ts +++ b/remix-tests/src/testRunner.ts @@ -1,9 +1,10 @@ import async from 'async' import * as changeCase from 'change-case' import Web3 = require('web3') -import { RunListInterface, TestCbInterface, TestResultInterface, ResultCbInterface } from './types' +import { RunListInterface, TestCbInterface, TestResultInterface, ResultCbInterface, + CompiledContract, AstNode, Options, FunctionDescription, UserDocumentation } from './types' -function getFunctionFullName (signature: string, methodIdentifiers) { +function getFunctionFullName (signature: string, methodIdentifiers: any) { for (const method in methodIdentifiers) { if (signature.replace('0x', '') === methodIdentifiers[method].replace('0x', '')) { return method @@ -12,10 +13,10 @@ function getFunctionFullName (signature: string, methodIdentifiers) { return null } -function getOverridedSender (userdoc, signature: string, methodIdentifiers) { +function getOverridedSender (userdoc: UserDocumentation, signature: string, methodIdentifiers: any) { let fullName: any = getFunctionFullName(signature, methodIdentifiers) - let match = /sender: account-+(\d)/g - let accountIndex = userdoc.methods[fullName] ? match.exec(userdoc.methods[fullName].notice) : null + let match: RegExp = /sender: account-+(\d)/g + let accountIndex: any = userdoc.methods[fullName] ? match.exec(userdoc.methods[fullName].notice) : null return fullName && accountIndex ? accountIndex[1] : null } @@ -25,10 +26,13 @@ function getOverridedSender (userdoc, signature: string, methodIdentifiers) { * @param testContractName Name of test contract */ -function getAvailableFunctions (fileAST: any, testContractName: string) { - const contractAST: any[] = fileAST.nodes.filter(node => node.name === testContractName && node.nodeType === 'ContractDefinition') - const funcNodes: any[] = contractAST[0].nodes.filter(node => node.kind === 'function' && node.nodeType === "FunctionDefinition") - const funcList: string[] = funcNodes.map(node => node.name) +function getAvailableFunctions (fileAST: AstNode, testContractName: string) { + var funcList: string[] = [] + if(fileAST.nodes && fileAST.nodes.length > 0) { + const contractAST: any[] = fileAST.nodes.filter(node => node.name === testContractName && node.nodeType === 'ContractDefinition') + const funcNodes: any[] = contractAST[0].nodes.filter(node => node.kind === 'function' && node.nodeType === "FunctionDefinition") + funcList = funcNodes.map(node => node.name) + } return funcList; } @@ -38,7 +42,7 @@ function getAvailableFunctions (fileAST: any, testContractName: string) { * @param funcList Methods to extract the interface of */ -function getTestFunctionsInterface (jsonInterface: any, funcList: string[]) { +function getTestFunctionsInterface (jsonInterface: FunctionDescription[], funcList: string[]) { const functionsInterface: any[] = [] const specialFunctions = ['beforeAll', 'beforeEach', 'afterAll', 'afterEach'] for(const func of funcList){ @@ -57,7 +61,7 @@ function getTestFunctionsInterface (jsonInterface: any, funcList: string[]) { * @param testContractName Test contract name */ -function createRunList (jsonInterface: any, fileAST: any, testContractName: string): RunListInterface[] { +function createRunList (jsonInterface: FunctionDescription[], fileAST: AstNode, testContractName: string): RunListInterface[] { const availableFunctions: string[] = getAvailableFunctions(fileAST, testContractName) const testFunctionsInterface: any[] = getTestFunctionsInterface(jsonInterface, availableFunctions) @@ -84,7 +88,7 @@ function createRunList (jsonInterface: any, fileAST: any, testContractName: stri return runList } -export function runTest (testName, testObject: any, contractDetails: any, fileAST: any, opts: any, testCallback: TestCbInterface, resultsCallback: ResultCbInterface) { +export function runTest (testName: string, testObject: any, contractDetails: CompiledContract, fileAST: AstNode, opts: Options, testCallback: TestCbInterface, resultsCallback: ResultCbInterface) { const runList: RunListInterface[] = createRunList(testObject._jsonInterface, fileAST, testName) let passingNum: number = 0 let failureNum: number = 0 diff --git a/remix-tests/src/types.ts b/remix-tests/src/types.ts index ee2a307545..e0c04f14ce 100644 --- a/remix-tests/src/types.ts +++ b/remix-tests/src/types.ts @@ -38,6 +38,11 @@ export interface ResultCbInterface { (error: Error | null | undefined, result: ResultsInterface) : void; } +export interface Options { + accounts?: string[] | null, + web3?: any +} + /** sources object with name of the file and content **/ ////////////