UNPKG

1.96 kBPlain TextView Raw
1import commander from 'commander'
2import Web3 from 'web3';
3import { runTestFiles } from './runTestFiles'
4import fs from './fileSystem'
5import { Provider } from 'remix-simulator'
6import Log from './logger'
7const logger = new Log()
8const log = logger.logger
9import colors from 'colors'
10
11// parse verbosity
12function mapVerbosity (v: number) {
13 const levels = {
14 0: 'error',
15 1: 'warn',
16 2: 'info',
17 3: 'verbose',
18 4: 'debug',
19 5: 'silly'
20 }
21 return levels[v]
22}
23const version = require('../package.json').version
24
25commander.version(version)
26
27commander.command('version').description('output the version number').action(function () {
28 console.log(version)
29})
30
31commander.command('help').description('output usage information').action(function () {
32 commander.help()
33})
34
35// get current version
36commander
37 .option('-v, --verbose <level>', 'run with verbosity', mapVerbosity)
38 .action(async (filename) => {
39 if(!filename.endsWith('_test.sol')){
40 log.error('Test filename should end with "_test.sol"')
41 process.exit()
42 }
43 // Console message
44 console.log(colors.white('\n\tšŸ‘\t:: Running remix-tests - Unit testing for solidity ::\tšŸ‘\n'))
45 // set logger verbosity
46 if (commander.verbose) {
47 logger.setVerbosity(commander.verbose)
48 log.info('verbosity level set to ' + commander.verbose.blue)
49 }
50 let web3 = new Web3()
51 const provider = new Provider()
52 await provider.init()
53 web3.setProvider(provider)
54
55 if (!fs.existsSync(filename)) {
56 console.error(filename + ' not found')
57 process.exit(1)
58 }
59
60 let isDirectory = fs.lstatSync(filename).isDirectory()
61 runTestFiles(filename, isDirectory, web3)
62 })
63
64if (!process.argv.slice(2).length) {
65 log.error('Please specify a filename')
66 process.exit()
67}
68
69commander.parse(process.argv)