diff --git a/.circleci/config.yml b/.circleci/config.yml index 0aa949256b..44327e2e74 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -127,7 +127,6 @@ jobs: yarn --ignore-optional yarn add @remix-project/remix-ws-templates ./rundist.bash - - run: sudo apt update && sudo apt install python3-pip -y - run: name: "Run tests" command: | diff --git a/apps/remixdesktop/test/tests/app/slitherlinux.test.ts b/apps/remixdesktop/test/tests/app/slitherlinux.test.ts index 8545f63ad0..da2c96ddd4 100644 --- a/apps/remixdesktop/test/tests/app/slitherlinux.test.ts +++ b/apps/remixdesktop/test/tests/app/slitherlinux.test.ts @@ -1,5 +1,5 @@ import {NightwatchBrowser} from 'nightwatch' -import { ChildProcess, spawn } from 'child_process' +import { ChildProcess, spawn, execSync } from 'child_process' import { homedir } from 'os' const tests = { before: function (browser: NightwatchBrowser, done: VoidFunction) { @@ -69,27 +69,37 @@ const tests = { async function installSlither(): Promise { console.log('installSlither', process.cwd()) try { - const server = spawn('npx ts-node', ['../../libs/remixd/src/scripts/installSlither.ts'], { cwd: process.cwd(), shell: true, detached: true }) - return new Promise((resolve, reject) => { - server.stdout.on('data', function (data) { - console.log(data.toString()) - if ( - data.toString().includes("Slither is ready to use") - ) { - console.log('resolving') - resolve() - } - }) - server.stderr.on('err', function (data) { - console.log(data.toString()) - reject(data.toString()) - }) - }) + try { + const solcVersion = '0.8.15' + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: requires Python3.6+ (pip3) to be installed on your system`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: solc-select will be installed along with Slither to set different solc compiler versions.`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: checking pip3 availability ...`) + const pip3OP = execSync('pip3 --version') + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: pip3 found: ${pip3OP.toString()}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: installing slither...`) + const slitherOP = execSync('pip3 install slither-analyzer') + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: slither installation output: ${slitherOP.toString()}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: installing solc-select...`) + const solcSelectOP = execSync('pip3 install solc-select') + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: solc-select installation output: ${solcSelectOP.toString()}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: installing solc ${solcVersion}...`) + const solcInstallOP = execSync(`solc-select install ${solcVersion}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: solc installation output: ${solcInstallOP.toString()}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: setting solc version to ${solcVersion}...`) + const solcUseOP = execSync(`solc-select use ${solcVersion}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: solc setting installation output: ${solcUseOP.toString()}`) + console.log('\x1b[32m%s\x1b[0m', `[Slither Installation]: Slither is ready to use!`) + } catch (err) { + console.log('\x1b[31m%s\x1b[0m', `[Slither Installation]: Error occurred: ${err}`) + } } catch (e) { console.log(e) } } + + + module.exports = { ...process.platform.startsWith('linux')?tests:{} } \ No newline at end of file