Explorar el Código

Re-enable solidity coverage

- Upgrade version
- Re-enable in travis.yml
- Move mocks to contracts folder for instrumentation
Santiago Palladino hace 7 años
padre
commit
1455a5a942
Se han modificado 43 ficheros con 261 adiciones y 1141 borrados
  1. 1 0
      .gitignore
  2. 5 1
      .solcover.js
  3. 7 0
      .travis.yml
  4. 1 1
      contracts/mocks/BasicTokenMock.sol
  5. 1 1
      contracts/mocks/BurnableTokenMock.sol
  6. 1 1
      contracts/mocks/CappedCrowdsaleImpl.sol
  7. 0 0
      contracts/mocks/DayLimitMock.sol
  8. 2 2
      contracts/mocks/DetailedERC20Mock.sol
  9. 1 1
      contracts/mocks/ERC23TokenMock.sol
  10. 1 1
      contracts/mocks/FinalizableCrowdsaleImpl.sol
  11. 0 0
      contracts/mocks/ForceEther.sol
  12. 0 0
      contracts/mocks/HasNoEtherTest.sol
  13. 0 0
      contracts/mocks/InsecureTargetBounty.sol
  14. 1 1
      contracts/mocks/LimitBalanceMock.sol
  15. 1 1
      contracts/mocks/PausableMock.sol
  16. 1 1
      contracts/mocks/PausableTokenMock.sol
  17. 1 1
      contracts/mocks/PullPaymentMock.sol
  18. 1 1
      contracts/mocks/RBACMock.sol
  19. 0 0
      contracts/mocks/ReentrancyAttack.sol
  20. 1 1
      contracts/mocks/ReentrancyMock.sol
  21. 1 1
      contracts/mocks/RefundableCrowdsaleImpl.sol
  22. 2 2
      contracts/mocks/SafeERC20Helper.sol
  23. 1 1
      contracts/mocks/SafeMathMock.sol
  24. 0 0
      contracts/mocks/SecureTargetBounty.sol
  25. 1 1
      contracts/mocks/StandardTokenMock.sol
  26. 213 1105
      package-lock.json
  27. 1 1
      package.json
  28. 1 1
      test/BasicToken.test.js
  29. 1 1
      test/BurnableToken.test.js
  30. 1 1
      test/CanReclaimToken.test.js
  31. 1 1
      test/CappedCrowdsale.test.js
  32. 1 1
      test/DayLimit.test.js
  33. 1 1
      test/DetailedERC20.test.js
  34. 1 1
      test/FinalizableCrowdsale.test.js
  35. 1 1
      test/HasNoTokens.test.js
  36. 1 1
      test/PausableToken.test.js
  37. 1 1
      test/PullPayment.test.js
  38. 1 1
      test/RBAC.test.js
  39. 1 1
      test/RefundableCrowdsale.test.js
  40. 1 1
      test/SafeERC20.test.js
  41. 1 1
      test/SafeMath.test.js
  42. 1 1
      test/StandardToken.test.js
  43. 1 1
      test/TokenDestructible.test.js

+ 1 - 0
.gitignore

@@ -15,6 +15,7 @@ scTopics
 # Coverage directory used by tools like istanbul
 coverage
 coverage.json
+coverageEnv
 
 # node-waf configuration
 .lock-wscript

+ 5 - 1
.solcover.js

@@ -1,5 +1,9 @@
 module.exports = {
     norpc: true,
     testCommand: 'node --max-old-space-size=4096 ../node_modules/.bin/truffle test --network coverage',
-    skipFiles: ['lifecycle/Migrations.sol']
+    compileCommand: 'node --max-old-space-size=4096 ../node_modules/.bin/truffle compile --network coverage',
+    skipFiles: [
+        'lifecycle/Migrations.sol',
+        'mocks'
+    ]
 }

+ 7 - 0
.travis.yml

@@ -7,6 +7,13 @@ node_js:
 cache:
   directories:
     - node_modules
+env:
+  -
+  - SOLIDITY_COVERAGE=true
+matrix:
+  fast_finish: true
+  allow_failures:
+    - env: SOLIDITY_COVERAGE=true
 before_script:
   - truffle version
 script:

+ 1 - 1
test/mocks/BasicTokenMock.sol → contracts/mocks/BasicTokenMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/token/BasicToken.sol';
+import '../token/BasicToken.sol';
 
 
 // mock class using BasicToken

+ 1 - 1
test/mocks/BurnableTokenMock.sol → contracts/mocks/BurnableTokenMock.sol

@@ -1,6 +1,6 @@
 pragma solidity ^0.4.18;
 
-import '../../contracts/token/BurnableToken.sol';
+import '../token/BurnableToken.sol';
 
 contract BurnableTokenMock is BurnableToken {
 

+ 1 - 1
test/mocks/CappedCrowdsaleImpl.sol → contracts/mocks/CappedCrowdsaleImpl.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/crowdsale/CappedCrowdsale.sol';
+import '../crowdsale/CappedCrowdsale.sol';
 
 
 contract CappedCrowdsaleImpl is CappedCrowdsale {

+ 0 - 0
test/mocks/DayLimitMock.sol → contracts/mocks/DayLimitMock.sol


+ 2 - 2
test/mocks/DetailedERC20Mock.sol → contracts/mocks/DetailedERC20Mock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
-import '../../contracts/token/StandardToken.sol';
-import '../../contracts/token/DetailedERC20.sol';
+import '../token/StandardToken.sol';
+import '../token/DetailedERC20.sol';
 
 contract DetailedERC20Mock is StandardToken, DetailedERC20 {
   function DetailedERC20Mock(string _name, string _symbol, uint8 _decimals) DetailedERC20(_name, _symbol, _decimals) public {}

+ 1 - 1
test/mocks/ERC23TokenMock.sol → contracts/mocks/ERC23TokenMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/token/BasicToken.sol';
+import '../token/BasicToken.sol';
 
 
 contract ERC23ContractInterface {

+ 1 - 1
test/mocks/FinalizableCrowdsaleImpl.sol → contracts/mocks/FinalizableCrowdsaleImpl.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/crowdsale/FinalizableCrowdsale.sol';
+import '../crowdsale/FinalizableCrowdsale.sol';
 
 
 contract FinalizableCrowdsaleImpl is FinalizableCrowdsale {

+ 0 - 0
test/mocks/ForceEther.sol → contracts/mocks/ForceEther.sol


+ 0 - 0
test/mocks/HasNoEtherTest.sol → contracts/mocks/HasNoEtherTest.sol


+ 0 - 0
test/mocks/InsecureTargetBounty.sol → contracts/mocks/InsecureTargetBounty.sol


+ 1 - 1
test/mocks/LimitBalanceMock.sol → contracts/mocks/LimitBalanceMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/LimitBalance.sol';
+import '../LimitBalance.sol';
 
 
 // mock class using LimitBalance

+ 1 - 1
test/mocks/PausableMock.sol → contracts/mocks/PausableMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/lifecycle/Pausable.sol';
+import '../lifecycle/Pausable.sol';
 
 
 // mock class using Pausable

+ 1 - 1
test/mocks/PausableTokenMock.sol → contracts/mocks/PausableTokenMock.sol

@@ -1,6 +1,6 @@
 pragma solidity ^0.4.18;
 
-import '../../contracts/token/PausableToken.sol';
+import '../token/PausableToken.sol';
 
 // mock class using PausableToken
 contract PausableTokenMock is PausableToken {

+ 1 - 1
test/mocks/PullPaymentMock.sol → contracts/mocks/PullPaymentMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/payment/PullPayment.sol';
+import '../payment/PullPayment.sol';
 
 
 // mock class using PullPayment

+ 1 - 1
test/mocks/RBACMock.sol → contracts/mocks/RBACMock.sol

@@ -1,6 +1,6 @@
 pragma solidity ^0.4.8;
 
-import '../../contracts/ownership/rbac/RBAC.sol';
+import '../ownership/rbac/RBAC.sol';
 
 
 contract RBACMock is RBAC {

+ 0 - 0
test/mocks/ReentrancyAttack.sol → contracts/mocks/ReentrancyAttack.sol


+ 1 - 1
test/mocks/ReentrancyMock.sol → contracts/mocks/ReentrancyMock.sol

@@ -1,6 +1,6 @@
 pragma solidity ^0.4.18;
 
-import '../../contracts/ReentrancyGuard.sol';
+import '../ReentrancyGuard.sol';
 import './ReentrancyAttack.sol';
 
 contract ReentrancyMock is ReentrancyGuard {

+ 1 - 1
test/mocks/RefundableCrowdsaleImpl.sol → contracts/mocks/RefundableCrowdsaleImpl.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/crowdsale/RefundableCrowdsale.sol';
+import '../crowdsale/RefundableCrowdsale.sol';
 
 
 contract RefundableCrowdsaleImpl is RefundableCrowdsale {

+ 2 - 2
test/mocks/SafeERC20Helper.sol → contracts/mocks/SafeERC20Helper.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
-import '../../contracts/token/ERC20.sol';
-import '../../contracts/token/SafeERC20.sol';
+import '../token/ERC20.sol';
+import '../token/SafeERC20.sol';
 
 contract ERC20FailingMock is ERC20 {
   function transfer(address, uint256) public returns (bool) {

+ 1 - 1
test/mocks/SafeMathMock.sol → contracts/mocks/SafeMathMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/math/SafeMath.sol';
+import '../math/SafeMath.sol';
 
 
 contract SafeMathMock {

+ 0 - 0
test/mocks/SecureTargetBounty.sol → contracts/mocks/SecureTargetBounty.sol


+ 1 - 1
test/mocks/StandardTokenMock.sol → contracts/mocks/StandardTokenMock.sol

@@ -1,7 +1,7 @@
 pragma solidity ^0.4.18;
 
 
-import '../../contracts/token/StandardToken.sol';
+import '../token/StandardToken.sol';
 
 
 // mock class using StandardToken

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 213 - 1105
package-lock.json


+ 1 - 1
package.json

@@ -45,7 +45,7 @@
     "ethereumjs-testrpc": "^6.0.1",
     "ethereumjs-util": "^5.1.2",
     "mocha-lcov-reporter": "^1.3.0",
-    "solidity-coverage": "^0.2.2",
+    "solidity-coverage": "^0.4.3",
     "truffle": "^4.0.0",
     "truffle-hdwallet-provider": "0.0.3"
   },

+ 1 - 1
test/BasicToken.test.js

@@ -1,6 +1,6 @@
 const assertRevert = require('./helpers/assertRevert');
 
-var BasicTokenMock = artifacts.require('./mocks/BasicTokenMock.sol');
+var BasicTokenMock = artifacts.require('mocks/BasicTokenMock.sol');
 
 contract('BasicToken', function (accounts) {
   it('should return the correct totalSupply after construction', async function () {

+ 1 - 1
test/BurnableToken.test.js

@@ -1,6 +1,6 @@
 
 const EVMRevert = require('./helpers/EVMRevert.js');
-const BurnableTokenMock = artifacts.require('./mocks/BurnableTokenMock.sol');
+const BurnableTokenMock = artifacts.require('mocks/BurnableTokenMock.sol');
 const BigNumber = web3.BigNumber;
 
 require('chai')

+ 1 - 1
test/CanReclaimToken.test.js

@@ -2,7 +2,7 @@
 import expectThrow from './helpers/expectThrow';
 
 const CanReclaimToken = artifacts.require('../contracts/ownership/CanReclaimToken.sol');
-const BasicTokenMock = artifacts.require('./mocks/BasicTokenMock.sol');
+const BasicTokenMock = artifacts.require('mocks/BasicTokenMock.sol');
 
 contract('CanReclaimToken', function (accounts) {
   let token = null;

+ 1 - 1
test/CappedCrowdsale.test.js

@@ -11,7 +11,7 @@ require('chai')
   .use(require('chai-bignumber')(BigNumber))
   .should();
 
-const CappedCrowdsale = artifacts.require('./mocks/CappedCrowdsaleImpl.sol');
+const CappedCrowdsale = artifacts.require('mocks/CappedCrowdsaleImpl.sol');
 const MintableToken = artifacts.require('MintableToken');
 
 contract('CappedCrowdsale', function ([_, wallet]) {

+ 1 - 1
test/DayLimit.test.js

@@ -4,7 +4,7 @@ import { increaseTimeTo, duration } from './helpers/increaseTime';
 
 const assertRevert = require('./helpers/assertRevert');
 
-const DayLimitMock = artifacts.require('./mocks/DayLimitMock.sol');
+const DayLimitMock = artifacts.require('mocks/DayLimitMock.sol');
 
 contract('DayLimit', function (accounts) {
   let dayLimit;

+ 1 - 1
test/DetailedERC20.test.js

@@ -5,7 +5,7 @@ require('chai')
   .use(require('chai-bignumber')(BigNumber))
   .should();
 
-const DetailedERC20Mock = artifacts.require('./mocks/DetailedERC20Mock.sol');
+const DetailedERC20Mock = artifacts.require('mocks/DetailedERC20Mock.sol');
 
 contract('DetailedERC20', accounts => {
   let detailedERC20 = null;

+ 1 - 1
test/FinalizableCrowdsale.test.js

@@ -10,7 +10,7 @@ const should = require('chai')
   .use(require('chai-bignumber')(BigNumber))
   .should();
 
-const FinalizableCrowdsale = artifacts.require('./mocks/FinalizableCrowdsaleImpl.sol');
+const FinalizableCrowdsale = artifacts.require('mocks/FinalizableCrowdsaleImpl.sol');
 const MintableToken = artifacts.require('MintableToken');
 
 contract('FinalizableCrowdsale', function ([_, owner, wallet, thirdparty]) {

+ 1 - 1
test/HasNoTokens.test.js

@@ -2,7 +2,7 @@
 import expectThrow from './helpers/expectThrow';
 
 const HasNoTokens = artifacts.require('../contracts/lifecycle/HasNoTokens.sol');
-const ERC23TokenMock = artifacts.require('./mocks/ERC23TokenMock.sol');
+const ERC23TokenMock = artifacts.require('mocks/ERC23TokenMock.sol');
 
 contract('HasNoTokens', function (accounts) {
   let hasNoTokens = null;

+ 1 - 1
test/PausableToken.test.js

@@ -1,7 +1,7 @@
 'user strict';
 
 const assertRevert = require('./helpers/assertRevert');
-var PausableTokenMock = artifacts.require('./mocks/PausableTokenMock.sol');
+var PausableTokenMock = artifacts.require('mocks/PausableTokenMock.sol');
 
 contract('PausableToken', function (accounts) {
   let token;

+ 1 - 1
test/PullPayment.test.js

@@ -1,4 +1,4 @@
-var PullPaymentMock = artifacts.require('./mocks/PullPaymentMock.sol');
+var PullPaymentMock = artifacts.require('mocks/PullPaymentMock.sol');
 
 contract('PullPayment', function (accounts) {
   let ppce;

+ 1 - 1
test/RBAC.test.js

@@ -1,7 +1,7 @@
 import expectThrow from './helpers/expectThrow';
 import expectEvent from './helpers/expectEvent';
 
-const RBACMock = artifacts.require('./mocks/RBACMock.sol');
+const RBACMock = artifacts.require('mocks/RBACMock.sol');
 
 require('chai')
   .use(require('chai-as-promised'))

+ 1 - 1
test/RefundableCrowdsale.test.js

@@ -11,7 +11,7 @@ require('chai')
   .use(require('chai-bignumber')(BigNumber))
   .should();
 
-const RefundableCrowdsale = artifacts.require('./mocks/RefundableCrowdsaleImpl.sol');
+const RefundableCrowdsale = artifacts.require('mocks/RefundableCrowdsaleImpl.sol');
 
 contract('RefundableCrowdsale', function ([_, owner, wallet, investor]) {
   const rate = new BigNumber(1000);

+ 1 - 1
test/SafeERC20.test.js

@@ -4,7 +4,7 @@ require('chai')
   .use(require('chai-as-promised'))
   .should();
 
-const SafeERC20Helper = artifacts.require('./mocks/SafeERC20Helper.sol');
+const SafeERC20Helper = artifacts.require('mocks/SafeERC20Helper.sol');
 
 contract('SafeERC20', function () {
   beforeEach(async function () {

+ 1 - 1
test/SafeMath.test.js

@@ -1,6 +1,6 @@
 const assertRevert = require('./helpers/assertRevert');
 const assertJump = require('./helpers/assertJump');
-var SafeMathMock = artifacts.require('./mocks/SafeMathMock.sol');
+var SafeMathMock = artifacts.require('mocks/SafeMathMock.sol');
 
 contract('SafeMath', function (accounts) {
   let safeMath;

+ 1 - 1
test/StandardToken.test.js

@@ -1,7 +1,7 @@
 
 const assertRevert = require('./helpers/assertRevert');
 
-var StandardTokenMock = artifacts.require('./mocks/StandardTokenMock.sol');
+var StandardTokenMock = artifacts.require('mocks/StandardTokenMock.sol');
 
 contract('StandardToken', function (accounts) {
   let token;

+ 1 - 1
test/TokenDestructible.test.js

@@ -1,6 +1,6 @@
 
 var TokenDestructible = artifacts.require('../contracts/lifecycle/TokenDestructible.sol');
-var StandardTokenMock = artifacts.require('./mocks/StandardTokenMock.sol');
+var StandardTokenMock = artifacts.require('mocks/StandardTokenMock.sol');
 require('./helpers/transactionMined.js');
 
 contract('TokenDestructible', function (accounts) {

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio