From 091e2d035a8b89eeba82a33a756c79444959cc2a Mon Sep 17 00:00:00 2001 From: Aniket-Engg Date: Tue, 2 Aug 2022 12:54:12 +0530 Subject: [PATCH] resolver for remix-tests CLI --- libs/remix-tests/package.json | 1 + libs/remix-tests/src/compiler.ts | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/libs/remix-tests/package.json b/libs/remix-tests/package.json index c4a02aef60..7aab939286 100644 --- a/libs/remix-tests/package.json +++ b/libs/remix-tests/package.json @@ -42,6 +42,7 @@ "@remix-project/remix-lib": "^0.5.15", "@remix-project/remix-simulator": "^0.2.15", "@remix-project/remix-solidity": "^0.5.1", + "@remix-project/remix-url-resolver": "^0.0.36", "ansi-gray": "^0.1.1", "async": "^2.6.0", "axios": ">=0.21.1", diff --git a/libs/remix-tests/src/compiler.ts b/libs/remix-tests/src/compiler.ts index f16c925edc..0f31e6dcb7 100644 --- a/libs/remix-tests/src/compiler.ts +++ b/libs/remix-tests/src/compiler.ts @@ -4,6 +4,7 @@ import path from 'path' import deepequal from 'deep-equal' import Log from './logger' import { Compiler as RemixCompiler } from '@remix-project/remix-solidity' +import { RemixURLResolver } from '@remix-project/remix-url-resolver' import { SrcIfc, CompilerConfiguration, CompilationErrors } from './types' const logger = new Log() const log = logger.logger @@ -85,6 +86,23 @@ export function compileFileOrFiles (filename: string, isDirectory: boolean, opts 'remix_accounts.sol': { content: writeTestAccountsContract(accounts) } } const filepath: string = (isDirectory ? filename : path.dirname(filename)) + const importsCallback = (url, cb) => { + try { + console.log('inside importsCallback----url--->', url) + if(fs.existsSync(url)) cb(null, fs.readFileSync(url, 'utf-8')) + else { + console.log('inside else------->') + const urlResolver = new RemixURLResolver() + urlResolver.resolve(url).then((result) => { + console.log('result------->', result) + cb(null, result.content) + }) + .catch((error) => cb(error.message)) + } + } catch (e) { + cb(e.message) + } + } try { if (!isDirectory && fs.existsSync(filename)) { if (filename.split('.').pop() === 'sol') { @@ -114,13 +132,7 @@ export function compileFileOrFiles (filename: string, isDirectory: boolean, opts } finally { async.waterfall([ function loadCompiler (next) { - compiler = new RemixCompiler((url, cb) => { - try { - cb(null, fs.readFileSync(url, 'utf-8')) - } catch (e) { - cb(e.message) - } - }) + compiler = new RemixCompiler(importsCallback) if (compilerConfig) { const { currentCompilerUrl, evmVersion, optimize, runs } = compilerConfig if (evmVersion) compiler.set('evmVersion', evmVersion)