From 9eb17cd4a5a4defc15042498f849ddad73424472 Mon Sep 17 00:00:00 2001 From: 0mkar <0mkar@protonmail.com> Date: Wed, 21 Nov 2018 17:29:57 +0530 Subject: [PATCH] tests for remix-resolve --- remix-resolve/package.json | 9 +-- remix-resolve/src/combineSource.js | 2 +- remix-resolve/src/resolve.js | 2 +- remix-resolve/src/resolveImports.js | 94 ----------------------------- remix-resolve/tests/test.js | 37 ++++++++++++ 5 files changed, 44 insertions(+), 100 deletions(-) delete mode 100644 remix-resolve/src/resolveImports.js diff --git a/remix-resolve/package.json b/remix-resolve/package.json index 8ef46af502..4e65982b4e 100644 --- a/remix-resolve/package.json +++ b/remix-resolve/package.json @@ -27,12 +27,13 @@ "tests/" ] }, + "dependencies": { + "axios": "^0.18.0", + "url": "^0.11.0", + "valid-url": "^1.0.9" + }, "devDependencies": { "mocha": "^5.1.0", "standard": "^12.0.1" }, - "dependencies": { - "url": "^0.11.0", - "valid-url": "^1.0.9" - } } diff --git a/remix-resolve/src/combineSource.js b/remix-resolve/src/combineSource.js index 3565bd8985..68f1947082 100644 --- a/remix-resolve/src/combineSource.js +++ b/remix-resolve/src/combineSource.js @@ -39,4 +39,4 @@ const combineSource = async function (rootpath, sources) { return sources } -module.exports = { combineSource } +module.exports = combineSource diff --git a/remix-resolve/src/resolve.js b/remix-resolve/src/resolve.js index d50727534d..0584aebba6 100644 --- a/remix-resolve/src/resolve.js +++ b/remix-resolve/src/resolve.js @@ -91,4 +91,4 @@ const resolve = async function (fileRoot, sourcePath) { return response } -module.exports = { resolve } +module.exports = resolve diff --git a/remix-resolve/src/resolveImports.js b/remix-resolve/src/resolveImports.js deleted file mode 100644 index 229e3a25e7..0000000000 --- a/remix-resolve/src/resolveImports.js +++ /dev/null @@ -1,94 +0,0 @@ -const axios = require('axios') -const path = require('path') -const fs = require('fs') - -const handleGithubCall = async function (fullpath, repoPath, path, filename, fileRoot) { - const data = await axios({ - method: 'get', - url: 'https://api.github.com/repos/' + repoPath + '/contents/' + path, - responseType: 'json' - }).then(function (response) { - if ('content' in response.data) { - const buf = Buffer.from(response.data.content, 'base64') - fileRoot = fullpath.substring(0, fullpath.lastIndexOf('/')) - fileRoot = fileRoot + '/' - const resp = { filename, content: buf.toString('UTF-8'), fileRoot } - return resp - } else { - throw Error('Content not received!') - } - }) - return data -} -const handleNodeModulesImport = async function (pathString, filename, fileRoot) { - const o = { encoding: 'UTF-8' } - var modulesDir = fileRoot - - while (true) { - var p = path.join(modulesDir, 'node_modules', pathString, filename) - try { - const content = fs.readFileSync(p, o) - fileRoot = path.join(modulesDir, 'node_modules', pathString) - const response = { filename, content, fileRoot } - return response - } catch (err) { - console.log(err) - } - - // Recurse outwards until impossible - var oldModulesDir = modulesDir - modulesDir = path.join(modulesDir, '..') - if (modulesDir === oldModulesDir) { - break - } - } -} -const handleLocalImport = async function (pathString, filename, fileRoot) { - // if no relative/absolute path given then search in node_modules folder - if (pathString && pathString.indexOf('.') !== 0 && pathString.indexOf('/') !== 0) { - return handleNodeModulesImport(pathString, filename, fileRoot) - } else { - const o = { encoding: 'UTF-8' } - const p = pathString ? path.resolve(fileRoot, pathString, filename) : path.resolve(fileRoot, filename) - const content = fs.readFileSync(p, o) - fileRoot = pathString ? path.resolve(fileRoot, pathString) : fileRoot - const response = { filename, content, fileRoot } - return response - } -} -const getHandlers = async function () { - return [ - { - type: 'local', - match: /(^(?!(?:http:\/\/)|(?:https:\/\/)?(?:www.)?(?:github.com)))(^\/*[\w+-_/]*\/)*?(\w+\.sol)/g, - handle: async (match, fileRoot) => { const data = await handleLocalImport(match[2], match[3], fileRoot); return data } - }, - { - type: 'github', - match: /^(https?:\/\/)?(www.)?github.com\/([^/]*\/[^/]*)(.*\/(\w+\.sol))/g, - handle: async (match, fileRoot) => { - const data = await handleGithubCall(match[0], match[3], match[4], match[5], fileRoot) - return data - } - } - ] -} -const resolveImports = async function (fileRoot, sourcePath) { - const handlers = await getHandlers() - let response = {} - for (const handler of handlers) { - try { - // here we are trying to find type of import path github/swarm/ipfs/local - const match = handler.match.exec(sourcePath) - if (match) { - response = await handler.handle(match, fileRoot) - break - } - } catch (e) { - throw e - } - } - return response -} - -module.exports = { resolveImports } diff --git a/remix-resolve/tests/test.js b/remix-resolve/tests/test.js index e69de29bb2..3d15fa829c 100644 --- a/remix-resolve/tests/test.js +++ b/remix-resolve/tests/test.js @@ -0,0 +1,37 @@ +const rr = require('../src/index.js') +const assert = require('assert') +const fs = require('fs') + +describe('testRunner', function () { + describe('#combineSource', function() { + describe('test with beforeAll', function () { + let filename = 'tests/examples_1/greeter.sol' + let tests = [], results = {} + + before(function (done) { + const content = fs.readFileSync('../remix-resolve/tests/example_1/greeter.sol') + var sources = [] + sources['greeter.sol'] = content + rr.combineSource('/home/0mkar/Karma/remix/remix-resolve/tests/example_1/greeter.sol', sources) + }) + + it('should 1 passing test', function () { + assert.equal(results.passingNum, 2) + }) + + it('should 1 failing test', function () { + assert.equal(results.failureNum, 2) + }) + + it('should returns 5 messages', function () { + assert.deepEqual(tests, [ + { type: 'contract', value: 'MyTest', filename: 'simple_storage_test.sol' }, + { type: 'testFailure', value: 'Should trigger one fail', time: 1, context: 'MyTest', errMsg: 'the test 1 fails' }, + { type: 'testPass', value: 'Should trigger one pass', time: 1, context: 'MyTest'}, + { type: 'testPass', value: 'Initial value should be100', time: 1, context: 'MyTest' }, + { type: 'testFailure', value: 'Initial value should be200', time: 1, context: 'MyTest', errMsg: 'function returned false' } + ]) + }) + }) + }) +})