From 7753a2250fd55d3e2c9ed07afba6bf07410fd697 Mon Sep 17 00:00:00 2001
From: Shawn Tabrizi <shawntabrizi@gmail.com>
Date: Mon, 30 Nov 2020 04:57:15 -0800
Subject: [PATCH] `sudo_as` should return a result (#7620)

---
 substrate/frame/sudo/src/lib.rs   | 12 +++---------
 substrate/frame/sudo/src/tests.rs |  2 +-
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/substrate/frame/sudo/src/lib.rs b/substrate/frame/sudo/src/lib.rs
index 0d21e443266..7629355d98d 100644
--- a/substrate/frame/sudo/src/lib.rs
+++ b/substrate/frame/sudo/src/lib.rs
@@ -214,15 +214,9 @@ decl_module! {
 
 			let who = T::Lookup::lookup(who)?;
 
-			let res = match call.dispatch_bypass_filter(frame_system::RawOrigin::Signed(who).into()) {
-				Ok(_) => true,
-				Err(e) => {
-					sp_runtime::print(e);
-					false
-				}
-			};
+			let res = call.dispatch_bypass_filter(frame_system::RawOrigin::Signed(who).into());
 
-			Self::deposit_event(RawEvent::SudoAsDone(res));
+			Self::deposit_event(RawEvent::SudoAsDone(res.map(|_| ()).map_err(|e| e.error)));
 			// Sudo user does not pay a fee.
 			Ok(Pays::No.into())
 		}
@@ -236,7 +230,7 @@ decl_event!(
 		/// The \[sudoer\] just switched identity; the old key is supplied.
 		KeyChanged(AccountId),
 		/// A sudo just took place. \[result\]
-		SudoAsDone(bool),
+		SudoAsDone(DispatchResult),
 	}
 );
 
diff --git a/substrate/frame/sudo/src/tests.rs b/substrate/frame/sudo/src/tests.rs
index cba1e1cf605..03ce100c3a4 100644
--- a/substrate/frame/sudo/src/tests.rs
+++ b/substrate/frame/sudo/src/tests.rs
@@ -163,7 +163,7 @@ fn sudo_as_emits_events_correctly() {
 		// A non-privileged function will work when passed to `sudo_as` with the root `key`.
 		let call = Box::new(Call::Logger(LoggerCall::non_privileged_log(42, 1)));
 		assert_ok!(Sudo::sudo_as(Origin::signed(1), 2, call));
-		let expected_event = TestEvent::sudo(RawEvent::SudoAsDone(true));
+		let expected_event = TestEvent::sudo(RawEvent::SudoAsDone(Ok(())));
 		assert!(System::events().iter().any(|a| a.event == expected_event));
 	});
 }
-- 
GitLab