From cd8b62095795aa636098fcda10d00138a8867aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20M=C3=A4kel=C3=A4?= Date: Fri, 17 Jan 2020 11:20:27 +0200 Subject: [PATCH 1/2] added check to make sure that locked values is not zero --- packages/cli/src/commands/lockedgold/lock.test.ts | 2 ++ packages/cli/src/commands/lockedgold/lock.ts | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/lockedgold/lock.test.ts b/packages/cli/src/commands/lockedgold/lock.test.ts index 396731cb9ff..45c8cca7adf 100644 --- a/packages/cli/src/commands/lockedgold/lock.test.ts +++ b/packages/cli/src/commands/lockedgold/lock.test.ts @@ -17,6 +17,8 @@ testWithGanache('lockedgold:lock cmd', (web3: Web3) => { await Lock.run(['--from', account, '--value', '100']) await Unlock.run(['--from', account, '--value', '50']) await Lock.run(['--from', account, '--value', '75']) + await Unlock.run(['--from', account, '--value', '50']) + await Lock.run(['--from', account, '--value', '50']) const pendingWithdrawalsTotalValue = await lockedGold.getPendingWithdrawalsTotalValue(account) expect(pendingWithdrawalsTotalValue.toFixed()).toBe('0') }) diff --git a/packages/cli/src/commands/lockedgold/lock.ts b/packages/cli/src/commands/lockedgold/lock.ts index 2c4bea3d429..06c65d5c18d 100644 --- a/packages/cli/src/commands/lockedgold/lock.ts +++ b/packages/cli/src/commands/lockedgold/lock.ts @@ -47,7 +47,9 @@ export default class Lock extends BaseCommand { for (const txo of txos) { await displaySendTx('relock', txo, { from: address }) } - const tx = lockedGold.lock() - await displaySendTx('lock', tx, { value: lockValue.toFixed() }) + if (lockValue.gt(new BigNumber(0))) { + const tx = lockedGold.lock() + await displaySendTx('lock', tx, { value: lockValue.toFixed() }) + } } } From d7004fe61220b4ff56585a5279062d1e31a001cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20M=C3=A4kel=C3=A4?= Date: Fri, 17 Jan 2020 19:49:49 +0200 Subject: [PATCH 2/2] fixing flakiness --- .../protocol/test/governance/governance.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/protocol/test/governance/governance.ts b/packages/protocol/test/governance/governance.ts index 7857044da2c..b8f7850d9a1 100644 --- a/packages/protocol/test/governance/governance.ts +++ b/packages/protocol/test/governance/governance.ts @@ -75,6 +75,15 @@ interface Transaction { // hard coded in ganache const EPOCH = 100 +async function mineToNextEpoch(web3) { + const bn = web3.eth.getBlockNumber() + if (bn % EPOCH < 50) { + await mineBlocks(EPOCH + 20, web3) + } else { + await mineBlocks(EPOCH - 20, web3) + } +} + // TODO(asa): Test dequeueProposalsIfReady // TODO(asa): Dequeue explicitly to make the gas cost of operations more clear contract('Governance', (accounts: string[]) => { @@ -2083,7 +2092,7 @@ contract('Governance', (accounts: string[]) => { describe('when hotfix is passing', () => { beforeEach(async () => { - await mineBlocks(EPOCH, web3) + await mineToNextEpoch(web3) await governance.whitelistHotfix(hotfixHashStr, { from: accounts[2] }) }) @@ -2116,7 +2125,7 @@ contract('Governance', (accounts: string[]) => { it('should succeed for epoch != preparedEpoch', async () => { await governance.prepareHotfix(hotfixHashStr) - await mineBlocks(EPOCH, web3) + await mineToNextEpoch(web3) await governance.prepareHotfix(hotfixHashStr) }) }) @@ -2138,7 +2147,7 @@ contract('Governance', (accounts: string[]) => { }) it('should revert when hotfix not prepared for current epoch', async () => { - await mineBlocks(EPOCH, web3) + await mineToNextEpoch(web3) await governance.approveHotfix(hotfixHashStr, { from: approver }) await assertRevert(executeHotfixTx()) }) @@ -2149,14 +2158,14 @@ contract('Governance', (accounts: string[]) => { await accountsInstance.createAccount({ from: accounts[2] }) await governance.whitelistHotfix(hotfixHashStr, { from: accounts[2] }) await governance.prepareHotfix(hotfixHashStr, { from: accounts[2] }) - await mineBlocks(EPOCH, web3) + await mineToNextEpoch(web3) await assertRevert(executeHotfixTx()) }) describe('when hotfix is approved and prepared for current epoch', () => { beforeEach(async () => { await governance.approveHotfix(hotfixHashStr, { from: approver }) - await mineBlocks(EPOCH, web3) + await mineToNextEpoch(web3) await governance.addValidator(accounts[2]) await accountsInstance.createAccount({ from: accounts[2] }) await governance.whitelistHotfix(hotfixHashStr, { from: accounts[2] })