tests for remix-resolve

pull/5370/head
0mkar 6 years ago
parent c2dd1043ef
commit 5b053113ca
  1. 9
      remix-resolve/package.json
  2. 2
      remix-resolve/src/combineSource.js
  3. 2
      remix-resolve/src/resolve.js
  4. 94
      remix-resolve/src/resolveImports.js
  5. 37
      remix-resolve/tests/test.js

@ -27,12 +27,13 @@
"tests/" "tests/"
] ]
}, },
"dependencies": {
"axios": "^0.18.0",
"url": "^0.11.0",
"valid-url": "^1.0.9"
},
"devDependencies": { "devDependencies": {
"mocha": "^5.1.0", "mocha": "^5.1.0",
"standard": "^12.0.1" "standard": "^12.0.1"
}, },
"dependencies": {
"url": "^0.11.0",
"valid-url": "^1.0.9"
}
} }

@ -39,4 +39,4 @@ const combineSource = async function (rootpath, sources) {
return sources return sources
} }
module.exports = { combineSource } module.exports = combineSource

@ -91,4 +91,4 @@ const resolve = async function (fileRoot, sourcePath) {
return response return response
} }
module.exports = { resolve } module.exports = resolve

@ -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 }

@ -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' }
])
})
})
})
})
Loading…
Cancel
Save