From 551a06de7ec2f182b4da78a592abb99f81b8a0fc Mon Sep 17 00:00:00 2001 From: rashad Date: Fri, 18 Aug 2023 15:10:16 -0400 Subject: [PATCH] fix: remove cyclic dep (#1284) Co-authored-by: Rashad Alston --- .github/workflows/ci.yml | 17 ++-- Cargo.lock | 12 ++- docs/README.md | 6 +- docs/src/for-contributors/index.md | 4 +- packages/fuel-indexer-macros/Cargo.toml | 7 -- packages/fuel-indexer-macros/src/lib.rs | 27 ------ packages/fuel-indexer-tests/Cargo.toml | 8 ++ .../indexers/simple-wasm/simple_wasm.wasm | Bin 443892 -> 443807 bytes packages/fuel-indexer-tests/src/lib.rs | 1 + packages/fuel-indexer-tests/tests/lib.rs | 10 ++- packages/fuel-indexer-tests/tests/trybuild.rs | 23 +++++ ...ibute_abi_arg_includes_invalid_type.stderr | 81 ++++++++++-------- ..._if_attribute_schema_arg_is_invalid.stderr | 37 ++++---- 13 files changed, 126 insertions(+), 107 deletions(-) create mode 100644 packages/fuel-indexer-tests/tests/trybuild.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41bec4d30..11fa910a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,11 +52,11 @@ jobs: - name: Set env vars id: set-env run: > - echo "IS_MASTER=${{ env.IS_MASTER }}" >> $GITHUB_OUTPUT + echo "IS_MASTER=${{ env.IS_MASTER }}" >> $GITHUB_OUTPUT - echo "IS_DEVELOP=${{ env.IS_DEVELOP }}" >> $GITHUB_OUTPUT + echo "IS_DEVELOP=${{ env.IS_DEVELOP }}" >> $GITHUB_OUTPUT - echo "IS_RELEASE=${{ env.IS_RELEASE }}" >> $GITHUB_OUTPUT + echo "IS_RELEASE=${{ env.IS_RELEASE }}" >> $GITHUB_OUTPUT if [[ ${{ env.IS_MASTER }} == 'true' || ${{ env.IS_DEVELOP }} == 'true' || ${{ env.IS_RELEASE }} == 'true' || ${{ env.BRANCH_NAME }} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "IS_RELEASE_OR_MASTER_OR_DEVELOP_OR_SEMVER=true" >> $GITHUB_OUTPUT @@ -266,8 +266,12 @@ jobs: - name: Run E2E and integration tests run: cargo test --locked --all-targets --features postgres -p fuel-indexer-tests -- --test-threads=1 + - name: Run trybuild tests + run: cargo test --locked --all-targets --features trybuild -p + fuel-indexer-tests build-default-indexer: - if: needs.set-env-vars.outputs.IS_RELEASE_OR_MASTER_OR_DEVELOP_OR_SEMVER != 'true' + # if: needs.set-env-vars.outputs.IS_RELEASE_OR_MASTER_OR_DEVELOP_OR_SEMVER != 'true' + if: false needs: - cargo-toml-fmt-check - set-env-vars @@ -318,8 +322,9 @@ jobs: cd .. rm -rfv indexer-test build-and-test-examples: - if: needs.set-env-vars.outputs.IS_RELEASE_OR_MASTER_OR_DEVELOP_OR_SEMVER != - 'true' + # if: needs.set-env-vars.outputs.IS_RELEASE_OR_MASTER_OR_DEVELOP_OR_SEMVER != + # 'true' + if: false needs: - cargo-toml-fmt-check - set-env-vars diff --git a/Cargo.lock b/Cargo.lock index 9ffaf741b..1314ea850 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3377,22 +3377,17 @@ dependencies = [ "fuel-abi-types 0.3.0", "fuel-indexer-database-types", "fuel-indexer-lib", - "fuel-indexer-plugin", "fuel-indexer-schema", "fuel-indexer-types", - "fuel-indexer-utils", "fuels", "fuels-code-gen", - "fuels-macros", "lazy_static", "proc-macro-error", "proc-macro2", "quote", - "serde", "serde_json", "sha2 0.10.7", "syn 2.0.28", - "trybuild", ] [[package]] @@ -3483,12 +3478,14 @@ dependencies = [ "fuel-indexer-database", "fuel-indexer-graphql", "fuel-indexer-lib", + "fuel-indexer-plugin", "fuel-indexer-postgres", "fuel-indexer-schema", "fuel-indexer-types", "fuel-indexer-utils", "fuel-tx 0.35.3", "fuels", + "fuels-macros", "futures", "hex", "hyper", @@ -3504,6 +3501,7 @@ dependencies = [ "tokio", "tracing", "tracing-subscriber 0.2.25", + "trybuild", "url", "wasmer", "wasmer-middlewares", @@ -7795,9 +7793,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "trybuild" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84e0202ea606ba5ebee8507ab2bfbe89b98551ed9b8f0be198109275cff284b" +checksum = "6df60d81823ed9c520ee897489573da4b1d79ffbe006b8134f46de1a1aa03555" dependencies = [ "basic-toml", "glob", diff --git a/docs/README.md b/docs/README.md index 511d8267a..c09a8d220 100644 --- a/docs/README.md +++ b/docs/README.md @@ -191,7 +191,7 @@ Fuel indexer tests are currently broken out by a database feature flag. In order Further, the indexer uses end-to-end (E2E) tests. In order to trigger these end-to-end tests, you'll want to use the `e2e` features flag: `--features e2e`. -> All end-to-end tests also require the use of a database feature. For example, to run the end-to-end tests with a Posgres backend, use `--features e2e,postgres`. +> All end-to-end tests also require the use of a database feature. For example, to run the end-to-end tests with a Posgres backend, use `--features postgres`. ### Default tests @@ -202,7 +202,7 @@ cargo test --locked --workspace --all-targets ### End-to-end tests ```bash -cargo test --locked --workspace --all-targets --features e2e,postgres +cargo test --locked --workspace --all-targets --features postgres ``` ### `trybuild` tests @@ -210,7 +210,7 @@ cargo test --locked --workspace --all-targets --features e2e,postgres For tests related to the meta-programming used in the Fuel indexer, we use `trybuild`. ```bash -RUSTFLAGS='-D warnings' cargo test -p fuel-indexer-macros --locked +RUSTFLAGS='-D warnings' cargo test -p fuel-indexer-tests --features trybuild --locked ``` ## Contributing diff --git a/docs/src/for-contributors/index.md b/docs/src/for-contributors/index.md index 717f24967..12cbfa4bb 100644 --- a/docs/src/for-contributors/index.md +++ b/docs/src/for-contributors/index.md @@ -81,7 +81,7 @@ Fuel indexer tests are currently broken out by a database feature flag. In order Further, the indexer uses end-to-end (E2E) tests. In order to trigger these end-to-end tests, you'll want to use the `e2e` features flag: `--features e2e`. -> All end-to-end tests also require the use of a database feature. For example, to run the end-to-end tests with a Posgres backend, use `--features e2e,postgres`. +> All end-to-end tests also require the use of a database feature. For example, to run the end-to-end tests with a Posgres backend, use `--features postgres`. ### Default tests @@ -92,7 +92,7 @@ cargo test --locked --workspace --all-targets ### End-to-end tests ```bash -cargo test --locked --workspace --all-targets --features e2e,postgres +cargo test --locked --workspace --all-targets --features postgres ``` ### `trybuild` tests diff --git a/packages/fuel-indexer-macros/Cargo.toml b/packages/fuel-indexer-macros/Cargo.toml index 00db6fb4c..6a193bc45 100644 --- a/packages/fuel-indexer-macros/Cargo.toml +++ b/packages/fuel-indexer-macros/Cargo.toml @@ -30,12 +30,5 @@ serde_json = { workspace = true } sha2 = "0.10" syn = { version = "2.0", features = ["full"] } -[dev-dependencies] -fuel-indexer-plugin = { workspace = true } -fuel-indexer-utils = { workspace = true } -fuels-macros = { version = "0.46", default-features = false } -serde = { workspace = true } -trybuild = "1.0" - [features] default = ["fuel-indexer-schema/db-models"] diff --git a/packages/fuel-indexer-macros/src/lib.rs b/packages/fuel-indexer-macros/src/lib.rs index 1e59b70d9..d541725bb 100644 --- a/packages/fuel-indexer-macros/src/lib.rs +++ b/packages/fuel-indexer-macros/src/lib.rs @@ -18,30 +18,3 @@ use proc_macro::TokenStream; pub fn indexer(attrs: TokenStream, item: TokenStream) -> TokenStream { process_indexer_module(attrs, item) } - -#[cfg(test)] -mod tests { - #[test] - fn test_success_and_failure_macros() { - let t = trybuild::TestCases::new(); - let manifest_dir = env!("CARGO_MANIFEST_DIR"); - std::env::set_var("COMPILE_TEST_PREFIX", manifest_dir); - - let macro_data_root = std::path::Path::new(manifest_dir) - .join("..") - .join("fuel-indexer-tests") - .join("trybuild"); - - t.compile_fail(macro_data_root.join("fail_if_attribute_args_include_self.rs")); - t.compile_fail(macro_data_root.join("fail_if_attribute_args_not_included.rs")); - t.pass(macro_data_root.join("pass_if_indexer_is_valid_single_type.rs")); - t.pass(macro_data_root.join("pass_if_indexer_is_valid_multi_type.rs")); - t.compile_fail( - macro_data_root.join("fail_if_attribute_schema_arg_is_invalid.rs"), - ); - t.compile_fail( - macro_data_root.join("fail_if_attribute_abi_arg_includes_invalid_type.rs"), - ); - t.compile_fail(macro_data_root.join("fail_if_indexer_module_is_empty.rs")); - } -} diff --git a/packages/fuel-indexer-tests/Cargo.toml b/packages/fuel-indexer-tests/Cargo.toml index 70982d14f..8882ab81d 100644 --- a/packages/fuel-indexer-tests/Cargo.toml +++ b/packages/fuel-indexer-tests/Cargo.toml @@ -32,12 +32,14 @@ fuel-indexer-api-server = { workspace = true } fuel-indexer-database = { workspace = true } fuel-indexer-graphql = { workspace = true } fuel-indexer-lib = { workspace = true } +fuel-indexer-plugin = { workspace = true } fuel-indexer-postgres = { workspace = true, features = ["metrics"] } fuel-indexer-schema = { workspace = true, default-features = true } fuel-indexer-types = { workspace = true } fuel-indexer-utils = { workspace = true } fuel-tx = { workspace = true } fuels = { features = ["fuel-core-lib", "std"], version = "0.46" } +fuels-macros = { version = "0.46", default-features = false } futures = "0.3" hex = "0.4" hyper = { version = "0.14", features = ["client", "http2", "http1", "runtime" ] } @@ -53,6 +55,7 @@ thiserror = { workspace = true } tokio = { features = ["macros", "rt-multi-thread"], workspace = true } tracing = { workspace = true } tracing-subscriber = { version = "0.2", features = ["env-filter"] } +trybuild = "1.0" url = "2.3" wasmer = "4" wasmer-middlewares = "4" @@ -61,3 +64,8 @@ wasmer-types = "4" [features] default = ["postgres"] postgres = [] + +# Including trybuild tests with other integration tests causes $CARGO_MANIFEST_DIR to be switched from +# the workspace root level to the test crate level. This in turn causes the `abigen!` macro's path to be +# incorrect - thus the tests won't compile. +trybuild = [] diff --git a/packages/fuel-indexer-tests/indexers/simple-wasm/simple_wasm.wasm b/packages/fuel-indexer-tests/indexers/simple-wasm/simple_wasm.wasm index 89df19c54bf94c0e2a2d776f9be5a9ebb510494d..c6b8b21db937afcf119ba3e441910468f1cbba63 100644 GIT binary patch delta 43645 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 delta 43901 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 ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs - | - | status: fuel::TransactionStatus::default(), - | ^^^^ use of undeclared crate or module `fuel` - | + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs + | + | status: fuel::TransactionStatus::default(), + | ^^^^ use of undeclared crate or module `fuel` + | help: there is a crate or module with a similar name | 46 | status: fuels::TransactionStatus::default(), | ~~~~~ help: consider importing one of these items | +2 + use fuel_indexer::prelude::fuel::TransactionStatus; + | 2 + use fuel_indexer_plugin::prelude::fuel::TransactionStatus; | 2 + use fuel_indexer_types::fuel::TransactionStatus; | 2 + use fuel_indexer_utils::plugin::prelude::fuel::TransactionStatus; | + and 1 other candidate help: if you import `TransactionStatus`, refer to it directly | 46 - status: fuel::TransactionStatus::default(), @@ -73,25 +80,26 @@ help: if you import `TransactionStatus`, refer to it directly | error[E0433]: failed to resolve: use of undeclared crate or module `fuel` - --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs - | - | fuel::Receipt::Call { - | ^^^^ use of undeclared crate or module `fuel` - | + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs + | + | fuel::Receipt::Call { + | ^^^^ use of undeclared crate or module `fuel` + | help: there is a crate or module with a similar name | 49 | fuels::Receipt::Call { | ~~~~~ help: consider importing one of these items | +2 + use fuel_indexer::prelude::fuel::Receipt; + | 2 + use fuel_indexer_plugin::prelude::fuel::Receipt; | 2 + use fuel_indexer_types::fuel::Receipt; | 2 + use fuel_indexer_utils::plugin::prelude::fuel::Receipt; | -2 + use fuels::tx::Receipt; - | + and 2 other candidates help: if you import `Receipt`, refer to it directly | 49 - fuel::Receipt::Call { @@ -99,25 +107,26 @@ help: if you import `Receipt`, refer to it directly | error[E0433]: failed to resolve: use of undeclared crate or module `fuel` - --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs - | - | fuel::Receipt::ReturnData { - | ^^^^ use of undeclared crate or module `fuel` - | + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs + | + | fuel::Receipt::ReturnData { + | ^^^^ use of undeclared crate or module `fuel` + | help: there is a crate or module with a similar name | 60 | fuels::Receipt::ReturnData { | ~~~~~ help: consider importing one of these items | +2 + use fuel_indexer::prelude::fuel::Receipt; + | 2 + use fuel_indexer_plugin::prelude::fuel::Receipt; | 2 + use fuel_indexer_types::fuel::Receipt; | 2 + use fuel_indexer_utils::plugin::prelude::fuel::Receipt; | -2 + use fuels::tx::Receipt; - | + and 2 other candidates help: if you import `Receipt`, refer to it directly | 60 - fuel::Receipt::ReturnData { @@ -131,6 +140,8 @@ error[E0433]: failed to resolve: use of undeclared type `Transaction` | ^^^^^^^^^^^ use of undeclared type `Transaction` | help: consider importing one of these items + | +2 + use fuel_indexer::prelude::fuel::Transaction; | 2 + use fuel_indexer_plugin::prelude::fuel::Transaction; | @@ -138,8 +149,7 @@ help: consider importing one of these items | 2 + use fuel_indexer_utils::plugin::prelude::fuel::Transaction; | -2 + use fuels::prelude::Transaction; - | + and 3 other candidates error[E0425]: cannot find function `serialize` in this scope --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs @@ -148,13 +158,16 @@ error[E0425]: cannot find function `serialize` in this scope | ^^^^^^^^^ not found in this scope | help: consider importing one of these items + | +2 + use chrono::naive::serde::ts_microseconds::serialize; | -2 + use fuel_indexer_lib::utils::serialize; +2 + use chrono::naive::serde::ts_microseconds_option::serialize; | -2 + use fuel_indexer_plugin::serialize; +2 + use chrono::naive::serde::ts_milliseconds::serialize; | -2 + use fuel_indexer_utils::plugin::serialize; +2 + use chrono::naive::serde::ts_milliseconds_option::serialize; | + and 16 other candidates error[E0425]: cannot find function `handle_events` in this scope --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs @@ -163,22 +176,22 @@ error[E0425]: cannot find function `handle_events` in this scope | ^^^^^^^^^^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared crate or module `fuel` - --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs - | - | header: fuel::Header { - | ^^^^ use of undeclared crate or module `fuel` - | + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs + | + | header: fuel::Header { + | ^^^^ use of undeclared crate or module `fuel` + | help: there is a crate or module with a similar name | 33 | header: fuels::Header { | ~~~~~ error[E0433]: failed to resolve: use of undeclared crate or module `fuel` - --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs - | - | transactions: vec![fuel::TransactionData { - | ^^^^ use of undeclared crate or module `fuel` - | + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_abi_arg_includes_invalid_type.rs + | + | transactions: vec![fuel::TransactionData { + | ^^^^ use of undeclared crate or module `fuel` + | help: there is a crate or module with a similar name | 45 | transactions: vec![fuels::TransactionData { diff --git a/packages/fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.stderr b/packages/fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.stderr index e1d25bb04..e625e7a8a 100644 --- a/packages/fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.stderr +++ b/packages/fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.stderr @@ -25,15 +25,16 @@ error[E0433]: failed to resolve: use of undeclared type `Consensus` | ^^^^^^^^^ use of undeclared type `Consensus` | help: consider importing one of these items - | + | 2 + use crate::fuel::Consensus; | +2 + use fuel_indexer::prelude::fuel::Consensus; + | 2 + use fuel_indexer_plugin::prelude::fuel::Consensus; | 2 + use fuel_indexer_types::fuel::Consensus; | -2 + use fuel_indexer_utils::plugin::prelude::fuel::Consensus; - | + and 1 other candidate error[E0433]: failed to resolve: use of undeclared type `Transaction` --> ../fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.rs @@ -42,41 +43,41 @@ error[E0433]: failed to resolve: use of undeclared type `Transaction` | ^^^^^^^^^^^ use of undeclared type `Transaction` | help: consider importing one of these items - | + | 2 + use crate::fuel::Transaction; | +2 + use fuel_indexer::prelude::fuel::Transaction; + | 2 + use fuel_indexer_plugin::prelude::fuel::Transaction; | 2 + use fuel_indexer_types::fuel::Transaction; | -2 + use fuel_indexer_utils::plugin::prelude::fuel::Transaction; - | - and 1 other candidate + and 4 other candidates -error[E0560]: struct `Header` has no field named `output_messages_count` +error[E0560]: struct `fuel_indexer_utils::prelude::fuel::Header` has no field named `output_messages_count` --> ../fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.rs | | output_messages_count: 1, - | ^^^^^^^^^^^^^^^^^^^^^ `Header` does not have this field + | ^^^^^^^^^^^^^^^^^^^^^ `fuel_indexer_utils::prelude::fuel::Header` does not have this field | = note: available fields are: `id`, `da_height`, `transactions_count`, `message_receipt_count`, `transactions_root` ... and 5 others -error[E0560]: struct `Header` has no field named `output_messages_root` +error[E0560]: struct `fuel_indexer_utils::prelude::fuel::Header` has no field named `output_messages_root` --> ../fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.rs | | output_messages_root: [0u8; 32].into(), - | ^^^^^^^^^^^^^^^^^^^^ `Header` does not have this field + | ^^^^^^^^^^^^^^^^^^^^ `fuel_indexer_utils::prelude::fuel::Header` does not have this field | = note: available fields are: `id`, `da_height`, `transactions_count`, `message_receipt_count`, `transactions_root` ... and 5 others error[E0308]: mismatched types - --> ../fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.rs - | - | data: bytes, - | ^^^^^ expected `Option>`, found `Vec` - | - = note: expected enum `std::option::Option>` - found struct `Vec<_>` + --> ../fuel-indexer-tests/trybuild/fail_if_attribute_schema_arg_is_invalid.rs + | + | data: bytes, + | ^^^^^ expected `Option>`, found `Vec` + | + = note: expected enum `std::option::Option>` + found struct `Vec<_>` help: try wrapping the expression in `Some` | 65 | data: Some(bytes),