Skip to content

Commit

Permalink
πŸ‘¨β€πŸ­ Add a test for single quote in revert message (#767)
Browse files Browse the repository at this point in the history
  • Loading branch information
rzadp committed Jul 28, 2022
1 parent c513a49 commit 382de5b
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
13 changes: 12 additions & 1 deletion waffle-chai/test/contracts/Matchers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ export const MATCHERS_SOURCE = `
function getTuple() external view returns (address, uint96) {
return (0xb319771f2dB6113a745bCDEEa63ec939Bf726207, 9771);
}
function requireFalseWithSingleQuote() external view {
require(false, "asset doesn't have feed");
}
}
`;

Expand Down Expand Up @@ -153,8 +157,15 @@ export const MATCHERS_ABI = [
],
stateMutability: 'view',
type: 'function'
},
{
inputs: [],
name: 'requireFalseWithSingleQuote',
outputs: [],
stateMutability: 'view',
type: 'function'
}
];

// eslint-disable-next-line max-len
export const MATCHERS_BYTECODE = '608060405234801561001057600080fd5b5061074f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063afc874d211610071578063afc874d2146100f5578063b217ca11146100ff578063be3e2e6014610109578063d51033db14610113578063eacf8a5714610132578063fff78f9c1461013c576100b4565b806301236db4146100b95780632f576f20146100c3578063841caf38146100cd5780639817185d146100d7578063a6f34dcb146100e1578063af9b5739146100eb575b600080fd5b6100c1610146565b005b6100cb61019a565b005b6100d561019c565b005b6100df6101c6565b005b6100e96101dc565b005b6100f3610238565b005b6100fd610273565b005b6101076102ae565b005b6101116102c9565b005b61011b61030c565b60405161012992919061042d565b60405180910390f35b61013a61032f565b005b610144610372565b005b600160008082825461015891906104e7565b925050819055506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019190610456565b60405180910390fd5b565b60016000808282546101ae91906104e7565b9250508190555060006101c4576101c36105c2565b5b565b6000808160016101d6919061053d565b90505050565b60016000808282546101ee91906104e7565b925050819055506000610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022d90610476565b60405180910390fd5b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026a90610496565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a590610456565b60405180910390fd5b60016000808282546102c091906104e7565b92505081905550565b600161030a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610301906104b6565b60405180910390fd5b565b60008073b319771f2db6113a745bcdeea63ec939bf72620761262b915091509091565b6000610370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036790610476565b60405180910390fd5b565b6000610381576103806105c2565b5b565b61038c8161056e565b82525050565b600061039f600c836104d6565b91506103aa8261064f565b602082019050919050565b60006103c2600d836104d6565b91506103cd82610678565b602082019050919050565b60006103e56022836104d6565b91506103f0826106a1565b604082019050919050565b60006104086010836104d6565b9150610413826106f0565b602082019050919050565b610427816105aa565b82525050565b60006040820190506104426000830185610383565b61044f602083018461041e565b9392505050565b6000602082019050818103600083015261046f81610392565b9050919050565b6000602082019050818103600083015261048f816103b5565b9050919050565b600060208201905081810360008301526104af816103d8565b9050919050565b600060208201905081810360008301526104cf816103fb565b9050919050565b600082825260208201905092915050565b60006104f2826105a0565b91506104fd836105a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610532576105316105f1565b5b828201905092915050565b6000610548826105a0565b9150610553836105a0565b92508261056357610562610620565b5b828204905092915050565b600061057982610580565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f5265766572742063617573650000000000000000000000000000000000000000600082015250565b7f5265717569726520636175736500000000000000000000000000000000000000600082015250565b7f52657665727420636175736520287769746820636f6d706c657820726561736f60008201527f6e29000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6576657220746f206265207365656e0000000000000000000000000000000060008201525056fea26469706673582212200bc6f3499904916061bbdb525ce93269283b2bd2db9354c695c2134d66ede48364736f6c63430008070033';
export const MATCHERS_BYTECODE = '608060405234801561001057600080fd5b50610823806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063afc874d21161008c578063d51033db11610066578063d51033db1461012e578063d64ee4531461014d578063eacf8a5714610157578063fff78f9c14610161576100cf565b8063afc874d214610110578063b217ca111461011a578063be3e2e6014610124576100cf565b806301236db4146100d45780632f576f20146100de578063841caf38146100e85780639817185d146100f2578063a6f34dcb146100fc578063af9b573914610106575b600080fd5b6100dc61016b565b005b6100e66101bf565b005b6100f06101c1565b005b6100fa6101eb565b005b610104610201565b005b61010e61025d565b005b610118610298565b005b6101226102d3565b005b61012c6102ee565b005b610136610331565b6040516101449291906104b8565b60405180910390f35b610155610354565b005b61015f610397565b005b6101696103da565b005b600160008082825461017d9190610592565b925050819055506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b6906104e1565b60405180910390fd5b565b60016000808282546101d39190610592565b9250508190555060006101e9576101e861066d565b5b565b6000808160016101fb91906105e8565b90505050565b60016000808282546102139190610592565b92505081905550600061025b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025290610501565b60405180910390fd5b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028f90610541565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ca906104e1565b60405180910390fd5b60016000808282546102e59190610592565b92505081905550565b600161032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032690610561565b60405180910390fd5b565b60008073b319771f2db6113a745bcdeea63ec939bf72620761262b915091509091565b6000610395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038c90610521565b60405180910390fd5b565b60006103d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cf90610501565b60405180910390fd5b565b60006103e9576103e861066d565b5b565b6103f481610619565b82525050565b6000610407600c83610581565b9150610412826106fa565b602082019050919050565b600061042a600d83610581565b915061043582610723565b602082019050919050565b600061044d601783610581565b91506104588261074c565b602082019050919050565b6000610470602283610581565b915061047b82610775565b604082019050919050565b6000610493601083610581565b915061049e826107c4565b602082019050919050565b6104b281610655565b82525050565b60006040820190506104cd60008301856103eb565b6104da60208301846104a9565b9392505050565b600060208201905081810360008301526104fa816103fa565b9050919050565b6000602082019050818103600083015261051a8161041d565b9050919050565b6000602082019050818103600083015261053a81610440565b9050919050565b6000602082019050818103600083015261055a81610463565b9050919050565b6000602082019050818103600083015261057a81610486565b9050919050565b600082825260208201905092915050565b600061059d8261064b565b91506105a88361064b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156105dd576105dc61069c565b5b828201905092915050565b60006105f38261064b565b91506105fe8361064b565b92508261060e5761060d6106cb565b5b828204905092915050565b60006106248261062b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f5265766572742063617573650000000000000000000000000000000000000000600082015250565b7f5265717569726520636175736500000000000000000000000000000000000000600082015250565b7f617373657420646f65736e277420686176652066656564000000000000000000600082015250565b7f52657665727420636175736520287769746820636f6d706c657820726561736f60008201527f6e29000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6576657220746f206265207365656e0000000000000000000000000000000060008201525056fea2646970667358221220211ac0b27eb7e77bdda6b606a94c0f573d58fba3257013d527dd369eb984c62a64736f6c63430008070033';
44 changes: 44 additions & 0 deletions waffle-chai/test/matchers/revertedWithTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,50 @@ export const revertedWithTest = (provider: TestProvider, options: RevertedWithTe
).to.be.eventually.rejected;
});

it('Revert with single qoute in message', async () => {
await expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'t have feed');
await expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'t have feed');

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('blablabla\'t have feed')
).to.be.eventually.rejected;

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'blablabla')
).to.be.eventually.rejected;

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'blablabla')
).to.be.eventually.rejected;
});

it('Catches wrong message with single quote in it', async () => {
await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('blablabla\'t have feed')
).to.be.eventually.rejected;

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('blablabla\'t have feed')
).to.be.eventually.rejected;

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'blablabla')
).to.be.eventually.rejected;

await expect(
expect(matchers.requireFalseWithSingleQuote())
.to.be.revertedWith('asset doesn\'blablabla')
).to.be.eventually.rejected;
});

if (panicCodes) {
it('Handle panic error', async () => {
let oneOrTheOtherPassing = false;
Expand Down

0 comments on commit 382de5b

Please sign in to comment.