Fix SchemaType
implementation of `OnReceivingCis2DataParams<T, A, D…
#1695
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the main branch | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
name: Clippy & fmt | |
env: | |
RUST_FMT: nightly-2023-04-01 | |
RUST_VERSION: "1.73" | |
RUST_VERSION_TESTING_LIBRARY: "1.73" | |
CARGO_CONCORDIUM_VERSION: "3.3.0" | |
jobs: | |
rustfmt: | |
name: Format | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- concordium-std-derive/Cargo.toml | |
- concordium-std/Cargo.toml | |
- concordium-cis2/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
- examples/auction/Cargo.toml | |
- examples/bump-alloc-tests/Cargo.toml | |
- examples/cis2-dynamic-nft/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/cis3-nft-sponsored-txs/Cargo.toml | |
- examples/counter-notify/Cargo.toml | |
- examples/cis5-smart-contract-wallet/Cargo.toml | |
- examples/credential-registry/Cargo.toml | |
- examples/eSealing/Cargo.toml | |
- examples/factory/Cargo.toml | |
- examples/fib/Cargo.toml | |
- examples/icecream/Cargo.toml | |
- examples/memo/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/offchain-transfers/Cargo.toml | |
- examples/piggy-bank/part1/Cargo.toml | |
- examples/piggy-bank/part2/Cargo.toml | |
- examples/proxy/Cargo.toml | |
- examples/recorder/Cargo.toml | |
- examples/signature-verifier/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version1/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version2/Cargo.toml | |
- examples/sponsored-tx-enabled-auction/Cargo.toml | |
- examples/transfer-policy-check/Cargo.toml | |
- examples/two-step-transfer/Cargo.toml | |
- examples/voting/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with rustfmt available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_FMT }} | |
override: true | |
components: rustfmt | |
- name: Run cargo fmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --manifest-path=${{ matrix.crates }} -- --check | |
rustdoc: | |
name: Lint docs | |
# Don't run on draft pull requests | |
if: ${{ !github.event.pull_request.draft }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- concordium-std | |
- concordium-cis2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
override: true | |
- name: Run cargo doc | |
working-directory: ${{ matrix.crates }} | |
run: | | |
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --color=always | |
# Run unit-tests for concordium-std compiled to wasm using cargo concordium test. | |
std-internal-wasm-test: | |
name: concordium-std internal wasm tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
- name: Install Wasm target | |
run: rustup target install wasm32-unknown-unknown | |
- name: Run internal wasm unit test | |
working-directory: concordium-std | |
run: | | |
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | |
chmod +x /tmp/cargo-concordium | |
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | |
cargo concordium test --only-unit-tests -- --features internal-wasm-test | |
# All templates are generated with the `cargo-generate` command and it is checked that the 'cargo test' command | |
# can be executed without errors on the generated smart contracts. | |
cargo-generate-templates: | |
name: Smart contract template generation | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/default | |
- templates/cis2-nft | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION_TESTING_LIBRARY }} | |
- name: Install Wasm target | |
run: rustup target install wasm32-unknown-unknown | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
# Run all tests, including doc tests. | |
- name: Run cargo test | |
run: | | |
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | |
chmod +x /tmp/cargo-concordium | |
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
cargo concordium test --out "./concordium-out/module.wasm.v1" | |
# The credential registry template is used to generate code for all combinations of parameters | |
# with the `cargo-generate` and it is checked that the 'cargo test' command can be executed | |
# without errors on the generated smart contracts. | |
cargo-generate-credential-registry-template: | |
name: Credential registry template tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
restorable: ["true", "false"] | |
revocable_by_others: ["true", "false"] | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: templates/credential-registry | |
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION_TESTING_LIBRARY }} | |
- name: Install Wasm target | |
run: rustup target install wasm32-unknown-unknown | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
# Run all tests, including doc tests. | |
- name: Run cargo test | |
run: | | |
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | |
chmod +x /tmp/cargo-concordium | |
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
cargo concordium test --out "./concordium-out/module.wasm.v1" | |
# All templates are generated with the `cargo-generate` command | |
# and it is checked that the schemas can be built as part of the 'clippy' command. | |
clippy-template: | |
name: Clippy on smart contract templates | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- templates/default | |
- templates/cis2-nft | |
- templates/credential-registry | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/ -d template_type=full" | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
- name: Run clippy with build-schema | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
rustup target add wasm32-unknown-unknown | |
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | |
# The credential registry template is used to generate code for all combinations of parameters | |
# with the `cargo-generate` command and it is checked that the schemas can be built as part | |
# of the 'clippy' command. | |
clippy-credential-registry-template: | |
name: Clippy on credential registry template | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
restorable: ["true", "false"] | |
revocable_by_others: ["true", "false"] | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: templates/credential-registry | |
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
- name: Run clippy with build-schema | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
rustup target add wasm32-unknown-unknown | |
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | |
# The cis2-nft template is generated with the `cargo-generate` command | |
# and it is checked that the code is equivalent to the cis2-nft smart contract in the example folder. | |
cargo-generate-cis2-nft-template-comparison: | |
name: Cis2-nft smart contract template comparison | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/cis2-nft | |
env: | |
PROJECT_NAME: cis2-nft | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=cis2-nft-project -d tokenMetadataBaseURL=https://some.example/token/" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# Run diff to check if there are any differences between the generated smart contracts | |
# and the example smart contracts. The templates have hardcoded versions of `concordium-std` | |
# and `concordium-cis2` which need to be replaced with the paths used in the smart contract example folder. | |
# This CI pipeline uses `root` as the author which needs to be replaced with the author | |
# `Concordium <[email protected]>` of the smart contract examples. | |
- name: Run diff | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/{version = \"10.0\", default-features = false}/{path = \"..\/..\/concordium-std\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/{version = \"6.1\", default-features = false}/{path = \"..\/..\/concordium-cis2\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/concordium-smart-contract-testing = \"4.2\"/concordium-smart-contract-testing = {path = \"..\/..\/contract-testing\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/concordium-std-derive = \"6.0\"/concordium-std-derive = {path = \"..\/..\/concordium-std-derive\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/cis2-nft/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/cis2-nft/src/lib.rs | |
diff ${{ runner.temp }}/$PROJECT_NAME/tests/tests.rs examples/cis2-nft/tests/tests.rs | |
# The credential-registry template is generated with the `cargo-generate` command | |
# and it is checked that the code is equivalent to the credential-registry smart contract in the example folder. | |
cargo-generate-credential-registry-template-comparison: | |
name: Credential registry smart contract template comparison | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/credential-registry | |
env: | |
PROJECT_NAME: credential-registry | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# at least version 0.17.0 is required for the rhai pre-script to work correctly; | |
# the closest available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=Example-credential-registry -d template_type=full" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# Run diff to check if there are any differences between the generated smart contract | |
# and the example smart contract. The template have hardcoded versions of `concordium-std` | |
# which needs to be replaced with the path used in the smart contract example folder. | |
# This CI pipeline uses `root` as the author which needs to be replaced with the author | |
# `Concordium <[email protected]>` of the smart contract examples. | |
- name: Run diff | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/version = \"10.0\", default-features = false/path = \"..\/..\/concordium-std\", version = \"10.0\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/version = \"6.1\", default-features = false/path = \"..\/..\/concordium-cis2\", version = \"6.1\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/concordium-smart-contract-testing = \"4.2\"/concordium-smart-contract-testing = {path = \"..\/..\/contract-testing\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/concordium-std-derive = \"6.0\"/concordium-std-derive = {path = \"..\/..\/concordium-std-derive\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/credential-registry/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/credential-registry/src/lib.rs | |
diff ${{ runner.temp }}/$PROJECT_NAME/tests/tests.rs examples/credential-registry/tests/tests.rs | |
diff ${{ runner.temp }}/$PROJECT_NAME/README.md examples/credential-registry/README.md | |
clippy-cis2: | |
name: Clippy | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-cis2/Cargo.toml | |
features: | |
- | |
- u256_amount | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- | |
- build-schema | |
- concordium-quickcheck | |
- p7 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy-crypto-primitives: | |
name: Clippy concordium-std with crypto-primitives | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- crypto-primitives | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy-wasm32-only: | |
name: Clippy Wasm32 | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- wasm-test | |
- wasm-test,build-schema | |
- wasm-test,concordium-quickcheck | |
- wasm-test,p7 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy, but only for wasm32 target | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
check-std-no-std: | |
name: Build no-std on nightly, | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with check available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
target: wasm32-unknown-unknown | |
override: true | |
- name: Run no-std build concordium-std | |
working-directory: concordium-std | |
run: cargo build --target wasm32-unknown-unknown --no-default-features --features bump_alloc | |
- name: Run no-std build concordium-cis2 | |
working-directory: concordium-cis2 | |
run: cargo build --target wasm32-unknown-unknown --no-default-features --features concordium-std/bump_alloc | |
check-no-std-examples: | |
name: Build on nightly, | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- examples/two-step-transfer/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-dynamic-nft/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
- examples/bump-alloc-tests/Cargo.toml | |
- examples/factory/Cargo.toml | |
features: | |
- | |
- concordium-std/build-schema | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with check available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo check with no-std | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --no-default-features --features=${{ matrix.features }} --features bump_alloc | |
check-crypto-examples: | |
name: Check crypto examples | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy-schema] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- wasm32-unknown-unknown | |
features: | |
- crypto-primitives | |
crates: | |
- examples/credential-registry/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo build with crypto-primitives feature | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} --lib | |
clippy-schema: | |
name: Clippy on examples | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- examples/voting/Cargo.toml | |
- examples/eSealing/Cargo.toml | |
- examples/auction/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-dynamic-nft/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis3-nft-sponsored-txs/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/cis5-smart-contract-wallet/Cargo.toml | |
- examples/credential-registry/Cargo.toml | |
- examples/factory/Cargo.toml | |
- examples/fib/Cargo.toml | |
- examples/icecream/Cargo.toml | |
- examples/memo/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/piggy-bank/part1/Cargo.toml | |
- examples/piggy-bank/part2/Cargo.toml | |
- examples/proxy/Cargo.toml | |
- examples/recorder/Cargo.toml | |
- examples/signature-verifier/Cargo.toml | |
- examples/transfer-policy-check/Cargo.toml | |
- examples/two-step-transfer/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version1/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version2/Cargo.toml | |
- examples/offchain-transfers/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
- examples/sponsored-tx-enabled-auction/Cargo.toml | |
- examples/bump-alloc-tests/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy with schema and tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --features concordium-std/build-schema --features concordium-std/wasm-test -- -D warnings | |
test: | |
name: Test the library | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
- concordium-cis2/Cargo.toml | |
features: | |
- | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
# Run all tests, including doc tests. | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} | |
test-cis2-with-256: | |
name: Test the library | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-cis2/Cargo.toml | |
features: | |
- u256_amount | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
# Run all tests, including doc tests. | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} | |
test-examples: | |
name: Test examples | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy-schema] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
crates: | |
- examples/voting | |
- examples/eSealing | |
- examples/auction | |
- examples/cis2-multi | |
- examples/cis2-dynamic-nft | |
- examples/cis2-multi-royalties | |
- examples/cis2-nft | |
- examples/cis3-nft-sponsored-txs | |
- examples/cis2-wccd | |
- examples/cis5-smart-contract-wallet | |
- examples/credential-registry | |
- examples/factory | |
- examples/fib | |
- examples/icecream | |
- examples/memo | |
- examples/nametoken | |
- examples/piggy-bank/part1 | |
- examples/piggy-bank/part2 | |
- examples/proxy | |
- examples/recorder | |
- examples/signature-verifier | |
- examples/transfer-policy-check | |
- examples/two-step-transfer | |
- examples/smart-contract-upgrade/contract-version1 | |
- examples/smart-contract-upgrade/contract-version2 | |
- examples/offchain-transfers | |
- examples/account-signature-checks | |
- examples/sponsored-tx-enabled-auction | |
- examples/bump-alloc-tests | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION_TESTING_LIBRARY }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Install Wasm target | |
run: rustup target install wasm32-unknown-unknown | |
- name: Download and install Cargo Concordium | |
run: | | |
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | |
chmod +x /tmp/cargo-concordium | |
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | |
# The 'smart-contract-upgrade' example has a v1 and v2 contract and the tests in v1 needs the wasm module from v2 for upgrading. | |
- name: Build contract-upgrade version 2 module if needed | |
if: ${{ matrix.crates == 'examples/smart-contract-upgrade/contract-version1' }} | |
run: cargo concordium build --out "examples/smart-contract-upgrade/contract-version2/concordium-out/module.wasm.v1" -- --manifest-path "examples/smart-contract-upgrade/contract-version2/Cargo.toml" | |
# The 'sponsored-tx-enabled-auction' and 'cis5-smart-contract-wallet' examples need the wasm module `cis2-multi` for its tests. | |
- name: Build cis2-multi module if needed | |
if: ${{ matrix.crates == 'examples/sponsored-tx-enabled-auction' || matrix.crates == 'examples/cis5-smart-contract-wallet'}} | |
run: cargo concordium build --out "examples/cis2-multi/concordium-out/module.wasm.v1" -- --manifest-path "examples/cis2-multi/Cargo.toml" | |
- name: Run cargo concordium test | |
run: cargo concordium test --out "${{ matrix.crates }}/concordium-out/module.wasm.v1" -- --manifest-path "${{ matrix.crates }}/Cargo.toml" |