-
Notifications
You must be signed in to change notification settings - Fork 481
Description
Our E2E tests support running either in a sandbox (#[ink_e2e::test(backend(runtime_only))]) or against a node process spawned in the background (just #[ink_e2e::test]). You can read more here.
For our CI we want to test that all contracts in integration-tests/ succeed with either sandboxed or non-sandboxed. That's why we need a script that does this switching for us. Then we can run cargo test --all-features on the integration-tests/ contract's, execute the script, and execute another cargo test run. For this issue, you can just focus on the script though.
If you full-text search the integration-tests/ folder for #[ink_e2e::test you'll get an idea of how the macro is used.
The requirement for this issue is:
- Write a bash script
switch-e2e-backendwhich takes a--manifest-pathto a contract. - Ensure that a contract's E2E tests are switched to the opposite of what a test currently uses. So if it's sandboxed, the test should be switched to non-sandboxed and vice-versa.
- If sandboxed tests are used, the contract's
Cargo.tomlmust containink_e2e = {…, features = ["sandbox"] }. - If the contract does no longer contain sandboxed E2E tests, the
sandboxfeature must be removed from theCargo.toml.
Some test cases:
- #[ink_e2e::test(backend(runtime_only(sandbox = ink_e2e::DefaultSandbox)))]
+ #[ink_e2e::test]-#[ink_e2e::test(environment = crate::EnvironmentWithManyTopics)]
+#[ink_e2e::test(environment = crate::EnvironmentWithManyTopics, backend(runtime_only)]-#[ink_e2e::test(replace_test_attr = "#[quickcheck]", backend(runtime_only))]
+#[ink_e2e::test(replace_test_attr = "#[quickcheck]"]Besides the arguments above, there are more arguments the ink_e2e::test macro can contain. I think it's best to just focus on the backend(…) argument.