diff --git a/lib/contracts/contracts.js b/lib/contracts/contracts.js index a5b0b40f8..65d723dd7 100644 --- a/lib/contracts/contracts.js +++ b/lib/contracts/contracts.js @@ -263,14 +263,17 @@ class ContractsManager { let className; function getDependencyCount(contractName, cycleDetector) { + if (!self.contracts[contractName]) { + return 0; + } + if (self.contracts[contractName].dependencyCount || self.contracts[contractName].dependencyCount === 0) { + // Already have that count + return self.contracts[contractName].dependencyCount; + } if (!self.contractDependencies[contractName] || !self.contractDependencies[contractName].length) { self.contracts[contractName].dependencyCount = 0; return 0; } - if (self.contracts[contractName].dependencyCount) { - // Already have that count - return self.contracts[contractName].dependencyCount; - } let total = self.contractDependencies[contractName].length; self.contractDependencies[contractName].some(dependencyName => { if (cycleDetector.indexOf(dependencyName) > -1) { diff --git a/lib/tests/test.js b/lib/tests/test.js index 5fb85ccbc..4ef1421fd 100644 --- a/lib/tests/test.js +++ b/lib/tests/test.js @@ -126,6 +126,10 @@ class Test { this.engine.contractsManager.build(() => { self.builtContracts = cloneDeep(self.engine.contractsManager.contracts); + let className; + for (className in self.builtContracts) { + self.builtContracts[className].dependencyCount = null; + } self.compiledContracts = cloneDeep(self.engine.contractsManager.compiledContracts); callback(); }); @@ -214,6 +218,7 @@ class Test { function resetContracts(next) { self.engine.contractsManager.contracts = cloneDeep(self.builtContracts); self.engine.contractsManager.compiledContracts = cloneDeep(self.compiledContracts); + self.engine.contractsManager.contractDependencies = {}; next(); }, function deploy(next) {