diff --git a/.github/workflows/reusable-tests.yaml b/.github/workflows/reusable-tests.yaml index b88c26386f..8941170d30 100644 --- a/.github/workflows/reusable-tests.yaml +++ b/.github/workflows/reusable-tests.yaml @@ -443,8 +443,8 @@ jobs: path: tests/anchor-cli-account - cmd: cd tests/bench && anchor test --skip-lint path: tests/bench - - cmd: cd tests/idl-build && ./test.sh - path: tests/idl-build + - cmd: cd tests/idl && ./test.sh + path: tests/idl steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup/ diff --git a/tests/idl-build/Anchor.toml b/tests/idl-build/Anchor.toml deleted file mode 100644 index d31cb4b5ae..0000000000 --- a/tests/idl-build/Anchor.toml +++ /dev/null @@ -1,13 +0,0 @@ -[features] -seeds = true - -[programs.localnet] -idl = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" -idl_2 = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" - -[provider] -cluster = "localnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/tests/idl-build/gen_testdata.sh b/tests/idl-build/gen_testdata.sh deleted file mode 100755 index e58434cc9d..0000000000 --- a/tests/idl-build/gen_testdata.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -cd programs/idl -anchor idl parse --file src/lib.rs -o ../../tests/testdata/idl_parse_exp.json -anchor idl build -o ../../tests/testdata/idl_build_exp.json - -cd ../generics -anchor idl build -o ../../tests/testdata/generics_build_exp.json - -cd ../relations-derivation -anchor idl build -o ../../tests/testdata/relations_build_exp.json \ No newline at end of file diff --git a/tests/idl/Anchor.toml b/tests/idl/Anchor.toml new file mode 100644 index 0000000000..07b8d63bb0 --- /dev/null +++ b/tests/idl/Anchor.toml @@ -0,0 +1,15 @@ +[features] +seeds = true + +[programs.localnet] +external = "Externa1111111111111111111111111111111111111" +generics = "Generics111111111111111111111111111111111111" +idl = "id11111111111111111111111111111111111111111" +relations_derivation = "Re1ationsDerivation111111111111111111111111" + +[provider] +cluster = "localnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/tests/idl-build/Cargo.toml b/tests/idl/Cargo.toml similarity index 100% rename from tests/idl-build/Cargo.toml rename to tests/idl/Cargo.toml diff --git a/tests/idl/generate.sh b/tests/idl/generate.sh new file mode 100755 index 0000000000..d0a930a197 --- /dev/null +++ b/tests/idl/generate.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +idls_dir=$PWD/idls + +cd programs/idl +anchor idl parse --file src/lib.rs -o $idls_dir/idl_parse_exp.json +anchor idl build -o $idls_dir/idl_build_exp.json + +cd ../generics +anchor idl build -o $idls_dir/generics_build_exp.json + +cd ../relations-derivation +anchor idl build -o $idls_dir/relations_build_exp.json \ No newline at end of file diff --git a/tests/idl-build/tests/testdata/generics_build_exp.json b/tests/idl/idls/generics_build_exp.json similarity index 98% rename from tests/idl-build/tests/testdata/generics_build_exp.json rename to tests/idl/idls/generics_build_exp.json index bd74d37edf..a3fda000c3 100644 --- a/tests/idl-build/tests/testdata/generics_build_exp.json +++ b/tests/idl/idls/generics_build_exp.json @@ -1,9 +1,6 @@ { "version": "0.1.0", - "name": "example_program", - "docs": [ - "This is an example program used for testing" - ], + "name": "generics", "instructions": [ { "name": "generic", @@ -77,6 +74,18 @@ } ], "types": [ + { + "name": "Baz", + "type": { + "kind": "struct", + "fields": [ + { + "name": "someField", + "type": "u8" + } + ] + } + }, { "name": "GenericEnum", "generics": [ @@ -404,18 +413,6 @@ } ] } - }, - { - "name": "Baz", - "type": { - "kind": "struct", - "fields": [ - { - "name": "someField", - "type": "u8" - } - ] - } } ] } \ No newline at end of file diff --git a/tests/idl-build/tests/testdata/idl_build_exp.json b/tests/idl/idls/idl_build_exp.json similarity index 98% rename from tests/idl-build/tests/testdata/idl_build_exp.json rename to tests/idl/idls/idl_build_exp.json index faa7b5b5f0..5f7defe06e 100644 --- a/tests/idl-build/tests/testdata/idl_build_exp.json +++ b/tests/idl/idls/idl_build_exp.json @@ -1,8 +1,8 @@ { "version": "0.1.0", - "name": "example_program", + "name": "idl", "docs": [ - "This is an example program used for testing" + "IDL test program documentation." ], "constants": [ { @@ -475,6 +475,18 @@ } ], "types": [ + { + "name": "external::Baz", + "type": { + "kind": "struct", + "fields": [ + { + "name": "someField", + "type": "u8" + } + ] + } + }, { "name": "BarStruct", "docs": [ @@ -658,18 +670,6 @@ } ] } - }, - { - "name": "some_external_program::Baz", - "type": { - "kind": "struct", - "fields": [ - { - "name": "someField", - "type": "u8" - } - ] - } } ], "events": [ @@ -684,7 +684,7 @@ { "name": "externalBaz", "type": { - "defined": "some_external_program::Baz" + "defined": "external::Baz" }, "index": false }, diff --git a/tests/idl-build/tests/testdata/idl_parse_exp.json b/tests/idl/idls/idl_parse_exp.json similarity index 99% rename from tests/idl-build/tests/testdata/idl_parse_exp.json rename to tests/idl/idls/idl_parse_exp.json index 8c346f24f3..a19a4c6acd 100644 --- a/tests/idl-build/tests/testdata/idl_parse_exp.json +++ b/tests/idl/idls/idl_parse_exp.json @@ -1,8 +1,8 @@ { "version": "0.1.0", - "name": "example_program", + "name": "idl", "docs": [ - "This is an example program used for testing" + "IDL test program documentation." ], "constants": [ { @@ -672,7 +672,7 @@ { "name": "externalBaz", "type": { - "defined": "some_external_program::Baz" + "defined": "external::Baz" }, "index": false }, diff --git a/tests/idl-build/tests/testdata/relations_build_exp.json b/tests/idl/idls/relations_build_exp.json similarity index 100% rename from tests/idl-build/tests/testdata/relations_build_exp.json rename to tests/idl/idls/relations_build_exp.json diff --git a/tests/idl-build/package.json b/tests/idl/package.json similarity index 93% rename from tests/idl-build/package.json rename to tests/idl/package.json index 3807440ae8..f473ac9965 100644 --- a/tests/idl-build/package.json +++ b/tests/idl/package.json @@ -1,5 +1,5 @@ { - "name": "idl-build", + "name": "idl", "version": "0.28.0", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", diff --git a/tests/idl-build/programs/some_external_program/Cargo.toml b/tests/idl/programs/external/Cargo.toml similarity index 85% rename from tests/idl-build/programs/some_external_program/Cargo.toml rename to tests/idl/programs/external/Cargo.toml index bde16f4c09..e551d008d3 100644 --- a/tests/idl-build/programs/some_external_program/Cargo.toml +++ b/tests/idl/programs/external/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "some-external-program" +name = "external" version = "0.1.0" description = "Created with Anchor" edition = "2021" [lib] crate-type = ["cdylib", "lib"] -name = "some_external_program" +name = "external" [features] no-entrypoint = [] @@ -19,4 +19,3 @@ default = [] [dependencies] anchor-lang = { path = "../../../../lang" } anchor-spl = { path = "../../../../spl" } - diff --git a/tests/idl-build/programs/generics/Xargo.toml b/tests/idl/programs/external/Xargo.toml similarity index 100% rename from tests/idl-build/programs/generics/Xargo.toml rename to tests/idl/programs/external/Xargo.toml diff --git a/tests/idl-build/programs/some_external_program/src/lib.rs b/tests/idl/programs/external/src/lib.rs similarity index 78% rename from tests/idl-build/programs/some_external_program/src/lib.rs rename to tests/idl/programs/external/src/lib.rs index 0e620f8b5f..93cefe9414 100644 --- a/tests/idl-build/programs/some_external_program/src/lib.rs +++ b/tests/idl/programs/external/src/lib.rs @@ -1,9 +1,9 @@ use anchor_lang::prelude::*; -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); +declare_id!("Externa1111111111111111111111111111111111111"); #[program] -pub mod idl_2 { +pub mod external { use super::*; pub fn initialize(_ctx: Context, _baz: Baz) -> Result<()> { diff --git a/tests/idl-build/programs/generics/Cargo.toml b/tests/idl/programs/generics/Cargo.toml similarity index 66% rename from tests/idl-build/programs/generics/Cargo.toml rename to tests/idl/programs/generics/Cargo.toml index 224d57f462..6e6d13c25f 100644 --- a/tests/idl-build/programs/generics/Cargo.toml +++ b/tests/idl/programs/generics/Cargo.toml @@ -13,13 +13,10 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] cpi = ["no-entrypoint"] -idl-build = [ - "anchor-lang/idl-build", - "some-external-program/idl-build", -] +idl-build = ["anchor-lang/idl-build", "external/idl-build"] default = [] [dependencies] anchor-lang = { path = "../../../../lang" } anchor-spl = { path = "../../../../spl" } -some-external-program = { path = "../some_external_program", features = ["no-entrypoint"] } +external = { path = "../external", features = ["no-entrypoint"] } diff --git a/tests/idl-build/programs/idl/Xargo.toml b/tests/idl/programs/generics/Xargo.toml similarity index 100% rename from tests/idl-build/programs/idl/Xargo.toml rename to tests/idl/programs/generics/Xargo.toml diff --git a/tests/idl-build/programs/generics/src/lib.rs b/tests/idl/programs/generics/src/lib.rs similarity index 80% rename from tests/idl-build/programs/generics/src/lib.rs rename to tests/idl/programs/generics/src/lib.rs index 23ca6af32f..40ca903bba 100644 --- a/tests/idl-build/programs/generics/src/lib.rs +++ b/tests/idl/programs/generics/src/lib.rs @@ -1,17 +1,15 @@ use anchor_lang::prelude::*; -use some_external_program; -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); +declare_id!("Generics111111111111111111111111111111111111"); -/// This is an example program used for testing #[program] -pub mod example_program { +pub mod generics { use super::*; pub fn generic( ctx: Context, - generic_field: GenericType:: - ) -> Result<()>{ + generic_field: GenericType, + ) -> Result<()> { ctx.accounts.generic_acc.data = generic_field; Ok(()) } @@ -28,7 +26,7 @@ pub struct GenericCtx<'info> { #[account] pub struct GenericAccount { - pub data: GenericType + pub data: GenericType, } #[derive(AnchorSerialize, AnchorDeserialize, Clone)] @@ -40,7 +38,7 @@ where pub gen1: T, pub gen2: U, pub gen3: GenericNested, - pub gen4: GenericNested, + pub gen4: GenericNested, pub gen5: GenericNested, pub gen6: GenericNested, pub gen7: GenericNested>, @@ -71,10 +69,7 @@ where U: AnchorSerialize + AnchorDeserialize, { Unnamed(T, U), - Named { - gen1: T, - gen2: U, - }, + Named { gen1: T, gen2: U }, Struct(GenericNested), Arr([T; N]), } diff --git a/tests/idl-build/programs/idl/Cargo.toml b/tests/idl/programs/idl/Cargo.toml similarity index 70% rename from tests/idl-build/programs/idl/Cargo.toml rename to tests/idl/programs/idl/Cargo.toml index 4672e815b9..58a7400cd9 100644 --- a/tests/idl-build/programs/idl/Cargo.toml +++ b/tests/idl/programs/idl/Cargo.toml @@ -13,14 +13,11 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] cpi = ["no-entrypoint"] -idl-build = [ - "anchor-lang/idl-build", - "some-external-program/idl-build", -] +idl-build = ["anchor-lang/idl-build", "external/idl-build"] default = [] [dependencies] anchor-lang = { path = "../../../../lang" } anchor-spl = { path = "../../../../spl" } bytemuck = {version = "1.4.0", features = ["derive", "min_const_generics"]} -some-external-program = { path = "../some_external_program", features = ["no-entrypoint"] } +external = { path = "../external", features = ["no-entrypoint"] } diff --git a/tests/idl-build/programs/some_external_program/Xargo.toml b/tests/idl/programs/idl/Xargo.toml similarity index 100% rename from tests/idl-build/programs/some_external_program/Xargo.toml rename to tests/idl/programs/idl/Xargo.toml diff --git a/tests/idl-build/programs/idl/src/lib.rs b/tests/idl/programs/idl/src/lib.rs similarity index 95% rename from tests/idl-build/programs/idl/src/lib.rs rename to tests/idl/programs/idl/src/lib.rs index 7341eb044f..7e7af765da 100644 --- a/tests/idl-build/programs/idl/src/lib.rs +++ b/tests/idl/programs/idl/src/lib.rs @@ -1,17 +1,16 @@ use anchor_lang::prelude::*; -use some_external_program; use std::str::FromStr; -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); +declare_id!("id11111111111111111111111111111111111111111"); #[constant] pub const FOO_CONST: u128 = 1_000_000; #[constant] pub const BAR_CONST: u8 = 6; -/// This is an example program used for testing +/// IDL test program documentation. #[program] -pub mod example_program { +pub mod idl { use super::*; pub fn initialize(ctx: Context) -> Result<()> { @@ -88,8 +87,11 @@ pub mod example_program { vec_of_option: Vec>, box_field: Box, ) -> Result { - ctx.accounts.state.set_inner(State2 { vec_of_option, box_field }); - Ok(SomeRetStruct { some_field: 3}) + ctx.accounts.state.set_inner(State2 { + vec_of_option, + box_field, + }); + Ok(SomeRetStruct { some_field: 3 }) } pub fn cause_error(_ctx: Context) -> Result<()> { @@ -306,7 +308,7 @@ mod some_other_module { #[event] pub struct SomeEvent { bool_field: bool, - external_baz: some_external_program::Baz, + external_baz: external::Baz, other_module_baz: some_other_module::Baz, } @@ -323,4 +325,4 @@ pub struct SomeZcAccount { #[derive(AnchorSerialize, AnchorDeserialize, Clone)] pub struct SomeRetStruct { pub some_field: u8, -} \ No newline at end of file +} diff --git a/tests/idl-build/programs/relations-derivation/Cargo.toml b/tests/idl/programs/relations-derivation/Cargo.toml similarity index 88% rename from tests/idl-build/programs/relations-derivation/Cargo.toml rename to tests/idl/programs/relations-derivation/Cargo.toml index 5a8575757f..b2fe97ecd2 100644 --- a/tests/idl-build/programs/relations-derivation/Cargo.toml +++ b/tests/idl/programs/relations-derivation/Cargo.toml @@ -13,9 +13,7 @@ name = "relations_derivation" no-entrypoint = [] no-idl = [] cpi = ["no-entrypoint"] -idl-build = [ - "anchor-lang/idl-build", -] +idl-build = ["anchor-lang/idl-build"] default = [] [dependencies] diff --git a/tests/idl-build/programs/relations-derivation/Xargo.toml b/tests/idl/programs/relations-derivation/Xargo.toml similarity index 100% rename from tests/idl-build/programs/relations-derivation/Xargo.toml rename to tests/idl/programs/relations-derivation/Xargo.toml diff --git a/tests/idl-build/programs/relations-derivation/src/lib.rs b/tests/idl/programs/relations-derivation/src/lib.rs similarity index 84% rename from tests/idl-build/programs/relations-derivation/src/lib.rs rename to tests/idl/programs/relations-derivation/src/lib.rs index d463044a38..11e03e8859 100644 --- a/tests/idl-build/programs/relations-derivation/src/lib.rs +++ b/tests/idl/programs/relations-derivation/src/lib.rs @@ -1,9 +1,6 @@ -//! The typescript example serves to show how one would setup an Anchor -//! workspace with TypeScript tests and migrations. - use anchor_lang::prelude::*; -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); +declare_id!("Re1ationsDerivation111111111111111111111111"); #[program] pub mod relations_derivation { @@ -14,6 +11,7 @@ pub mod relations_derivation { ctx.accounts.account.bump = ctx.bumps["account"]; Ok(()) } + pub fn test_relation(_ctx: Context) -> Result<()> { Ok(()) } @@ -32,7 +30,7 @@ pub struct InitBase<'info> { bump, )] account: Account<'info, MyAccount>, - system_program: Program<'info, System> + system_program: Program<'info, System>, } #[derive(Accounts)] @@ -60,9 +58,8 @@ pub struct TestRelation<'info> { nested: Nested<'info>, } - #[account] pub struct MyAccount { pub my_account: Pubkey, - pub bump: u8 + pub bump: u8, } diff --git a/tests/idl-build/test.sh b/tests/idl/test.sh similarity index 64% rename from tests/idl-build/test.sh rename to tests/idl/test.sh index f938673b35..ae61b8e6f7 100755 --- a/tests/idl-build/test.sh +++ b/tests/idl/test.sh @@ -2,24 +2,25 @@ set -x set -e -TMPDIR=$(mktemp -d) +idls_dir=idls +tmp_dir=$(mktemp -d) cd programs/idl -anchor idl parse --file src/lib.rs -o $TMPDIR/idl_parse_act.json -anchor idl build -o $TMPDIR/idl_build_act.json +anchor idl parse --file src/lib.rs -o $tmp_dir/idl_parse_act.json +anchor idl build -o $tmp_dir/idl_build_act.json cd ../generics -anchor idl build -o $TMPDIR/generics_build_act.json +anchor idl build -o $tmp_dir/generics_build_act.json cd ../relations-derivation -anchor idl build -o $TMPDIR/relations_build_act.json +anchor idl build -o $tmp_dir/relations_build_act.json cd ../.. echo "----------------------------------------------------" echo "idl parse before > after" echo "----------------------------------------------------" echo "" -diff -y --color tests/testdata/idl_parse_exp.json $TMPDIR/idl_parse_act.json +diff -y --color $idls_dir/idl_parse_exp.json $tmp_dir/idl_parse_act.json PARSE_RETCODE=$? echo "" @@ -28,7 +29,7 @@ echo "----------------------------------------------------" echo "idl build before > after" echo "----------------------------------------------------" echo "" -diff -y --color tests/testdata/idl_build_exp.json $TMPDIR/idl_build_act.json +diff -y --color $idls_dir/idl_build_exp.json $tmp_dir/idl_build_act.json GEN_RETCODE=$? echo "" @@ -37,7 +38,7 @@ echo "----------------------------------------------------" echo "idl generics build before > after" echo "----------------------------------------------------" echo "" -diff -y --color tests/testdata/generics_build_exp.json $TMPDIR/generics_build_act.json +diff -y --color $idls_dir/generics_build_exp.json $tmp_dir/generics_build_act.json GEN_GENERICS_RETCODE=$? echo "" @@ -46,7 +47,7 @@ echo "----------------------------------------------------" echo "idl relations build before > after" echo "----------------------------------------------------" echo "" -diff -y --color tests/testdata/relations_build_exp.json $TMPDIR/relations_build_act.json +diff -y --color $idls_dir/relations_build_exp.json $tmp_dir/relations_build_act.json GEN_RELATIONS_RETCODE=$? # returns 0 when ok, or a positive integer when there are differences diff --git a/tests/idl-build/tsconfig.json b/tests/idl/tsconfig.json similarity index 78% rename from tests/idl-build/tsconfig.json rename to tests/idl/tsconfig.json index cd5d2e3d06..774260253f 100644 --- a/tests/idl-build/tsconfig.json +++ b/tests/idl/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], "lib": ["es2015"], "module": "commonjs", "target": "es6", diff --git a/tests/package.json b/tests/package.json index d14af0560d..ea3488b888 100644 --- a/tests/package.json +++ b/tests/package.json @@ -18,7 +18,7 @@ "escrow", "events", "floats", - "idl-build", + "idl", "ido-pool", "interface", "lockup",