Add tests and fixtures for full project scenarios (#385)
* Full project tests fixtures for repeated use of evm_revert, * ... and the skipped folders option, * ... and solidity imports with relative paths reaching outside the `contracts/` folder.pull/386/head
parent
826d9d59e8
commit
9ea10859b1
@ -0,0 +1 @@ |
|||||||
|
!node_modules |
@ -0,0 +1,3 @@ |
|||||||
|
module.exports = { |
||||||
|
silent: process.env.SILENT ? true : false, |
||||||
|
}; |
@ -0,0 +1,10 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
contract RelativePathImport { |
||||||
|
uint r; |
||||||
|
constructor() public {} |
||||||
|
|
||||||
|
function isRelativePathMethod() public { |
||||||
|
r = 5; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
contract Migrations { |
||||||
|
address public owner; |
||||||
|
uint public last_completed_migration; |
||||||
|
|
||||||
|
constructor() public { |
||||||
|
owner = msg.sender; |
||||||
|
} |
||||||
|
|
||||||
|
modifier restricted() { |
||||||
|
if (msg.sender == owner) _; |
||||||
|
} |
||||||
|
|
||||||
|
function setCompleted(uint completed) public restricted { |
||||||
|
last_completed_migration = completed; |
||||||
|
} |
||||||
|
|
||||||
|
function upgrade(address new_address) public restricted { |
||||||
|
Migrations upgraded = Migrations(new_address); |
||||||
|
upgraded.setCompleted(last_completed_migration); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
import "../assets/RelativePathImport.sol"; |
||||||
|
import "package/NodeModulesImport.sol"; |
||||||
|
|
||||||
|
contract UsesImports is RelativePathImport, NodeModulesImport { |
||||||
|
|
||||||
|
constructor() public {} |
||||||
|
|
||||||
|
function wrapsRelativePathMethod() public { |
||||||
|
isRelativePathMethod(); |
||||||
|
} |
||||||
|
|
||||||
|
function wrapsNodeModulesMethod() public { |
||||||
|
isNodeModulesMethod(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
const Migrations = artifacts.require("Migrations"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(Migrations); |
||||||
|
}; |
10
test/integration/projects/import-paths/node_modules/package/NodeModulesImport.sol
generated
vendored
10
test/integration/projects/import-paths/node_modules/package/NodeModulesImport.sol
generated
vendored
@ -0,0 +1,10 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
contract NodeModulesImport { |
||||||
|
uint x; |
||||||
|
constructor() public {} |
||||||
|
|
||||||
|
function isNodeModulesMethod() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
var UsesImports = artifacts.require("UsesImports"); |
||||||
|
|
||||||
|
contract("UsesImports", function(accounts) { |
||||||
|
let instance; |
||||||
|
|
||||||
|
before(async () => instance = await UsesImports.new()); |
||||||
|
|
||||||
|
it('uses a method from a relative import', async () => { |
||||||
|
await instance.wrapsRelativePathMethod(); |
||||||
|
}) |
||||||
|
|
||||||
|
it('uses an import from node_modules', async () => { |
||||||
|
await instance.wrapsNodeModulesMethod(); |
||||||
|
}) |
||||||
|
|
||||||
|
}); |
@ -0,0 +1,99 @@ |
|||||||
|
/** |
||||||
|
* Use this file to configure your truffle project. It's seeded with some |
||||||
|
* common settings for different networks and features like migrations, |
||||||
|
* compilation and testing. Uncomment the ones you need or modify |
||||||
|
* them to suit your project as necessary. |
||||||
|
* |
||||||
|
* More information about configuration can be found at: |
||||||
|
* |
||||||
|
* truffleframework.com/docs/advanced/configuration |
||||||
|
* |
||||||
|
* To deploy via Infura you'll need a wallet provider (like truffle-hdwallet-provider) |
||||||
|
* to sign your transactions before they're sent to a remote public node. Infura accounts |
||||||
|
* are available for free at: infura.io/register. |
||||||
|
* |
||||||
|
* You'll also need a mnemonic - the twelve word phrase the wallet uses to generate |
||||||
|
* public/private key pairs. If you're publishing your code to GitHub make sure you load this |
||||||
|
* phrase from a file you've .gitignored so it doesn't accidentally become public. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
// const HDWalletProvider = require('truffle-hdwallet-provider');
|
||||||
|
// const infuraKey = "fj4jll3k.....";
|
||||||
|
//
|
||||||
|
// const fs = require('fs');
|
||||||
|
// const mnemonic = fs.readFileSync(".secret").toString().trim();
|
||||||
|
|
||||||
|
module.exports = { |
||||||
|
/** |
||||||
|
* Networks define how you connect to your ethereum client and let you set the |
||||||
|
* defaults web3 uses to send transactions. If you don't specify one truffle |
||||||
|
* will spin up a development blockchain for you on port 9545 when you |
||||||
|
* run `develop` or `test`. You can ask a truffle command to use a specific |
||||||
|
* network from the command line, e.g |
||||||
|
* |
||||||
|
* $ truffle test --network <network-name> |
||||||
|
*/ |
||||||
|
|
||||||
|
networks: { |
||||||
|
// Useful for testing. The `development` name is special - truffle uses it by default
|
||||||
|
// if it's defined here and no other network is specified at the command line.
|
||||||
|
// You should run a client (like ganache-cli, geth or parity) in a separate terminal
|
||||||
|
// tab if you use this network and you must also set the `host`, `port` and `network_id`
|
||||||
|
// options below to some value.
|
||||||
|
//
|
||||||
|
// development: {
|
||||||
|
// host: "127.0.0.1", // Localhost (default: none)
|
||||||
|
// port: 8545, // Standard Ethereum port (default: none)
|
||||||
|
// network_id: "*", // Any network (default: none)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Another network with more advanced options...
|
||||||
|
// advanced: {
|
||||||
|
// port: 8777, // Custom port
|
||||||
|
// network_id: 1342, // Custom network
|
||||||
|
// gas: 8500000, // Gas sent with each transaction (default: ~6700000)
|
||||||
|
// gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei)
|
||||||
|
// from: <address>, // Account to send txs from (default: accounts[0])
|
||||||
|
// websockets: true // Enable EventEmitter interface for web3 (default: false)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for deploying to a public network.
|
||||||
|
// NB: It's important to wrap the provider as a function.
|
||||||
|
// ropsten: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
|
||||||
|
// network_id: 3, // Ropsten's id
|
||||||
|
// gas: 5500000, // Ropsten has a lower block limit than mainnet
|
||||||
|
// confirmations: 2, // # of confs to wait between deployments. (default: 0)
|
||||||
|
// timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
|
||||||
|
// skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for private networks
|
||||||
|
// private: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://network.io`),
|
||||||
|
// network_id: 2111, // This network is yours, in the cloud.
|
||||||
|
// production: true // Treats this network as if it was a public net. (default: false)
|
||||||
|
// }
|
||||||
|
}, |
||||||
|
|
||||||
|
// Set default mocha options here, use special reporters etc.
|
||||||
|
mocha: { |
||||||
|
// timeout: 100000
|
||||||
|
}, |
||||||
|
|
||||||
|
// Configure your compilers
|
||||||
|
compilers: { |
||||||
|
solc: { |
||||||
|
// version: "0.5.1", // Fetch exact version from solc-bin (default: truffle's version)
|
||||||
|
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
|
||||||
|
// settings: { // See the solidity docs for advice about optimization and evmVersion
|
||||||
|
// optimizer: {
|
||||||
|
// enabled: false,
|
||||||
|
// runs: 200
|
||||||
|
// },
|
||||||
|
// evmVersion: "byzantium"
|
||||||
|
// }
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
module.exports = { |
||||||
|
silent: process.env.SILENT ? true : false, |
||||||
|
}; |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity ^0.5.0; |
||||||
|
|
||||||
|
|
||||||
|
contract ContractA { |
||||||
|
uint x; |
||||||
|
constructor() public { |
||||||
|
} |
||||||
|
|
||||||
|
function sendFn() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
|
||||||
|
function callFn() public pure returns (uint){ |
||||||
|
uint y = 5; |
||||||
|
return y; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity ^0.5.0; |
||||||
|
|
||||||
|
|
||||||
|
contract ContractB { |
||||||
|
uint x; |
||||||
|
constructor() public { |
||||||
|
} |
||||||
|
|
||||||
|
function sendFn() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
|
||||||
|
function callFn() public pure returns (uint){ |
||||||
|
uint y = 5; |
||||||
|
return y; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity ^0.5.0; |
||||||
|
|
||||||
|
|
||||||
|
contract ContractC { |
||||||
|
uint x; |
||||||
|
constructor() public { |
||||||
|
} |
||||||
|
|
||||||
|
function sendFn() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
|
||||||
|
function callFn() public pure returns (uint){ |
||||||
|
uint y = 5; |
||||||
|
return y; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
contract Migrations { |
||||||
|
address public owner; |
||||||
|
uint public last_completed_migration; |
||||||
|
|
||||||
|
constructor() public { |
||||||
|
owner = msg.sender; |
||||||
|
} |
||||||
|
|
||||||
|
modifier restricted() { |
||||||
|
if (msg.sender == owner) _; |
||||||
|
} |
||||||
|
|
||||||
|
function setCompleted(uint completed) public restricted { |
||||||
|
last_completed_migration = completed; |
||||||
|
} |
||||||
|
|
||||||
|
function upgrade(address new_address) public restricted { |
||||||
|
Migrations upgraded = Migrations(new_address); |
||||||
|
upgraded.setCompleted(last_completed_migration); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
const Migrations = artifacts.require("Migrations"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(Migrations); |
||||||
|
}; |
@ -0,0 +1,5 @@ |
|||||||
|
const ContractA = artifacts.require("ContractA"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(ContractA); |
||||||
|
}; |
@ -0,0 +1,5 @@ |
|||||||
|
const ContractB = artifacts.require("ContractB"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(ContractB); |
||||||
|
}; |
@ -0,0 +1,5 @@ |
|||||||
|
const ContractC = artifacts.require("ContractC"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(ContractC); |
||||||
|
}; |
@ -0,0 +1,15 @@ |
|||||||
|
const ContractA = artifacts.require("ContractA"); |
||||||
|
|
||||||
|
contract("contracta", function(accounts) { |
||||||
|
let instance; |
||||||
|
|
||||||
|
before(async () => instance = await ContractA.deployed()) |
||||||
|
|
||||||
|
it('sends', async function(){ |
||||||
|
await instance.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('calls', async function(){ |
||||||
|
await instance.callFn(); |
||||||
|
}) |
||||||
|
}); |
@ -0,0 +1,15 @@ |
|||||||
|
const ContractB = artifacts.require("ContractB"); |
||||||
|
|
||||||
|
contract("contractB", function(accounts) { |
||||||
|
let instance; |
||||||
|
|
||||||
|
before(async () => instance = await ContractB.deployed()) |
||||||
|
|
||||||
|
it('sends', async function(){ |
||||||
|
await instance.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('calls', async function(){ |
||||||
|
await instance.callFn(); |
||||||
|
}) |
||||||
|
}); |
@ -0,0 +1,20 @@ |
|||||||
|
const ContractC = artifacts.require("ContractC"); |
||||||
|
|
||||||
|
contract("contractc", function(accounts) { |
||||||
|
let instance; |
||||||
|
|
||||||
|
before(async () => instance = await ContractC.deployed()) |
||||||
|
|
||||||
|
it('sends', async function(){ |
||||||
|
await instance.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('calls', async function(){ |
||||||
|
await instance.callFn(); |
||||||
|
}) |
||||||
|
|
||||||
|
it('sends', async function(){ |
||||||
|
await instance.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
}); |
@ -0,0 +1,99 @@ |
|||||||
|
/** |
||||||
|
* Use this file to configure your truffle project. It's seeded with some |
||||||
|
* common settings for different networks and features like migrations, |
||||||
|
* compilation and testing. Uncomment the ones you need or modify |
||||||
|
* them to suit your project as necessary. |
||||||
|
* |
||||||
|
* More information about configuration can be found at: |
||||||
|
* |
||||||
|
* truffleframework.com/docs/advanced/configuration |
||||||
|
* |
||||||
|
* To deploy via Infura you'll need a wallet provider (like truffle-hdwallet-provider) |
||||||
|
* to sign your transactions before they're sent to a remote public node. Infura accounts |
||||||
|
* are available for free at: infura.io/register. |
||||||
|
* |
||||||
|
* You'll also need a mnemonic - the twelve word phrase the wallet uses to generate |
||||||
|
* public/private key pairs. If you're publishing your code to GitHub make sure you load this |
||||||
|
* phrase from a file you've .gitignored so it doesn't accidentally become public. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
// const HDWalletProvider = require('truffle-hdwallet-provider');
|
||||||
|
// const infuraKey = "fj4jll3k.....";
|
||||||
|
//
|
||||||
|
// const fs = require('fs');
|
||||||
|
// const mnemonic = fs.readFileSync(".secret").toString().trim();
|
||||||
|
|
||||||
|
module.exports = { |
||||||
|
/** |
||||||
|
* Networks define how you connect to your ethereum client and let you set the |
||||||
|
* defaults web3 uses to send transactions. If you don't specify one truffle |
||||||
|
* will spin up a development blockchain for you on port 9545 when you |
||||||
|
* run `develop` or `test`. You can ask a truffle command to use a specific |
||||||
|
* network from the command line, e.g |
||||||
|
* |
||||||
|
* $ truffle test --network <network-name> |
||||||
|
*/ |
||||||
|
|
||||||
|
networks: { |
||||||
|
// Useful for testing. The `development` name is special - truffle uses it by default
|
||||||
|
// if it's defined here and no other network is specified at the command line.
|
||||||
|
// You should run a client (like ganache-cli, geth or parity) in a separate terminal
|
||||||
|
// tab if you use this network and you must also set the `host`, `port` and `network_id`
|
||||||
|
// options below to some value.
|
||||||
|
//
|
||||||
|
// development: {
|
||||||
|
// host: "127.0.0.1", // Localhost (default: none)
|
||||||
|
// port: 8545, // Standard Ethereum port (default: none)
|
||||||
|
// network_id: "*", // Any network (default: none)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Another network with more advanced options...
|
||||||
|
// advanced: {
|
||||||
|
// port: 8777, // Custom port
|
||||||
|
// network_id: 1342, // Custom network
|
||||||
|
// gas: 8500000, // Gas sent with each transaction (default: ~6700000)
|
||||||
|
// gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei)
|
||||||
|
// from: <address>, // Account to send txs from (default: accounts[0])
|
||||||
|
// websockets: true // Enable EventEmitter interface for web3 (default: false)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for deploying to a public network.
|
||||||
|
// NB: It's important to wrap the provider as a function.
|
||||||
|
// ropsten: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
|
||||||
|
// network_id: 3, // Ropsten's id
|
||||||
|
// gas: 5500000, // Ropsten has a lower block limit than mainnet
|
||||||
|
// confirmations: 2, // # of confs to wait between deployments. (default: 0)
|
||||||
|
// timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
|
||||||
|
// skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for private networks
|
||||||
|
// private: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://network.io`),
|
||||||
|
// network_id: 2111, // This network is yours, in the cloud.
|
||||||
|
// production: true // Treats this network as if it was a public net. (default: false)
|
||||||
|
// }
|
||||||
|
}, |
||||||
|
|
||||||
|
// Set default mocha options here, use special reporters etc.
|
||||||
|
mocha: { |
||||||
|
// timeout: 100000
|
||||||
|
}, |
||||||
|
|
||||||
|
// Configure your compilers
|
||||||
|
compilers: { |
||||||
|
solc: { |
||||||
|
// version: "0.5.1", // Fetch exact version from solc-bin (default: truffle's version)
|
||||||
|
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
|
||||||
|
// settings: { // See the solidity docs for advice about optimization and evmVersion
|
||||||
|
// optimizer: {
|
||||||
|
// enabled: false,
|
||||||
|
// runs: 200
|
||||||
|
// },
|
||||||
|
// evmVersion: "byzantium"
|
||||||
|
// }
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,4 @@ |
|||||||
|
module.exports = { |
||||||
|
silent: process.env.SILENT ? true : false, |
||||||
|
skipFiles: ['skipped-folder'] |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity ^0.5.0; |
||||||
|
|
||||||
|
|
||||||
|
contract ContractA { |
||||||
|
uint x; |
||||||
|
constructor() public { |
||||||
|
} |
||||||
|
|
||||||
|
function sendFn() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
|
||||||
|
function callFn() public pure returns (uint){ |
||||||
|
uint y = 5; |
||||||
|
return y; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
pragma solidity >=0.4.21 <0.6.0; |
||||||
|
|
||||||
|
contract Migrations { |
||||||
|
address public owner; |
||||||
|
uint public last_completed_migration; |
||||||
|
|
||||||
|
constructor() public { |
||||||
|
owner = msg.sender; |
||||||
|
} |
||||||
|
|
||||||
|
modifier restricted() { |
||||||
|
if (msg.sender == owner) _; |
||||||
|
} |
||||||
|
|
||||||
|
function setCompleted(uint completed) public restricted { |
||||||
|
last_completed_migration = completed; |
||||||
|
} |
||||||
|
|
||||||
|
function upgrade(address new_address) public restricted { |
||||||
|
Migrations upgraded = Migrations(new_address); |
||||||
|
upgraded.setCompleted(last_completed_migration); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
pragma solidity ^0.5.0; |
||||||
|
|
||||||
|
|
||||||
|
contract ContractB { |
||||||
|
uint x; |
||||||
|
constructor() public { |
||||||
|
} |
||||||
|
|
||||||
|
function sendFn() public { |
||||||
|
x = 5; |
||||||
|
} |
||||||
|
|
||||||
|
function callFn() public pure returns (uint){ |
||||||
|
uint y = 5; |
||||||
|
return y; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
const Migrations = artifacts.require("Migrations"); |
||||||
|
|
||||||
|
module.exports = function(deployer) { |
||||||
|
deployer.deploy(Migrations); |
||||||
|
}; |
@ -0,0 +1,29 @@ |
|||||||
|
const ContractA = artifacts.require("ContractA"); |
||||||
|
const ContractB = artifacts.require("ContractB"); |
||||||
|
|
||||||
|
contract("contracts", function(accounts) { |
||||||
|
let instanceA; |
||||||
|
let instanceB; |
||||||
|
|
||||||
|
before(async () => { |
||||||
|
instanceA = await ContractA.new(); |
||||||
|
instanceB = await ContractB.new(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('A sends', async function(){ |
||||||
|
await instanceA.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('A calls', async function(){ |
||||||
|
await instanceA.callFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('B sends', async function(){ |
||||||
|
await instanceB.sendFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('B calls', async function(){ |
||||||
|
await instanceB.callFn(); |
||||||
|
}); |
||||||
|
|
||||||
|
}); |
@ -0,0 +1,99 @@ |
|||||||
|
/** |
||||||
|
* Use this file to configure your truffle project. It's seeded with some |
||||||
|
* common settings for different networks and features like migrations, |
||||||
|
* compilation and testing. Uncomment the ones you need or modify |
||||||
|
* them to suit your project as necessary. |
||||||
|
* |
||||||
|
* More information about configuration can be found at: |
||||||
|
* |
||||||
|
* truffleframework.com/docs/advanced/configuration |
||||||
|
* |
||||||
|
* To deploy via Infura you'll need a wallet provider (like truffle-hdwallet-provider) |
||||||
|
* to sign your transactions before they're sent to a remote public node. Infura accounts |
||||||
|
* are available for free at: infura.io/register. |
||||||
|
* |
||||||
|
* You'll also need a mnemonic - the twelve word phrase the wallet uses to generate |
||||||
|
* public/private key pairs. If you're publishing your code to GitHub make sure you load this |
||||||
|
* phrase from a file you've .gitignored so it doesn't accidentally become public. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
// const HDWalletProvider = require('truffle-hdwallet-provider');
|
||||||
|
// const infuraKey = "fj4jll3k.....";
|
||||||
|
//
|
||||||
|
// const fs = require('fs');
|
||||||
|
// const mnemonic = fs.readFileSync(".secret").toString().trim();
|
||||||
|
|
||||||
|
module.exports = { |
||||||
|
/** |
||||||
|
* Networks define how you connect to your ethereum client and let you set the |
||||||
|
* defaults web3 uses to send transactions. If you don't specify one truffle |
||||||
|
* will spin up a development blockchain for you on port 9545 when you |
||||||
|
* run `develop` or `test`. You can ask a truffle command to use a specific |
||||||
|
* network from the command line, e.g |
||||||
|
* |
||||||
|
* $ truffle test --network <network-name> |
||||||
|
*/ |
||||||
|
|
||||||
|
networks: { |
||||||
|
// Useful for testing. The `development` name is special - truffle uses it by default
|
||||||
|
// if it's defined here and no other network is specified at the command line.
|
||||||
|
// You should run a client (like ganache-cli, geth or parity) in a separate terminal
|
||||||
|
// tab if you use this network and you must also set the `host`, `port` and `network_id`
|
||||||
|
// options below to some value.
|
||||||
|
//
|
||||||
|
// development: {
|
||||||
|
// host: "127.0.0.1", // Localhost (default: none)
|
||||||
|
// port: 8545, // Standard Ethereum port (default: none)
|
||||||
|
// network_id: "*", // Any network (default: none)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Another network with more advanced options...
|
||||||
|
// advanced: {
|
||||||
|
// port: 8777, // Custom port
|
||||||
|
// network_id: 1342, // Custom network
|
||||||
|
// gas: 8500000, // Gas sent with each transaction (default: ~6700000)
|
||||||
|
// gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei)
|
||||||
|
// from: <address>, // Account to send txs from (default: accounts[0])
|
||||||
|
// websockets: true // Enable EventEmitter interface for web3 (default: false)
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for deploying to a public network.
|
||||||
|
// NB: It's important to wrap the provider as a function.
|
||||||
|
// ropsten: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
|
||||||
|
// network_id: 3, // Ropsten's id
|
||||||
|
// gas: 5500000, // Ropsten has a lower block limit than mainnet
|
||||||
|
// confirmations: 2, // # of confs to wait between deployments. (default: 0)
|
||||||
|
// timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
|
||||||
|
// skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Useful for private networks
|
||||||
|
// private: {
|
||||||
|
// provider: () => new HDWalletProvider(mnemonic, `https://network.io`),
|
||||||
|
// network_id: 2111, // This network is yours, in the cloud.
|
||||||
|
// production: true // Treats this network as if it was a public net. (default: false)
|
||||||
|
// }
|
||||||
|
}, |
||||||
|
|
||||||
|
// Set default mocha options here, use special reporters etc.
|
||||||
|
mocha: { |
||||||
|
// timeout: 100000
|
||||||
|
}, |
||||||
|
|
||||||
|
// Configure your compilers
|
||||||
|
compilers: { |
||||||
|
solc: { |
||||||
|
// version: "0.5.1", // Fetch exact version from solc-bin (default: truffle's version)
|
||||||
|
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
|
||||||
|
// settings: { // See the solidity docs for advice about optimization and evmVersion
|
||||||
|
// optimizer: {
|
||||||
|
// enabled: false,
|
||||||
|
// runs: 200
|
||||||
|
// },
|
||||||
|
// evmVersion: "byzantium"
|
||||||
|
// }
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue