Skip to content

Merge pull request #427 from Concordium/cis5-naming-changes #1700

Merge pull request #427 from Concordium/cis5-naming-changes

Merge pull request #427 from Concordium/cis5-naming-changes #1700

Workflow file for this run

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"