From dfc0d1bc8379ad63fe41b92b99157d2deca4df6c Mon Sep 17 00:00:00 2001
From: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Date: Thu, 31 Aug 2023 12:48:39 +0200
Subject: [PATCH] Remove `substrate_test_utils::test` (#1321)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Directly use tokio::test

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove old code

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Delete substrate-test-utils-test-crate

Also not needed anymore.

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Bastian Köcher <git@kchr.de>
---
 Cargo.lock                                    | 20 -----
 Cargo.toml                                    |  2 -
 polkadot/node/metrics/src/tests.rs            |  2 +-
 .../node/test/service/tests/build-blocks.rs   |  2 +-
 .../node/test/service/tests/call-function.rs  |  2 +-
 .../adder/collator/tests/integration.rs       |  2 +-
 .../undying/collator/tests/integration.rs     |  2 +-
 substrate/test-utils/Cargo.toml               |  1 -
 substrate/test-utils/derive/Cargo.toml        | 19 -----
 substrate/test-utils/derive/src/lib.rs        | 73 -------------------
 substrate/test-utils/src/lib.rs               | 20 -----
 substrate/test-utils/test-crate/Cargo.toml    | 17 -----
 substrate/test-utils/test-crate/src/main.rs   | 25 -------
 substrate/test-utils/tests/basic.rs           | 49 -------------
 substrate/test-utils/tests/ui.rs              | 23 ------
 .../tests/ui/too-many-func-parameters.rs      | 24 ------
 .../tests/ui/too-many-func-parameters.stderr  |  5 --
 17 files changed, 5 insertions(+), 283 deletions(-)
 delete mode 100644 substrate/test-utils/derive/Cargo.toml
 delete mode 100644 substrate/test-utils/derive/src/lib.rs
 delete mode 100644 substrate/test-utils/test-crate/Cargo.toml
 delete mode 100644 substrate/test-utils/test-crate/src/main.rs
 delete mode 100644 substrate/test-utils/tests/basic.rs
 delete mode 100644 substrate/test-utils/tests/ui.rs
 delete mode 100644 substrate/test-utils/tests/ui/too-many-func-parameters.rs
 delete mode 100644 substrate/test-utils/tests/ui/too-many-func-parameters.stderr

diff --git a/Cargo.lock b/Cargo.lock
index 74034bab663..a57f6d69826 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -18321,30 +18321,10 @@ version = "4.0.0-dev"
 dependencies = [
  "futures",
  "sc-service",
- "substrate-test-utils-derive",
  "tokio",
  "trybuild",
 ]
 
-[[package]]
-name = "substrate-test-utils-derive"
-version = "0.10.0-dev"
-dependencies = [
- "proc-macro-crate",
- "proc-macro2",
- "quote",
- "syn 2.0.29",
-]
-
-[[package]]
-name = "substrate-test-utils-test-crate"
-version = "0.1.0"
-dependencies = [
- "sc-service",
- "substrate-test-utils",
- "tokio",
-]
-
 [[package]]
 name = "substrate-wasm-builder"
 version = "5.0.0-dev"
diff --git a/Cargo.toml b/Cargo.toml
index 48081ad14a3..82b196e7a47 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -432,11 +432,9 @@ members = [
 	"substrate/test-utils",
 	"substrate/test-utils/cli",
 	"substrate/test-utils/client",
-	"substrate/test-utils/derive",
 	"substrate/test-utils/runtime",
 	"substrate/test-utils/runtime/client",
 	"substrate/test-utils/runtime/transaction-pool",
-	"substrate/test-utils/test-crate",
 	"substrate/utils/binary-merkle-tree",
 	"substrate/utils/build-script-utils",
 	"substrate/utils/fork-tree",
diff --git a/polkadot/node/metrics/src/tests.rs b/polkadot/node/metrics/src/tests.rs
index 68abfeebc12..861080228cd 100644
--- a/polkadot/node/metrics/src/tests.rs
+++ b/polkadot/node/metrics/src/tests.rs
@@ -24,7 +24,7 @@ use std::collections::HashMap;
 
 const DEFAULT_PROMETHEUS_PORT: u16 = 9616;
 
-#[substrate_test_utils::test(flavor = "multi_thread")]
+#[tokio::test(flavor = "multi_thread")]
 async fn runtime_can_publish_metrics() {
 	let mut alice_config =
 		node_config(|| {}, tokio::runtime::Handle::current(), Alice, Vec::new(), true);
diff --git a/polkadot/node/test/service/tests/build-blocks.rs b/polkadot/node/test/service/tests/build-blocks.rs
index b75fed60297..d5c6ab0b5ba 100644
--- a/polkadot/node/test/service/tests/build-blocks.rs
+++ b/polkadot/node/test/service/tests/build-blocks.rs
@@ -18,7 +18,7 @@ use futures::{future, pin_mut, select, FutureExt};
 use polkadot_test_service::*;
 use sp_keyring::Sr25519Keyring;
 
-#[substrate_test_utils::test(flavor = "multi_thread")]
+#[tokio::test(flavor = "multi_thread")]
 async fn ensure_test_service_build_blocks() {
 	let mut builder = sc_cli::LoggerBuilder::new("");
 	builder.with_colors(false);
diff --git a/polkadot/node/test/service/tests/call-function.rs b/polkadot/node/test/service/tests/call-function.rs
index c3baefdb9c9..39d162eb376 100644
--- a/polkadot/node/test/service/tests/call-function.rs
+++ b/polkadot/node/test/service/tests/call-function.rs
@@ -17,7 +17,7 @@
 use polkadot_test_service::*;
 use sp_keyring::Sr25519Keyring::{Alice, Bob, Charlie};
 
-#[substrate_test_utils::test(flavor = "multi_thread")]
+#[tokio::test(flavor = "multi_thread")]
 async fn call_function_actually_work() {
 	let alice_config =
 		node_config(|| {}, tokio::runtime::Handle::current(), Alice, Vec::new(), true);
diff --git a/polkadot/parachain/test-parachains/adder/collator/tests/integration.rs b/polkadot/parachain/test-parachains/adder/collator/tests/integration.rs
index b891b29db59..6b481f961a4 100644
--- a/polkadot/parachain/test-parachains/adder/collator/tests/integration.rs
+++ b/polkadot/parachain/test-parachains/adder/collator/tests/integration.rs
@@ -22,7 +22,7 @@ const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_adder_collator_puppet_worker");
 // If this test is failing, make sure to run all tests with the `real-overseer` feature being
 // enabled.
 
-#[substrate_test_utils::test(flavor = "multi_thread")]
+#[tokio::test(flavor = "multi_thread")]
 async fn collating_using_adder_collator() {
 	use polkadot_primitives::Id as ParaId;
 	use sp_keyring::AccountKeyring::*;
diff --git a/polkadot/parachain/test-parachains/undying/collator/tests/integration.rs b/polkadot/parachain/test-parachains/undying/collator/tests/integration.rs
index 21d174fb06c..a98a7ff6eef 100644
--- a/polkadot/parachain/test-parachains/undying/collator/tests/integration.rs
+++ b/polkadot/parachain/test-parachains/undying/collator/tests/integration.rs
@@ -21,7 +21,7 @@ const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_undying_collator_puppet_worker");
 
 // If this test is failing, make sure to run all tests with the `real-overseer` feature being
 // enabled.
-#[substrate_test_utils::test(flavor = "multi_thread")]
+#[tokio::test(flavor = "multi_thread")]
 async fn collating_using_undying_collator() {
 	use polkadot_primitives::Id as ParaId;
 	use sp_keyring::AccountKeyring::*;
diff --git a/substrate/test-utils/Cargo.toml b/substrate/test-utils/Cargo.toml
index 977d1f69405..31bdc0f663a 100644
--- a/substrate/test-utils/Cargo.toml
+++ b/substrate/test-utils/Cargo.toml
@@ -15,7 +15,6 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 futures = "0.3.16"
 tokio = { version = "1.22.0", features = ["macros", "time"] }
-substrate-test-utils-derive = { path = "derive" }
 
 [dev-dependencies]
 trybuild = { version = "1.0.74", features = [ "diff" ] }
diff --git a/substrate/test-utils/derive/Cargo.toml b/substrate/test-utils/derive/Cargo.toml
deleted file mode 100644
index 8299f6db048..00000000000
--- a/substrate/test-utils/derive/Cargo.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[package]
-name = "substrate-test-utils-derive"
-version = "0.10.0-dev"
-authors.workspace = true
-edition.workspace = true
-license = "Apache-2.0"
-homepage = "https://substrate.io"
-repository.workspace = true
-description = "Substrate test utilities macros"
-publish = false
-
-[dependencies]
-proc-macro-crate = "1.1.3"
-proc-macro2 = "1.0.56"
-quote = "1.0.28"
-syn = { version = "2.0.16", features = ["full"] }
-
-[lib]
-proc-macro = true
diff --git a/substrate/test-utils/derive/src/lib.rs b/substrate/test-utils/derive/src/lib.rs
deleted file mode 100644
index 0291d825e76..00000000000
--- a/substrate/test-utils/derive/src/lib.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-use proc_macro::{Span, TokenStream};
-use proc_macro_crate::{crate_name, FoundCrate};
-use quote::quote;
-
-#[proc_macro_attribute]
-pub fn test(args: TokenStream, item: TokenStream) -> TokenStream {
-	let input = syn::parse_macro_input!(item as syn::ItemFn);
-
-	parse_knobs(input, args.into()).unwrap_or_else(|e| e.to_compile_error().into())
-}
-
-fn parse_knobs(
-	mut input: syn::ItemFn,
-	args: proc_macro2::TokenStream,
-) -> Result<TokenStream, syn::Error> {
-	let sig = &mut input.sig;
-	let body = &input.block;
-	let attrs = &input.attrs;
-	let vis = input.vis;
-
-	if !sig.inputs.is_empty() {
-		return Err(syn::Error::new_spanned(&sig, "No arguments expected for tests."))
-	}
-
-	let crate_name = match crate_name("substrate-test-utils") {
-		Ok(FoundCrate::Itself) => syn::Ident::new("substrate_test_utils", Span::call_site().into()),
-		Ok(FoundCrate::Name(crate_name)) => syn::Ident::new(&crate_name, Span::call_site().into()),
-		Err(e) => return Err(syn::Error::new_spanned(&sig, e)),
-	};
-
-	let header = {
-		quote! {
-			#[#crate_name::tokio::test( #args )]
-		}
-	};
-
-	let result = quote! {
-		#header
-		#(#attrs)*
-		#vis #sig {
-			if #crate_name::tokio::time::timeout(
-				std::time::Duration::from_secs(
-					std::env::var("SUBSTRATE_TEST_TIMEOUT")
-						.ok()
-						.and_then(|x| x.parse().ok())
-						.unwrap_or(600)),
-				async move { #body },
-			).await.is_err() {
-				panic!("The test took too long!");
-			}
-		}
-	};
-
-	Ok(result.into())
-}
diff --git a/substrate/test-utils/src/lib.rs b/substrate/test-utils/src/lib.rs
index 1ad70289368..30472e79b3f 100644
--- a/substrate/test-utils/src/lib.rs
+++ b/substrate/test-utils/src/lib.rs
@@ -17,26 +17,6 @@
 
 //! Test utils
 
-#[doc(hidden)]
-pub use futures;
-/// Marks async function to be executed by an async runtime suitable to test environment.
-///
-/// # Requirements
-///
-/// You must have tokio in the `[dev-dependencies]` of your crate to use this macro.
-///
-/// # Example
-///
-/// ```
-/// #[substrate_test_utils::test]
-/// async fn basic_test() {
-///     assert!(true);
-/// }
-/// ```
-pub use substrate_test_utils_derive::test;
-#[doc(hidden)]
-pub use tokio;
-
 /// Panic when the vectors are different, without taking the order into account.
 ///
 /// # Examples
diff --git a/substrate/test-utils/test-crate/Cargo.toml b/substrate/test-utils/test-crate/Cargo.toml
deleted file mode 100644
index bb68c9f18ed..00000000000
--- a/substrate/test-utils/test-crate/Cargo.toml
+++ /dev/null
@@ -1,17 +0,0 @@
-[package]
-name = "substrate-test-utils-test-crate"
-version = "0.1.0"
-authors.workspace = true
-edition.workspace = true
-license = "Apache-2.0"
-homepage = "https://substrate.io"
-repository.workspace = true
-publish = false
-
-[package.metadata.docs.rs]
-targets = ["x86_64-unknown-linux-gnu"]
-
-[dev-dependencies]
-tokio = { version = "1.22.0", features = ["macros"] }
-sc-service = { path = "../../client/service" }
-test-utils = { package = "substrate-test-utils", path = ".." }
diff --git a/substrate/test-utils/test-crate/src/main.rs b/substrate/test-utils/test-crate/src/main.rs
deleted file mode 100644
index cab4cc6e924..00000000000
--- a/substrate/test-utils/test-crate/src/main.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#[cfg(test)]
-#[test_utils::test]
-async fn basic_test() {
-	assert!(true);
-}
-
-fn main() {}
diff --git a/substrate/test-utils/tests/basic.rs b/substrate/test-utils/tests/basic.rs
deleted file mode 100644
index e8c46b1e837..00000000000
--- a/substrate/test-utils/tests/basic.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#[substrate_test_utils::test]
-async fn basic_test() {
-	assert!(true);
-}
-
-#[substrate_test_utils::test]
-#[should_panic(expected = "boo!")]
-async fn panicking_test() {
-	panic!("boo!");
-}
-
-#[substrate_test_utils::test(flavor = "multi_thread", worker_threads = 1)]
-async fn basic_test_with_args() {
-	assert!(true);
-}
-
-// NOTE: enable this test only after setting SUBSTRATE_TEST_TIMEOUT to a smaller value
-//
-// SUBSTRATE_TEST_TIMEOUT=1 cargo test -- --ignored timeout
-#[substrate_test_utils::test]
-#[should_panic(expected = "test took too long")]
-#[ignore]
-async fn timeout() {
-	tokio::time::sleep(std::time::Duration::from_secs(
-		std::env::var("SUBSTRATE_TEST_TIMEOUT")
-			.expect("env var SUBSTRATE_TEST_TIMEOUT has been provided by the user")
-			.parse::<u64>()
-			.unwrap() + 1,
-	))
-	.await;
-}
diff --git a/substrate/test-utils/tests/ui.rs b/substrate/test-utils/tests/ui.rs
deleted file mode 100644
index baf822bb87a..00000000000
--- a/substrate/test-utils/tests/ui.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#[test]
-fn substrate_test_utils_derive_trybuild() {
-	let t = trybuild::TestCases::new();
-	t.compile_fail("tests/ui/too-many-func-parameters.rs");
-}
diff --git a/substrate/test-utils/tests/ui/too-many-func-parameters.rs b/substrate/test-utils/tests/ui/too-many-func-parameters.rs
deleted file mode 100644
index 0eece5f9e61..00000000000
--- a/substrate/test-utils/tests/ui/too-many-func-parameters.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#[substrate_test_utils::test]
-async fn too_many_func_parameters(_: u32) {
-	assert!(true);
-}
-
-fn main() {}
diff --git a/substrate/test-utils/tests/ui/too-many-func-parameters.stderr b/substrate/test-utils/tests/ui/too-many-func-parameters.stderr
deleted file mode 100644
index 1b1630022e4..00000000000
--- a/substrate/test-utils/tests/ui/too-many-func-parameters.stderr
+++ /dev/null
@@ -1,5 +0,0 @@
-error: No arguments expected for tests.
-  --> $DIR/too-many-func-parameters.rs:20:1
-   |
-20 | async fn too_many_func_parameters(_: u32) {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- 
GitLab