remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
remix-project/remix-tests
yann300 1e63ab6ab1 bump 6 years ago
..
bin move to directory in preparation to move the repo 6 years ago
examples path runTestFiles for injecting import statements, update readme 6 years ago
sol Set the msg.sender in the solidity userdoc 6 years ago
src forward error to resultsCallback 6 years ago
tests Set the msg.sender in the solidity userdoc 6 years ago
LICENSE.md move to directory in preparation to move the repo 6 years ago
README.md Merge pull request #1017 from fulldecent/patch-6 6 years ago
package.json bump 6 years ago

README.md

Remix-Tests

Tests for the Ethereum tool suite Remix

Installation

npm -g install remix-tests

Test structure

Example test file:

pragma solidity ^0.4.7;
import "remix_tests.sol"; // injected by remix-tests
import "./simple_storage.sol";

contract MyTest {
  SimpleStorage foo;
  uint i = 0;

  function beforeAll() {
    foo = new SimpleStorage();
  }

  function beforeEach() {
    if (i == 1) {
      foo.set(200);
    }
    i += 1;
  }

  function initialValueShouldBe100() public {
    Assert.equal(foo.get(), 100, "initial value is not correct");
  }

  function initialValueShouldBe200() public constant returns {
    return Assert.equal(foo.get(), 200, "initial value is not correct");
  }

}

See also: example Su Squares contract and [https://travis-ci.org/su-squares/ethereum-contract/builds/446186067](Travis build) that uses remix-tests for continuous integration testing.

Available special functions:

  • beforeEach() - runs before each test
  • beforeAll() - runs before all tests

Assert library

Available functions Supported types
Assert.ok() bool
Assert.equal() uint, int, bool, address, bytes32, string
Assert.notEqual() uint, int, bool, address, bytes32, string
Assert.greaterThan() uint, int
Assert.lesserThan() uint, int

Command Line

Remix-Tests will assume the tests will files whose name end with "_test.sol". e.g simple_storage_test.sol

Usage:

  • A directory with tests files remix-tests examples/
  • A test file remix-tests examples/simple_storage_test.sol

Library

Importing the library:

const RemixTests = require('remix-tests');

Running a single test object:

remixTests.runTest(contractName, contractObj, testCallback, resultsCallback)

params: testName - string name of the test testObj - web3.js 1.0 contract instance of the test testCallback(object) - called each time there is a test event. 3 possible type of objects:

  • { type: 'contract', value: '<TestName>', filename: '<test_filename.sol>' }
  • { type: 'testPass', value: '<name of testing function>', time: <time taken>, context: '<TestName>'}
  • { type: 'testFailure', value: '<name of testing function>', time: <time taken>, context: '<TestName>', errMsg: '<message in the Assert>' }

resultsCallback(object)

  • passingNum - number of passing tests
  • failureNum - number of failing tests
  • timePassed - time it took for all the tests to run (in seconds)

Running a set of tests given the sourcecode:

remixTests.runTestSources(contractSources, testCallback, resultCallback, finalCallback, importFileCb);

params: contractSources - object -> filename => { content: source } testCallback(object) - called each time there is a test event. 3 possible type of objects:

  • { type: 'contract', value: '<TestName>', filename: '<test_filename.sol>' }
  • { type: 'testPass', value: '<name of testing function>', time: <time taken>, context: '<TestName>'}
  • { type: 'testFailure', value: '<name of testing function>', time: <time taken>, context: '<TestName>', errMsg: '<message in the Assert>' }

resultCallback(err, object)

  • passingNum - number of passing tests
  • failureNum - number of failing tests
  • timePassed - time it took for all the tests to run (in seconds)

finalCallback(err) - called when all tests finish running. importCb(url, cb)

Contribute

Please feel free! Open an issue or a pull request. Please conform to standard for code styles, and make sure that you add any relevant tests.

License

MIT © 2018 Remix Team