From 71cee78d8501a3512e45c106c8f447c28f5db1ce Mon Sep 17 00:00:00 2001 From: thiolliere Date: Tue, 20 Aug 2019 20:32:00 +0200 Subject: [PATCH] Fix srml-balance burn implementation (#3443) * tests * fix * bump version --- substrate/srml/balances/src/lib.rs | 8 ++++---- substrate/srml/balances/src/tests.rs | 16 ++++++++++++++++ substrate/srml/treasury/src/lib.rs | 3 +++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/substrate/srml/balances/src/lib.rs b/substrate/srml/balances/src/lib.rs index 1c9a2f7ec3..3f727bfa51 100644 --- a/substrate/srml/balances/src/lib.rs +++ b/substrate/srml/balances/src/lib.rs @@ -824,12 +824,12 @@ where } fn burn(mut amount: Self::Balance) -> Self::PositiveImbalance { - >::mutate(|issued| - issued.checked_sub(&amount).unwrap_or_else(|| { + >::mutate(|issued| { + *issued = issued.checked_sub(&amount).unwrap_or_else(|| { amount = *issued; Zero::zero() - }) - ); + }); + }); PositiveImbalance::new(amount) } diff --git a/substrate/srml/balances/src/tests.rs b/substrate/srml/balances/src/tests.rs index edbb198f34..338513d40d 100644 --- a/substrate/srml/balances/src/tests.rs +++ b/substrate/srml/balances/src/tests.rs @@ -789,3 +789,19 @@ fn signed_extension_take_fees_is_bounded() { } ); } + +#[test] +fn burn_must_work() { + with_externalities( + &mut ExtBuilder::default() + .monied(true) + .build(), + || { + let init_total_issuance = Balances::total_issuance(); + let imbalance = Balances::burn(10); + assert_eq!(Balances::total_issuance(), init_total_issuance - 10); + drop(imbalance); + assert_eq!(Balances::total_issuance(), init_total_issuance); + } + ); +} diff --git a/substrate/srml/treasury/src/lib.rs b/substrate/srml/treasury/src/lib.rs index bef510e2f4..12ef4fc14e 100644 --- a/substrate/srml/treasury/src/lib.rs +++ b/substrate/srml/treasury/src/lib.rs @@ -507,10 +507,13 @@ mod tests { #[test] fn unused_pot_should_diminish() { with_externalities(&mut new_test_ext(), || { + let init_total_issuance = Balances::total_issuance(); Treasury::on_dilution(100, 100); + assert_eq!(Balances::total_issuance(), init_total_issuance + 100); >::on_finalize(2); assert_eq!(Treasury::pot(), 50); + assert_eq!(Balances::total_issuance(), init_total_issuance + 50); }); }